setwd("C:/Users/irina/Documents/DND/EOHI/eohi2") options(scipen = 999) df <- read.csv("eohi2.csv") library(psych) library(dplyr) library(knitr) # Your named variable sets (replace df with your actual dataframe name) present_pref_vars <- c("present_pref_read", "present_pref_music", "present_pref_tv", "present_pref_nap", "present_pref_travel") past_5_pref_vars <- c("past_5_pref_read", "past_5_pref_music", "past_5_pref_TV", "past_5_pref_nap", "past_5_pref_travel") past_10_pref_vars <- c("past_10_pref_read", "past_10_pref_music", "past_10_pref_TV", "past_10_pref_nap", "past_10_pref_travel") fut_5_pref_vars <- c("fut_5_pref_read", "fut_5_pref_music", "fut_5_pref_TV", "fut_5_pref_nap", "fut_5_pref_travel") fut_10_pref_vars <- c("fut_10_pref_read", "fut_10_pref_music", "fut_10_pref_TV", "fut_10_pref_nap", "fut_10_pref_travel") present_pers_vars <- c("present_pers_extravert", "present_pers_critical", "present_pers_dependable", "present_pers_anxious", "present_pers_complex") past_5_pers_vars <- c("past_5_pers_extravert", "past_5_pers_critical", "past_5_pers_dependable", "past_5_pers_anxious", "past_5_pers_complex") past_10_pers_vars <- c("past_10_pers_extravert", "past_10_pers_critical", "past_10_pers_dependable", "past_10_pers_anxious", "past_10_pers_complex") fut_5_pers_vars <- c("fut_5_pers_extravert", "fut_5_pers_critical", "fut_5_pers_dependable", "fut_5_pers_anxious", "fut_5_pers_complex") fut_10_pers_vars <- c("fut_10_pers_extravert", "fut_10_pers_critical", "fut_10_pers_dependable", "fut_10_pers_anxious", "fut_10_pers_complex") present_val_vars <- c("present_val_obey", "present_val_trad", "present_val_opinion", "present_val_performance", "present_val_justice") past_5_val_vars <- c("past_5_val_obey", "past_5_val_trad", "past_5_val_opinion", "past_5_val_performance", "past_5_val_justice") past_10_val_vars <- c("past_10_val_obey", "past_10_val_trad", "past_10_val_opinion", "past_10_val_performance", "past_10_val_justice") fut_5_val_vars <- c("fut_5_val_obey", "fut_5_val_trad", "fut_5_val_opinion", "fut_5_val_performance", "fut_5_val_justice") fut_10_val_vars <- c("fut_10_val_obey", "fut_10_val_trad", "fut_10_val_opinion", "fut_10_val_performance", "fut_10_val_justice") all_scales <- list( "Present_Preferences" = present_pref_vars, "Past5_Preferences" = past_5_pref_vars, "Past10_Preferences" = past_10_pref_vars, "Fut5_Preferences" = fut_5_pref_vars, "Fut10_Preferences" = fut_10_pref_vars, "Present_Personality" = present_pers_vars, "Past5_Personality" = past_5_pers_vars, "Past10_Personality" = past_10_pers_vars, "Fut5_Personality" = fut_5_pers_vars, "Fut10_Personality" = fut_10_pers_vars, "Present_Values" = present_val_vars, "Past5_Values" = past_5_val_vars, "Past10_Values" = past_10_val_vars, "Fut5_Values" = fut_5_val_vars, "Fut10_Values" = fut_10_val_vars ) # Reliability analysis loop alpha_results <- list() summary_tbl <- data.frame( Scale = character(), RawAlpha = numeric(), StdAlpha = numeric(), AvgItemRestCor = numeric() ) for(scale_name in names(all_scales)) { vars <- all_scales[[scale_name]] scale_data <- df %>% select(all_of(vars)) # Only run if there is more than one column present if(ncol(scale_data) > 1) { alpha_out <- psych::alpha(scale_data, check.keys = TRUE) alpha_results[[scale_name]] <- alpha_out # Print full output for diagnostics cat("\n----------", scale_name, "----------\n") print(alpha_out$total) print(alpha_out$item.stats) print(alpha_out$alpha.drop) # Collect summary stats for table raw_alpha <- round(alpha_out$total$raw_alpha, 3) std_alpha <- round(alpha_out$total$std.alpha, 3) avg_ir <- round(mean(alpha_out$item.stats$r.drop, na.rm=TRUE), 3) summary_tbl <- rbind(summary_tbl, data.frame( Scale = scale_name, RawAlpha = raw_alpha, StdAlpha = std_alpha, AvgItemRestCor = avg_ir )) } else { cat("\n", scale_name, ": Not enough items for alpha analysis.\n") } } # Create detailed alpha if dropped table alpha_dropped_tbl <- data.frame( Scale = character(), Item = character(), AlphaIfDropped = numeric(), stringsAsFactors = FALSE ) for(scale_name in names(all_scales)) { vars <- all_scales[[scale_name]] scale_data <- df %>% select(all_of(vars)) if(ncol(scale_data) > 1) { alpha_out <- alpha_results[[scale_name]] # Extract alpha if dropped for each item for(i in 1:length(vars)) { item_name <- vars[i] alpha_dropped <- alpha_out$alpha.drop$raw_alpha[i] alpha_dropped_tbl <- rbind(alpha_dropped_tbl, data.frame( Scale = scale_name, Item = item_name, AlphaIfDropped = round(alpha_dropped, 4), stringsAsFactors = FALSE )) } } } # Summary table for reporting cat("\n=== SUMMARY TABLE ===\n") knitr::kable(summary_tbl) cat("\n=== ALPHA IF DROPPED TABLE ===\n") knitr::kable(alpha_dropped_tbl) # Export tables to CSV write.csv(summary_tbl, "reliability_summary_table.csv", row.names = FALSE) write.csv(alpha_dropped_tbl, "alpha_if_dropped_table.csv", row.names = FALSE) cat("\nTables exported to CSV files:\n") cat("- reliability_summary_table.csv\n") cat("- alpha_if_dropped_table.csv\n")