raw_mri = combat_example[,6:19]
site = factor(combat_example$site)
# Fit and apply combat to harmonize mri data across sites
mod = as.matrix(combat_example[,c("disorder", "age", "sex")])
combat = combat_fit(raw_mri, site, mod)
harmonized_mri = combat_apply(combat, raw_mri, site, mod)$dat.combat
# Run ANOVAs to check the effects of site
Out = NULL
for (j in 1:ncol(raw_mri)) {
raw_mri_anova = anova(lm(raw_mri[,j] ~ mod), lm(raw_mri[,j] ~ mod + site))
harmonized_mri_anova = anova(lm(harmonized_mri[,j] ~ mod), lm(harmonized_mri[,j] ~ mod + site))
Out = rbind(Out, data.frame(
roi = colnames(raw_mri)[j],
raw_mri.F = round(raw_mri_anova$F[2], 1),
raw_mri.P = round(raw_mri_anova$`Pr(>F)`[2], 3),
harmonized_mri.F = round(harmonized_mri_anova$F[2], 1),
harmonized_mri.P = round(harmonized_mri_anova$`Pr(>F)`[2], 3)
))
}
Out[,-1] = apply(Out[,-1], 2, function (x) {ifelse(x == 0, "<0.001", x)})
Out
Run the code above in your browser using DataLab