Skip to contents

The 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 names

  • MEAN: Mean score

  • SD: 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 LDELTOTAL score in NEUROBAT()

  • Digit Symbol Substitution Test Score, see DIGITSCOR score in NEUROBAT()

  • Trails B Score, see see TRABSCOR score in NEUROBAT()

rescale_trialsB

A Boolean value to change the Trails B score in log scale, Default: TRUE

keepComponents

A Boolean to keep component score, Default: FALSE

wideFormat

A Boolean value whether the data.frame is in wide or long format, Default: TRUE

varName

Column name that contain the component score names for long format data, Default = NULL. Only applicable for a long format data and varName must not be missing if wideFormat is FALSE.

scoreCol

Variable names that contains component score/numeric value for long format data, Default = NULL. Only applicable for a long format data and scoreCol must not be missing if wideFormat is FALSE.

idCols

Character vector of ID columns for long format data, Default: NULL. Only applicable for a long format data and idCols must not be missing if wideFormat is FALSE.

Value

  • For a wide format input data: A data.frame with appended columns for mPACCdigit and mPACCtrailsB.

  • For a long format input data: A data.frame with additional rows of mPACCdigit and mPACCtrailsB.

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

See also

vignette(topic = "ADNIMERGE2-PACC-SCORE", package = "ADNIMERGE2")

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))
} # }