fNIRS Parkinson DT study - Diagnostics
Diagnostics
Show the code
# File names
files <- c("model_aim1_oa",
"model_aim1_pd",
"model_aim2_1_oa",
"model_aim2_1_pd",
"model_aim2_2_oa",
"model_aim2_2_pd",
"model_aim2_3_oa",
"model_aim2_3_pd",
"model_aim3_oa",
"model_aim3_pd")
# Loop through each file
for (file in files) {
folder = "../data/model_eval/"
coeff_file = paste(folder, file, "_estimates.csv", sep="")
data_file = paste(folder, file, "_data.csv", sep="")
formula_file = paste(folder, file, "_formula.txt", sep="")
formula_description = paste(folder, file, "_description.txt", sep="")
# Read the coefficients from the CSV file
coeffs <- read.csv(coeff_file)
model_data <- read.csv(data_file)
model_formula <- read_file(formula_file)
model_formula <- sub("beta ~ ", "beta ~ -1 + ", model_formula)
model_formula_descr <- read_file(formula_description)
# Print a headline for the current file
cat("\n\n## Analysis for", file, "\n\n")
cat("\nFormula: ", model_formula_descr, "\n\n")
# Set formula
formula <- as.formula(model_formula)
# Import data points
n = length(model_data$beta)
data <- model_data %>% select(-Residuals, -FittedValues)
# Set up the model structure
model <- lm(formula, data = data)
# Manually set the model fields to exported data
model$coefficients <- setNames(coeffs$Coefficients, coeffs$Predictors)
model$residuals <- model_data$Residuals
model$fitted.values <- model_data$FittedValues
model$call <- formula
model$terms <- terms(formula)
model$qr <- qr(model.matrix(formula, data))
model$rank <- ncol(model.matrix(formula, data))
model$df.residual <- n - length(model$coefficients)
# Diagnostic plots
plot(model)
influencePlot(model, main="Influence Plot", sub="Circle size is proportial to Cook's Distance")
}Analysis for model_aim1_oa
Formula: beta ~ -1 + cond + st_step_time_var + age
Analysis for model_aim1_pd
Formula: beta ~ -1 + cond + st_step_time_var + age + updrs_3_motor
Analysis for model_aim2_1_oa
Formula: beta ~ -1 + cond + age + dt_cost_walk_speed
Analysis for model_aim2_1_pd
Formula: beta ~ -1 + cond + age + updrs_3_motor + dt_cost_walk_speed
Analysis for model_aim2_2_oa
Formula: beta ~ -1 + cond + age + dt_cost_stroop_time
Analysis for model_aim2_2_pd
Formula: beta ~ -1 + cond + age + updrs_3_motor + dt_cost_stroop_time
Analysis for model_aim2_3_oa
Formula: beta ~ -1 + cond + age + prio
Analysis for model_aim2_3_pd
Formula: beta ~ -1 + cond + age + updrs_3_motor + prio
Analysis for model_aim3_oa
Formula: beta ~ -1 + cond + st_step_time_var*tmt4 + age + edu
Analysis for model_aim3_pd
Formula: beta ~ -1 + cond + st_step_time_var*tmt4 + age + updrs_3_motor + edu