130 lines
6.3 KiB
R
130 lines
6.3 KiB
R
setwd("C:/Users/irina/Documents/DND/EOHI/eohi2")
|
||
|
||
options(scipen = 999)
|
||
|
||
df <- read.csv("eohi2.csv")
|
||
|
||
library(psych)
|
||
library(dplyr)
|
||
library(knitr)
|
||
|
||
# CORRECTED variable sets with exact names from your data
|
||
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
|
||
)
|
||
|
||
# Verify all variables exist in dataset
|
||
cat("Checking variable availability:\n")
|
||
for(scale_name in names(all_scales)) {
|
||
vars <- all_scales[[scale_name]]
|
||
missing_vars <- vars[!vars %in% names(df)]
|
||
if(length(missing_vars) > 0) {
|
||
cat("MISSING in", scale_name, ":", paste(missing_vars, collapse=", "), "\n")
|
||
} else {
|
||
cat("✓ All variables found for", scale_name, "\n")
|
||
}
|
||
}
|
||
|
||
# Reliability analysis
|
||
reliability_results <- data.frame(Scale=character(), Alpha=double(), Omega=double(), stringsAsFactors=FALSE)
|
||
|
||
for(scale_name in names(all_scales)) {
|
||
vars <- all_scales[[scale_name]]
|
||
|
||
# Check if all variables exist
|
||
missing_vars <- vars[!vars %in% names(df)]
|
||
if(length(missing_vars) > 0) {
|
||
cat("Skipping", scale_name, "- missing variables:", paste(missing_vars, collapse=", "), "\n")
|
||
next
|
||
}
|
||
|
||
dat <- df[, vars]
|
||
|
||
# Calculate Alpha
|
||
alpha_val <- tryCatch({
|
||
alpha_result <- psych::alpha(dat, check.keys = TRUE)
|
||
alpha_result$total$raw_alpha
|
||
}, error = function(e) {
|
||
cat("Alpha calculation failed for", scale_name, ":", e$message, "\n")
|
||
NA
|
||
})
|
||
|
||
# Calculate Omega with proper settings
|
||
omega_val <- tryCatch({
|
||
omega_result <- psych::omega(dat, nfactors = 1, check.keys = TRUE)
|
||
omega_result$omega.tot
|
||
}, error = function(e) {
|
||
cat("Omega calculation failed for", scale_name, ":", e$message, "\n")
|
||
NA
|
||
})
|
||
|
||
reliability_results <- rbind(reliability_results,
|
||
data.frame(Scale = scale_name,
|
||
Alpha = alpha_val,
|
||
Omega = omega_val))
|
||
}
|
||
|
||
print(kable(reliability_results, digits = 3, caption = "Internal Consistency (Alpha & Omega)"))
|
||
|
||
# Test-retest reliability
|
||
df$pref_present <- rowMeans(df[, present_pref_vars], na.rm = TRUE)
|
||
df$pref_past5 <- rowMeans(df[, past_5_pref_vars], na.rm = TRUE)
|
||
df$pref_past10 <- rowMeans(df[, past_10_pref_vars], na.rm = TRUE)
|
||
df$pref_fut5 <- rowMeans(df[, fut_5_pref_vars], na.rm = TRUE)
|
||
df$pref_fut10 <- rowMeans(df[, fut_10_pref_vars], na.rm = TRUE)
|
||
pref_mat <- df[, c("pref_present", "pref_past5", "pref_past10", "pref_fut5", "pref_fut10")]
|
||
|
||
df$pers_present <- rowMeans(df[, present_pers_vars], na.rm = TRUE)
|
||
df$pers_past5 <- rowMeans(df[, past_5_pers_vars], na.rm = TRUE)
|
||
df$pers_past10 <- rowMeans(df[, past_10_pers_vars], na.rm = TRUE)
|
||
df$pers_fut5 <- rowMeans(df[, fut_5_pers_vars], na.rm = TRUE)
|
||
df$pers_fut10 <- rowMeans(df[, fut_10_pers_vars], na.rm = TRUE)
|
||
pers_mat <- df[, c("pers_present", "pers_past5", "pers_past10", "pers_fut5", "pers_fut10")]
|
||
|
||
df$val_present <- rowMeans(df[, present_val_vars], na.rm = TRUE)
|
||
df$val_past5 <- rowMeans(df[, past_5_val_vars], na.rm = TRUE)
|
||
df$val_past10 <- rowMeans(df[, past_10_val_vars], na.rm = TRUE)
|
||
df$val_fut5 <- rowMeans(df[, fut_5_val_vars], na.rm = TRUE)
|
||
df$val_fut10 <- rowMeans(df[, fut_10_val_vars], na.rm = TRUE)
|
||
val_mat <- df[, c("val_present", "val_past5", "val_past10", "val_fut5", "val_fut10")]
|
||
|
||
# Calculate ICC
|
||
icc_pref <- psych::ICC(pref_mat)
|
||
icc_pers <- psych::ICC(pers_mat)
|
||
icc_val <- psych::ICC(val_mat)
|
||
|
||
print(kable(icc_pref$results["Single_raters_absolute", , drop = FALSE], caption = "Test–Retest ICC: Preferences"))
|
||
print(kable(icc_pers$results["Single_raters_absolute", , drop = FALSE], caption = "Test–Retest ICC: Personality"))
|
||
print(kable(icc_val$results["Single_raters_absolute", , drop = FALSE], caption = "Test–Retest ICC: Values")) |