setwd("C:/Users/irina/Documents/DND/EOHI/eohi2") options(scipen = 999) df <- read.csv("eohi2.csv") library(psych) library(dplyr) library(knitr) library(irr) # 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_data <- data.frame() item_data <- data.frame() icc_data <- data.frame() 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) # Calculate ICC(2,1) tryCatch({ icc_result <- icc(scale_data, model = "twoway", type = "consistency", unit = "single") cat("ICC(2,1) for", scale_name, ":", round(icc_result$value, 4), "\n") # Collect ICC data for HTML icc_row <- data.frame( Scale = scale_name, ICC_2_1 = icc_result$value, ICC_CI_Lower = icc_result$lbound, ICC_CI_Upper = icc_result$ubound, F_Value = icc_result$Fvalue, p_Value = icc_result$p.value, stringsAsFactors = FALSE ) icc_data <- rbind(icc_data, icc_row) }, error = function(e) { cat("ICC calculation failed for", scale_name, ":", e$message, "\n") }) # Collect summary data for HTML total_row <- alpha_out$total total_row$Scale <- scale_name summary_data <- rbind(summary_data, total_row) # Debug: print what we're collecting cat("Collecting data for", scale_name, "- rows in summary_data:", nrow(summary_data), "\n") # Collect item data for HTML item_row <- alpha_out$item.stats alpha_drop_row <- alpha_out$alpha.drop item_row$Scale <- scale_name item_row$AlphaIfDropped <- alpha_drop_row$raw_alpha item_data <- rbind(item_data, item_row) } } # Debug: check summary_data cat("Final summary_data has", nrow(summary_data), "rows\n") if(nrow(summary_data) > 0) { cat("Column names:", paste(colnames(summary_data), collapse = ", "), "\n") } # Create simple HTML report html_content <- paste0("
Generated on: ", Sys.time(), "
| Scale | Raw Alpha | Std Alpha | G6(SMC) | Average r | S/N | ASE | Mean | SD | Median r |
|---|---|---|---|---|---|---|---|---|---|
| %s | %.4f | %.4f | %.4f | %.4f | %.4f | %.4f | %.4f | %.4f | %.4f |
| Scale | Item | n | Raw r | Std r | r.cor | r.drop | Mean | SD | Alpha if Dropped |
|---|---|---|---|---|---|---|---|---|---|
| %s | %s | %.0f | %.4f | %.4f | %.4f | %.4f | %.4f | %.4f | %.4f |