setwd("C:/Users/irina/Documents/DND/EOHI/eohi1") options(scipen = 999) df <- read.csv("ehi1.csv") library(psych) library(knitr) # fixed-decimal formatter (five decimals) fmt5 <- function(x) formatC(x, format = "f", digits = 5) # Select the 4 variables for reliability analysis reliability_data <- df[complete.cases(df[, c("eohiDGEN_mean", "ehi_global_mean")]), c("eohiDGEN_mean", "ehi_global_mean")] # Cronbach's Alpha alpha_result <- alpha(reliability_data) # Split-half reliability split_half <- splitHalf(reliability_data) # Inter-item correlations cor_matrix <- cor(reliability_data, use = "complete.obs") # Two-item reliability summary (if applicable) two_item_section <- "" if (ncol(reliability_data) == 2) { n_complete <- sum(complete.cases(reliability_data)) r_pearson <- cor(reliability_data[, 1], reliability_data[, 2], use = "complete.obs", method = "pearson") r_spearman <- suppressWarnings(cor(reliability_data[, 1], reliability_data[, 2], use = "complete.obs", method = "spearman")) # Fisher z CI for r fisher_z <- atanh(r_pearson) se_z <- 1 / sqrt(n_complete - 3) z_crit <- qnorm(0.975) ci_z_lower <- fisher_z - z_crit * se_z ci_z_upper <- fisher_z + z_crit * se_z ci_r_lower <- tanh(ci_z_lower) ci_r_upper <- tanh(ci_z_upper) # Approximate Fisher z CI for Spearman rho (large-sample approximation) fisher_z_s <- atanh(r_spearman) ci_zs_lower <- fisher_z_s - z_crit * se_z ci_zs_upper <- fisher_z_s + z_crit * se_z ci_s_lower <- tanh(ci_zs_lower) ci_s_upper <- tanh(ci_zs_upper) # Spearman–Brown/Cronbach's alpha for k = 2 alpha_sb <- (2 * r_pearson) / (1 + r_pearson) alpha_lower <- (2 * ci_r_lower) / (1 + ci_r_lower) alpha_upper <- (2 * ci_r_upper) / (1 + ci_r_upper) two_item_section <- paste0( "

Two-Item Reliability Summary

", "

Pearson r: ", fmt5(r_pearson), " (95% CI: [", fmt5(ci_r_lower), ", ", fmt5(ci_r_upper), "])

", "

Spearman r: ", fmt5(r_spearman), " (95% CI: [", fmt5(ci_s_lower), ", ", fmt5(ci_s_upper), "])

", "

Spearman–Brown / Cronbach's ", intToUtf8(945), ": ", fmt5(alpha_sb), " (95% CI: [", fmt5(alpha_lower), ", ", fmt5(alpha_upper), "])

" ) } # Create a summary table summary_table <- data.frame( Variable = names(reliability_data), n = nrow(reliability_data), Mean = round(colMeans(reliability_data, na.rm = TRUE), 5), SD = round(apply(reliability_data, 2, sd, na.rm = TRUE), 5), Min = round(apply(reliability_data, 2, min, na.rm = TRUE), 5), Max = round(apply(reliability_data, 2, max, na.rm = TRUE), 5), Median = round(apply(reliability_data, 2, median, na.rm = TRUE), 5) ) html_output <- paste0( "EHI Reliability Analysis", "

EHI Reliability Analysis

", two_item_section, "

Cronbach's Alpha

", kable(alpha_result$total, format = "html"), "

Split-Half Reliability

", "

Maximum split half reliability: ", fmt5(split_half$maxrb), "

", "

Item-Level Statistics

", kable(alpha_result$item.stats, format = "html"), "" ) writeLines(html_output, "EHI reliability.html")