
Compute ADNI modified versions of the Preclinical Alzheimer's Cognitive Composite (PACC)
Source:R/pacc.R
compute_pacc_score.RdThe Preclinical Alzheimer's Cognitive Composite (PACC) is a baseline standardized composite of
Free and Cued Selective Reminding Test (FCSRT)
Logical Memory IIa Delayed Recall (LM)
Digit Symbol Substitution Test (DSST)
Mini-Mental State Examination (MMSE)
See Details section for more information.
Usage
compute_pacc_score(
.data,
bl.summary,
componentVars,
rescale_trialsB = FALSE,
keepComponents = FALSE,
wideFormat = TRUE,
varName = NULL,
scoreCol = NULL,
idCols = NULL
)Arguments
- .data
A data.frame either in wide or long format. Please see the other arguments.
- bl.summary
Baseline component score summary It can be created either using
compute_score_summary()function. Or a data.frame of component score summary that contains the following variables:VAR: Contains PACC component variable namesMEAN: Mean scoreSD: Standard deviation value
Often recommended to use the baseline component score that summarized by baseline diagnostics status.
- componentVars
Character vector of component score variable names. The component score variable names should be arranged based the following order. Otherwise, invalid composite score will be calculated.
Delayed Recall portion from ADAS Cognitive Behavior assessment (ADAS-Cog), see
ADAS()Mini-Mental State Examination Score, see
MMSE()Logical Memory IIa Delayed Recall Score, see
LDELTOTALscore inNEUROBAT()Digit Symbol Substitution Test Score, see
DIGITSCORscore inNEUROBAT()Trails B Score, see see
TRABSCORscore inNEUROBAT()
- rescale_trialsB
A Boolean value to change the
Trails Bscore in log scale, Default: TRUE- keepComponents
A Boolean to keep component score, Default: FALSE
- wideFormat
A Boolean value whether the data.frame is in
wideorlongformat, Default: TRUE- varName
Column name that contain the component score names for long format data, Default = NULL. Only applicable for a
longformat data andvarNamemust not be missing ifwideFormatisFALSE.- scoreCol
Variable names that contains component score/numeric value for long format data, Default = NULL. Only applicable for a
longformat data andscoreColmust not be missing ifwideFormatisFALSE.- idCols
Character vector of ID columns for long format data, Default: NULL. Only applicable for a
longformat data andidColsmust not be missing ifwideFormatisFALSE.
Value
For a
wideformat input data: Adata.framewith appended columns formPACCdigitandmPACCtrailsB.For a
longformat input data: Adata.framewith additional rows ofmPACCdigitandmPACCtrailsB.
Details
This function generates two modified versions of PACC scores based on ADNI data. FCSRT is not used in ADNI, so we use the
Delayed Recall portion of the Alzheimer's Disease Assessment Scale (ADAS) as a proxy. Score mPACCdigit uses the
DSST and only computed for ADNI1 study phase. mPACCtrailsB uses (log transformed) Trails B as a proxy for DSST. Raw component scores
standardized according to the mean and standard deviation of baseline scores of ADNI subjects with normal cognition
to create Z scores for each component (Z=(raw - mean(raw.bl))/sd(raw.bl)).
The Z scores are reoriented if necessary so that greater scores reflect better performance.
The composite is the sum of these Z scores.
Missing components: At least two components must be present to produce a score.
If more than two components are missing, the PACC will be NA.
mPACCdigit only will be calculated for the study phase when DSST was collected, which is in ADNI1 study phase.
Otherwise the mPACCdigit score will be missing (i.e., NA) even though the remaining PACC component scores are non-missing.
Please see vignette(topic = "ADNIMERGE2-PACC-SCORE", package = "ADNIMERGE2")
how compute_pacc_score() function can be used.
References
Donohue MC, et al. The Preclinical Alzheimer Cognitive Composite: Measuring Amyloid-Related Decline. JAMA Neurol. 2014;71(8):961–970. doi:10.1001/jamaneurol.2014.803 http://dx.doi.org/10.1001/jamaneurol.2014.803
Donohue MC, Sperling RA, Petersen R, Sun C, Weiner MW, Aisen PS, for the Alzheimer’s Disease Neuroimaging Initiative. Association Between Elevated Brain Amyloid and Subsequent Cognitive Decline Among Cognitively Normal Persons. JAMA. 2017;317(22):2305–2316. http://dx.doi.org/10.1001/jama.2017.6669
Author
Michael Donohue mdonohue@usc.edu
Examples
if (FALSE) { # \dontrun{
# Please see 'Details' section or 'ADNIMERGE2-PACC-SCORE' vignette
vignette(topic = "ADNIMERGE2-PACC-SCORE", package = "ADNIMERGE2")
# Additional examples about PACC score -----
library(nlme)
library(dplyr)
library(multcomp)
library(Hmisc)
library(ADNIMERGE)
csf2numeric <- function(x) {
as.numeric(gsub("<", "", gsub(">", "", x)))
}
dd <- subset(adnimerge, DX.bl %in% c("CN", "SMC") & !is.na(mPACCtrailsB)) %>%
mutate(
ABETA = csf2numeric(ABETA)
)
# identify those with elevated PIB PET at ANY visit OR
# elevated BASELINE AV45 PET OR elevated BASELINE FBB PET OR
# low BASELINE CSF Abeta
# AV45 ~ PIB regression from Landau et al 2012:
elevatedAmyloid <- unique(c(
subset(dd, 0.67 * PIB + 0.15 > 1.11)$RID,
subset(dd, VISCODE == "bl" & AV45 > 1.11)$RID,
subset(dd, VISCODE == "bl" & FBB > 1.08)$RID,
subset(dd, VISCODE == "bl" & ABETA < 900)$RID
))
anyAmyloid <- unique(subset(dd, !is.na(AV45.bl) | !is.na(PIB) |
!is.na(FBB.bl) | !is.na(ABETA.bl))$RID)
dd <- dd %>%
mutate(
ElevatedAmyloid = ifelse(RID %in% elevatedAmyloid, 1,
ifelse(RID %in% anyAmyloid, 0, NA)
),
m = Month.bl,
m2 = Month.bl^2,
APOEe4 = APOE4 > 0
)
summary(
ElevatedAmyloid ~ APOEe4 + AGE + PTEDUCAT,
data = dd,
subset = VISCODE == "bl",
method = "reverse",
overall = TRUE
)
# Quadratic time model:
fit <- lme(
fixed = mPACCtrailsB ~ mPACCtrailsB.bl + APOEe4 + AGE +
PTEDUCAT + m + m2 + (m + m2):ElevatedAmyloid,
random = ~ m | RID,
data = dd,
na.action = na.omit
)
Months <- seq(12, 96, 12)
elevated.design <- model.matrix(
mPACCtrailsB ~ mPACCtrailsB.bl + APOEe4 + AGE + PTEDUCAT +
m + m2 + (m + m2):ElevatedAmyloid,
data = data.frame(
mPACCtrailsB = 0, mPACCtrailsB.bl = 0, APOEe4 = TRUE, AGE = 75,
PTEDUCAT = 12, ElevatedAmyloid = 1, m = Months, m2 = Months^2
)
)
normal.design <- model.matrix(
mPACCtrailsB ~ mPACCtrailsB.bl + APOEe4 + AGE + PTEDUCAT +
m + m2 + (m + m2):ElevatedAmyloid,
data = data.frame(
mPACCtrailsB = 0, mPACCtrailsB.bl = 0, APOEe4 = TRUE, AGE = 75,
PTEDUCAT = 12, ElevatedAmyloid = 0, m = Months, m2 = Months^2
)
)
contrast.data <- elevated.design - normal.design
summary(multcomp::glht(fit, linfct = contrast.data))
} # }