fNIRS Parkinson DT study - Diagnostics
Diagnostics
Show the code
# File names
<- c("model_aim1_oa",
files "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) {
= "../data/model_eval/"
folder = paste(folder, file, "_estimates.csv", sep="")
coeff_file = paste(folder, file, "_data.csv", sep="")
data_file = paste(folder, file, "_formula.txt", sep="")
formula_file = paste(folder, file, "_description.txt", sep="")
formula_description
# Read the coefficients from the CSV file
<- read.csv(coeff_file)
coeffs <- read.csv(data_file)
model_data <- read_file(formula_file)
model_formula <- sub("beta ~ ", "beta ~ -1 + ", model_formula)
model_formula <- read_file(formula_description)
model_formula_descr
# Print a headline for the current file
cat("\n\n## Analysis for", file, "\n\n")
cat("\nFormula: ", model_formula_descr, "\n\n")
# Set formula
<- as.formula(model_formula)
formula
# Import data points
= length(model_data$beta)
n <- model_data %>% select(-Residuals, -FittedValues)
data
# Set up the model structure
<- lm(formula, data = data)
model
# Manually set the model fields to exported data
$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)
model
# 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