User Tools

Site Tools


neuroimagen:alt_cusp_method

An alternative method for fitting ADNI data to a Cusp Model

First, let's load the libraries

library("ADNIMERGE")
library(cusp)
library(psych) #for composite scores

Now, we want to do a composite score of a cognitive domain. Let's try the Delay Recall on Memory. we are going to do a composite score with the result of delay recall test for ADAS-Cog and Rey AVLT. So we must get the data,

tmp <- merge(adas, neurobat, by=c("RID", "VISCODE") )
m <- merge(tmp, adnimerge, by=c("RID", "VISCODE") )
rm(tmp)

Also the independent variables, as well as the covariables must be defined this soon. Why? Because, since we are going to ask for a complete cases set, the whole set of variables define by itself the amount of available data. That is, if FDG and whole brain volume are going to be the independent variables the amount of subjects is determined by the availability of those measurements in the sample.

Important Remark: The adnimerge table already provides a useful merged environment for a large set of variables. There are two amyloid burden measurements (PiB and AV45), some morphometry measurements (Ventricles, Hippocampus, WholeBrain, Entorhinal, Fusiform, MidTemp, ICV) and one metabolic measurement (FDG) for neuroimaging markers. But also groups the age, gender, education, APoE-4 and diagnostic of the subjects. Even so, There are several diagnostic related metrics as FAQ (Functional Activities Questionnaire), MMSE (MiniMental State Examination), ADAS (Alzheimer's Disease Assessment Scale), CDRSB (Clinical Dementia Rating Sum of Boxes), MoCA (Montreal Cognitive Assessment) or RAVLT (Rey Auditory Verbal Learning Test).

Let's check first for FDG and WholeBrain as the independent variables. Let be age, education, gender and APoE the covariables for the model.

m$cAGE = m$AGE + m$Years #calculate the right Age
data <- data.frame(m$FDG, m$WholeBrain, m$ICV, m$cAGE, m$PTGENDER, m$PTEDUCAT, m$APOE4, m$AVDEL30MIN, m$Q4SCORE) #select the proper data
datac <- data[complete.cases(data),] #choose only complete cases
# Look here, since the test going in opposite directions, I must choose one direction as the proper one (no matter which)
datac$zavd = (datac$m.AVDEL30MIN - mean(datac$m.AVDEL30MIN))/sd(datac$m.AVDEL30MIN)
datac$zdr = (mean(datac$m.Q4SCORE) - datac$m.Q4SCORE)/sd(datac$m.Q4SCORE)
#Now I got the composite scores
gfam <- data.frame(datac$zavd, datac$zdr)
famod <- fa(gfam, scores="regression")
datac$drcs <- famod$scores
#Convert the gender into an integer
datac$Gender <- as.integer(factor(datac$m.PTGENDER, levels=c("Male","Female"), labels=c(1,2)))
#Normalize the brain volume by ICV (There is another ways to do this)
datac$wb = datac$m.WholeBrain/datac$m.ICV
#and roll the dice
fit <- cusp(y ~ drcs + m.cAGE + Gender + m.PTEDUCAT + m.APOE4, alpha ~ m.FDG + wb, beta ~ m.FDG + wb, datac)

Note:

Normalization can also be done this way,

neuroimagen/alt_cusp_method.txt · Last modified: 2020/08/04 10:58 (external edit)