104 lines
5.3 KiB
R
104 lines
5.3 KiB
R
options(scipen = 999)
|
|
setwd("C:/Users/irina/Documents/DND/EOHI/eohi1")
|
|
|
|
# Load data
|
|
ehi1 <- read.csv("ehi1.csv")
|
|
|
|
# Create EHI difference variables (NPast - NFut)
|
|
# Preferences
|
|
ehi1$ehi_pref_read <- ehi1$NPastDiff_pref_read - ehi1$NFutDiff_pref_read
|
|
ehi1$ehi_pref_music <- ehi1$NPastDiff_pref_music - ehi1$NFutDiff_pref_music
|
|
ehi1$ehi_pref_tv <- ehi1$NPastDiff_pref_tv - ehi1$NFutDiff_pref_tv
|
|
ehi1$ehi_pref_nap <- ehi1$NPastDiff_pref_nap - ehi1$NFutDiff_pref_nap
|
|
ehi1$ehi_pref_travel <- ehi1$NPastDiff_pref_travel - ehi1$NFutDiff_pref_travel
|
|
|
|
# Personality
|
|
ehi1$ehi_pers_extravert <- ehi1$NPastDiff_pers_extravert - ehi1$NFutDiff_pers_extravert
|
|
ehi1$ehi_pers_critical <- ehi1$NPastDiff_pers_critical - ehi1$NFutDiff_pers_critical
|
|
ehi1$ehi_pers_dependable <- ehi1$NPastDiff_pers_dependable - ehi1$NFutDiff_pers_dependable
|
|
ehi1$ehi_pers_anxious <- ehi1$NPastDiff_pers_anxious - ehi1$NFutDiff_pers_anxious
|
|
ehi1$ehi_pers_complex <- ehi1$NPastDiff_pers_complex - ehi1$NFutDiff_pers_complex
|
|
|
|
# Values
|
|
ehi1$ehi_val_obey <- ehi1$NPastDiff_val_obey - ehi1$NFutDiff_val_obey
|
|
ehi1$ehi_val_trad <- ehi1$NPastDiff_val_trad - ehi1$NFutDiff_val_trad
|
|
ehi1$ehi_val_opinion <- ehi1$NPastDiff_val_opinion - ehi1$NFutDiff_val_opinion
|
|
ehi1$ehi_val_performance <- ehi1$NPastDiff_val_performance - ehi1$NFutDiff_val_performance
|
|
ehi1$ehi_val_justice <- ehi1$NPastDiff_val_justice - ehi1$NFutDiff_val_justice
|
|
|
|
# Life satisfaction
|
|
ehi1$ehi_life_ideal <- ehi1$NPastDiff_life_ideal - ehi1$NFutDiff_life_ideal
|
|
ehi1$ehi_life_excellent <- ehi1$NPastDiff_life_excellent - ehi1$NFutDiff_life_excellent
|
|
ehi1$ehi_life_satisfied <- ehi1$NPastDiff_life_satisfied - ehi1$NFutDiff_life_satisfied
|
|
ehi1$ehi_life_important <- ehi1$NPastDiff_life_important - ehi1$NFutDiff_life_important
|
|
ehi1$ehi_life_change <- ehi1$NPastDiff_life_change - ehi1$NFutDiff_life_change
|
|
|
|
# QA: Verify calculations
|
|
cat("\n=== QUALITY ASSURANCE CHECK ===\n")
|
|
cat("Verifying EHI difference calculations (NPast - NFut)\n\n")
|
|
|
|
qa_pairs <- list(
|
|
list(npast = "NPastDiff_pref_read", nfut = "NFutDiff_pref_read", target = "ehi_pref_read"),
|
|
list(npast = "NPastDiff_pref_music", nfut = "NFutDiff_pref_music", target = "ehi_pref_music"),
|
|
list(npast = "NPastDiff_pref_tv", nfut = "NFutDiff_pref_tv", target = "ehi_pref_tv"),
|
|
list(npast = "NPastDiff_pref_nap", nfut = "NFutDiff_pref_nap", target = "ehi_pref_nap"),
|
|
list(npast = "NPastDiff_pref_travel", nfut = "NFutDiff_pref_travel", target = "ehi_pref_travel"),
|
|
list(npast = "NPastDiff_pers_extravert", nfut = "NFutDiff_pers_extravert", target = "ehi_pers_extravert"),
|
|
list(npast = "NPastDiff_pers_critical", nfut = "NFutDiff_pers_critical", target = "ehi_pers_critical"),
|
|
list(npast = "NPastDiff_pers_dependable", nfut = "NFutDiff_pers_dependable", target = "ehi_pers_dependable"),
|
|
list(npast = "NPastDiff_pers_anxious", nfut = "NFutDiff_pers_anxious", target = "ehi_pers_anxious"),
|
|
list(npast = "NPastDiff_pers_complex", nfut = "NFutDiff_pers_complex", target = "ehi_pers_complex"),
|
|
list(npast = "NPastDiff_val_obey", nfut = "NFutDiff_val_obey", target = "ehi_val_obey"),
|
|
list(npast = "NPastDiff_val_trad", nfut = "NFutDiff_val_trad", target = "ehi_val_trad"),
|
|
list(npast = "NPastDiff_val_opinion", nfut = "NFutDiff_val_opinion", target = "ehi_val_opinion"),
|
|
list(npast = "NPastDiff_val_performance", nfut = "NFutDiff_val_performance", target = "ehi_val_performance"),
|
|
list(npast = "NPastDiff_val_justice", nfut = "NFutDiff_val_justice", target = "ehi_val_justice"),
|
|
list(npast = "NPastDiff_life_ideal", nfut = "NFutDiff_life_ideal", target = "ehi_life_ideal"),
|
|
list(npast = "NPastDiff_life_excellent", nfut = "NFutDiff_life_excellent", target = "ehi_life_excellent"),
|
|
list(npast = "NPastDiff_life_satisfied", nfut = "NFutDiff_life_satisfied", target = "ehi_life_satisfied"),
|
|
list(npast = "NPastDiff_life_important", nfut = "NFutDiff_life_important", target = "ehi_life_important"),
|
|
list(npast = "NPastDiff_life_change", nfut = "NFutDiff_life_change", target = "ehi_life_change")
|
|
)
|
|
|
|
all_checks_passed <- TRUE
|
|
|
|
for (pair in qa_pairs) {
|
|
# Calculate expected difference
|
|
expected_diff <- ehi1[[pair$npast]] - ehi1[[pair$nfut]]
|
|
|
|
# Get actual value in target variable
|
|
actual_value <- ehi1[[pair$target]]
|
|
|
|
# Compare (allowing for floating point precision issues)
|
|
discrepancies <- which(abs(expected_diff - actual_value) > 1e-10)
|
|
|
|
if (length(discrepancies) > 0) {
|
|
cat(sprintf("FAIL: %s\n", pair$target))
|
|
cat(sprintf(" Found %d discrepancies in rows: %s\n",
|
|
length(discrepancies),
|
|
paste(head(discrepancies, 10), collapse = ", ")))
|
|
|
|
# Show first discrepancy details
|
|
row_num <- discrepancies[1]
|
|
cat(sprintf(" Example (row %d): %s (%g) - %s (%g) = %g, but %s = %g\n",
|
|
row_num,
|
|
pair$npast, ehi1[[pair$npast]][row_num],
|
|
pair$nfut, ehi1[[pair$nfut]][row_num],
|
|
expected_diff[row_num],
|
|
pair$target, actual_value[row_num]))
|
|
all_checks_passed <- FALSE
|
|
} else {
|
|
cat(sprintf("PASS: %s (n = %d)\n", pair$target, nrow(ehi1)))
|
|
}
|
|
}
|
|
|
|
cat("\n")
|
|
if (all_checks_passed) {
|
|
cat("*** ALL QA CHECKS PASSED ***\n")
|
|
} else {
|
|
cat("*** SOME QA CHECKS FAILED - REVIEW ABOVE ***\n")
|
|
}
|
|
|
|
# Save updated dataset
|
|
write.csv(ehi1, "ehi1.csv", row.names = FALSE)
|
|
cat("\nDataset saved to ehi1.csv\n") |