Cognitive Aging in Healthy Adults

Author

Srishti Chowdhary

Introduction

Cognitive tests have traditionally been used to identify pathological impairment, such as mild cognitive impairment (MCI) or dementia. However, the Precision Aging Study aims to shift the focus toward understanding normal cognitive aging, which may require the development of newer tools for measuring cognitive function beyond traditional tests.

This project seeks to evaluate the relationship between neurophycologic tests that measure impairment (MoCA) to tests that focus on very specific tasks. The Paired Associates test measures short term memory (http://help.cambridgebrainsciences.com/en/articles/705727-what-is-the-paired-associates-test); The Paired Associate Learning test (PAL) which measures visual memory and new learning (https://cambridgecognition.com/paired-associates-learning-pal/); and Keep Track task, which measures executive function.

In addition, we investigate associations between these cognitive performance measure and factors known to influence cognitive health, including: cardiovascular health and other demographic data.

Research Questions

  1. How correlated are the visual memory and executive function tests (PAL and Keep Track) with the short-term memory test (Paired Associates), and do these associations differ between individuals classified as MCI versus Robust based on MoCA scores?

  2. Is there an association between performance on the PAL and Keep Track tasks and baseline demographic variables (age, sex, BMI), as well as the presence of hypertension?

    This is particularly relevant given existing evidence that cardiovascular conditions may influence cognitive function.

Demographics

Age:Self-reported in years

Sex: Biological sex at birth (0 = Male, 1 = Female)

BMI: Body Mass Index

Health History

Heart Disease: 0 = No, does not have it, 1 = Yes, does have it

Hypertension: 0 = No, 1 = Yes

Stroke: 0 = No, 1 = Yes

Sleep Problems: 0 = No, 1 = Yes

Cognitive Measures

MoCA Total Score: 0-30 composite score

Flanker Test: Congruent and Incongruent correct responses

Keep Track Task: Total correct across categories

Word Pairs: Memory total correct (Paired Associates Learning or PAL)

Table 1

Table 1 presents descriptive statistics for demographic, cognitive, and health-related variables, stratified by MoCA-defined cognitive status (MCI vs. Robust). Variables include age, sex, body mass index (BMI), and performance on cognitive tasks (Keep Track, Paired Associates, PAL). A Cardiovascular risk factor such as hypertension is also summarized. The stratification allows for comparison between groups with potential cognitive impairment (MoCA < 26) and those with normal cognitive functioning or Robust (MoCA ≥ 26).

Load Libraries and Read Data

Show the code
# Load libraries
library (table1)
library (rms)
library(ggpubr)
library(ggplot2)
library(tidyr)
library(dplyr)


# Load dataset
data <- read.csv("~/Downloads/KEYS 2025/keys2025data copy.csv")

# Make groups
data$moca_list <- ifelse(data$moca_total < 26, "MCI", "Robust")

# Remove missing data (Rename the variable and do moca_list to moca_total)
data <- subset(data, !is.na(moca_total))

# Make labeled factors 
data$health_medical_heart_disease <- factor(data$health_medical_heart_disease,
                                            levels = c(0, 1),
                                            labels = c("No", "Yes"))
data$health_medical_hypertension <- factor(data$health_medical_hypertension,
                                           levels = c(0, 1),
                                           labels = c("No", "Yes"))
data$health_medical_stroke <- factor(data$health_medical_stroke,
                                     levels = c(0, 1),
                                     labels = c("No", "Yes"))
data$health_medical_sleep_problems <- factor(data$health_medical_sleep_problems,
                                             levels = c(0, 1),
                                             labels = c("No", "Yes"))

# label variables
table1::label(data$age) <- "Age"
table1::label(data$sex) <- "Sex"
table1::label(data$bmi) <- "BMI"
table1::label(data$FLK_Cong_Count_Correct) <- "Flanker Congruent Correct"
table1::label(data$FLK_Inc_Count_Correct) <- "Flanker Incongruent Correct"
table1::label(data$KT_Total_Correct) <- "Keep Track"
table1::label(data$memory_totalcorrect) <- "Paired Associates"
table1::label(data$health_medical_heart_disease) <- "Heart Disease"
table1::label(data$health_medical_hypertension) <- "Hypertension"
table1::label(data$health_medical_stroke) <- "Stroke"
table1::label(data$health_medical_sleep_problems) <- "Sleep Problems"
table1::label(data$WP_Total_Easy_Correct) <- "Word Pairs easy"
table1::label(data$WP_Total_Hard_Correct) <- "Word Pairs Hard"

Create Table 1

Show the code
# print table 1
table1(~ age + sex + bmi +  memory_totalcorrect + KT_Total_Correct + WP_Total_Hard_Correct + health_medical_hypertension | moca_list,
       data = data, render.missing = NULL, render.continuous="Mean(SD)")
MCI
(N=287)
Robust
(N=535)
Overall
(N=822)
Age 65.3(8.16) 63.3(7.49) 64.0(7.78)
Sex
Female 202 (70.4%) 365 (68.2%) 567 (69.0%)
Male 83 (28.9%) 168 (31.4%) 251 (30.5%)
BMI 28.7(6.37) 27.2(5.47) 27.7(5.85)
Paired Associates 16.2(7.47) 21.0(7.46) 19.3(7.80)
Keep Track 19.8(4.37) 22.3(3.85) 21.4(4.21)
Word Pairs Hard 9.87(5.48) 14.0(6.17) 12.8(6.26)
Hypertension
No 176 (61.3%) 361 (67.5%) 537 (65.3%)
Yes 111 (38.7%) 174 (32.5%) 285 (34.7%)

Methods

For question 1 we use a method called Analysis of Covariance - where we examine the difference in association between two variables using an “interaction” term between MoCA and the x-variable (PAL and Flanker compared to Paired Associates) adjusting for another variable (MoCA).

For question 2 we use multiple linear regression.

Results

We explored associations between cognitive test scores and demographic and cardiovascular variables using linear regression models. Visual and statistical analyses focused on how age, BMI, sex, and hypertension relate to performance on the Keep Track (executive function) and PAL (visual memory) tasks. Differences by cognitive status (MCI vs. Robust, based on MoCA) were also examined.

Interactions plots

The following plots illustrate the relationship between performance on the Paired Associates memory test and two specific cognitive tasks: the Keep Track task (executive function) and the Paired Associates Learning (PAL) task (visual memory and new learning). Each plot is stratified by MoCA group (Robust vs. MCI) to visualize potential group differences. Regression lines help show trends across the two cognitive status groups, and the combined plot includes a shared legend for comparison.

Show the code
library(ggplot2)
library(ggpubr)

# Individual Plot 1: Keep Track vs. Paired Associates
plot_kt <- ggplot(data = data, aes(x = KT_Total_Correct, y = memory_totalcorrect, group = moca_list, color = moca_list)) +
  geom_smooth(method = lm, se = FALSE) +
  geom_point(size = 3) +
  scale_color_manual(values = c("steelblue", "gray")) +
  theme_classic() +
  labs(
    title = "Keep Track vs. Paired Associates",
    x = "Keep Track Task",
    y = "Paired Associates Test"
  )

# Individual Plot 2: PAL vs. Paired Associates
plot_pal <- ggplot(data = data, aes(x = WP_Total_Hard_Correct, y = log(memory_totalcorrect), group = moca_list, color = moca_list)) +
  geom_smooth(method = lm, se = FALSE) +
  geom_point(size = 3) +
  scale_color_manual(values = c("steelblue", "gray")) +
  theme_classic() +
  labs(
    title = "PAL vs. Paired Associates",
    x = "Word Pairs Hard (PAL)",
    y = "Paired Associates Test"
  )

# Combined plot with shared legend
combined_kt_pal <- ggarrange(
  plot_kt,
  plot_pal,
  ncol = 2,
  common.legend = TRUE,
  legend = "bottom"
)

# View the combined plot in RStudio
print(combined_kt_pal)

Show the code
# Save as PNG
png("Combined_KeepTrack_and_PAL_vs_PairedAssociates.png", width = 960, height = 480, res = 300)
print(combined_kt_pal)
dev.off()
quartz_off_screen 
                2 
Show the code
# ANCOVA Models
analysis_data_kt <- subset(data, select = c(memory_totalcorrect, moca_list, KT_Total_Correct))
ancova_model_kt <- ols(log(memory_totalcorrect + 0.001) ~ moca_list * KT_Total_Correct, data = analysis_data_kt)
ancova_model_kt
Frequencies of Missing Values Due to Each Variable
log(memory_totalcorrect + 0.001)                        moca_list 
                               0                                0 
                KT_Total_Correct 
                             254 

Linear Regression Model

ols(formula = log(memory_totalcorrect + 0.001) ~ moca_list * 
    KT_Total_Correct, data = analysis_data_kt)

                Model Likelihood    Discrimination    
                      Ratio Test           Indexes    
Obs     568    LR chi2     64.33    R2       0.107    
sigma0.6002    d.f.            3    R2 adj   0.102    
d.f.    564    Pr(> chi2) 0.0000    g        0.194    

Residuals

     Min       1Q   Median       3Q      Max 
-8.94400 -0.24808  0.09048  0.33719  1.66160 

                                    Coef    S.E.   t     Pr(>|t|)
Intercept                            1.5141 0.1991  7.60 <0.0001 
moca_list=Robust                     1.1368 0.2703  4.20 <0.0001 
KT_Total_Correct                     0.0580 0.0098  5.90 <0.0001 
moca_list=Robust * KT_Total_Correct -0.0445 0.0127 -3.50 0.0005  
Show the code
analysis_data_pal <- subset(data, select = c(memory_totalcorrect, moca_list, WP_Total_Hard_Correct))
ancova_model_pal <- ols(log(memory_totalcorrect + 0.001) ~ moca_list * WP_Total_Hard_Correct, data = analysis_data_pal)
ancova_model_pal
Frequencies of Missing Values Due to Each Variable
log(memory_totalcorrect + 0.001)                        moca_list 
                               0                                0 
           WP_Total_Hard_Correct 
                             204 

Linear Regression Model

ols(formula = log(memory_totalcorrect + 0.001) ~ moca_list * 
    WP_Total_Hard_Correct, data = analysis_data_pal)

                Model Likelihood    Discrimination    
                      Ratio Test           Indexes    
Obs     618    LR chi2    189.52    R2       0.264    
sigma0.5229    d.f.            3    R2 adj   0.261    
d.f.    614    Pr(> chi2) 0.0000    g        0.357    

Residuals

     Min       1Q   Median       3Q      Max 
-9.02276 -0.17310  0.06214  0.24575  1.06309 

                                         Coef    S.E.   t     Pr(>|t|)
Intercept                                 2.0546 0.0781 26.31 <0.0001 
moca_list=Robust                          0.3537 0.1003  3.53 0.0005  
WP_Total_Hard_Correct                     0.0604 0.0069  8.73 <0.0001 
moca_list=Robust * WP_Total_Hard_Correct -0.0204 0.0080 -2.53 0.0116  

Figure 1: Interaction Plots

The association between the Paired Associates Test (on the logscale) and Keep Track Task is different between those with MCI versus Robust MoCA (p =0.0005) with a steeper slope (meaning stronger correlation across Keep Track) in those with MCI; MoCA group also modifies the relationship between the Paired Associates Test and PAL (p=0.0116), with a not obvious, but similar pattern – the MCI group has a steeper slope.

Multiple Regression Plots

For Keep Track Task (A & B)

Show the code
library(rms)     # for ols(), datadist(), Predict()
library(Hmisc)   # needed for datadist()
### this allows us to make pretty plots

data$Keep_Track <- data$KT_Total_Correct
data$hypertension <- data$health_medical_hypertension

dd2 <-datadist(data)
options(datadist='dd2')

multiple.regression.kt <- ols(Keep_Track ~ age + sex + bmi + hypertension, data=data)
multiple.regression.kt
Frequencies of Missing Values Due to Each Variable
  Keep_Track          age          sex          bmi hypertension 
         254            0            4            7            0 

Linear Regression Model

ols(formula = Keep_Track ~ age + sex + bmi + hypertension, data = data)

                Model Likelihood    Discrimination    
                      Ratio Test           Indexes    
Obs     560    LR chi2     18.38    R2       0.032    
sigma4.1670    d.f.            4    R2 adj   0.025    
d.f.    555    Pr(> chi2) 0.0010    g        0.867    

Residuals

     Min       1Q   Median       3Q      Max 
-21.1829  -1.8137   0.4839   2.7704   8.8377 

                 Coef    S.E.   t     Pr(>|t|)
Intercept        27.5843 1.8519 14.89 <0.0001 
age              -0.0594 0.0239 -2.48 0.0134  
sex=Male         -0.3858 0.3897 -0.99 0.3226  
bmi              -0.0769 0.0326 -2.36 0.0187  
hypertension=Yes -0.4652 0.4032 -1.15 0.2491  
Show the code
plot(anova(multiple.regression.kt), margin="P")

Show the code
plot(Predict(multiple.regression.kt))

For PAL Task (C & D)

Show the code
data$PAL <- data$WP_Total_Hard_Correct
data$hypertension <- data$health_medical_hypertension

dd <- datadist(data)
options(datadist='dd')

multiple.regression.wp <- ols(PAL ~ age + sex + bmi + hypertension, data=data)
multiple.regression.wp
Frequencies of Missing Values Due to Each Variable
         PAL          age          sex          bmi hypertension 
         204            0            4            7            0 

Linear Regression Model

ols(formula = PAL ~ age + sex + bmi + hypertension, data = data)

                Model Likelihood    Discrimination    
                      Ratio Test           Indexes    
Obs     610    LR chi2     71.94    R2       0.111    
sigma5.9409    d.f.            4    R2 adj   0.105    
d.f.    605    Pr(> chi2) 0.0000    g        2.402    

Residuals

     Min       1Q   Median       3Q      Max 
-14.4703  -4.4879  -0.5218   4.5871  13.2858 

                 Coef    S.E.   t     Pr(>|t|)
Intercept        28.5994 2.5096 11.40 <0.0001 
age              -0.1766 0.0324 -5.45 <0.0001 
sex=Male         -2.7602 0.5336 -5.17 <0.0001 
bmi              -0.1378 0.0454 -3.04 0.0025  
hypertension=Yes  0.0950 0.5405  0.18 0.8605  
Show the code
plot(anova(multiple.regression.wp), margin = "P")

Show the code
plot(Predict(multiple.regression.wp))

Figure 2: Linear regression analysis for Keep Track

(A) shows a statistically significant association between Keep Track Task scores and BMI and Age; with a decreasing score in older age and higher bmi (B). There is a statistically significant association between BMI, Sex and Age and PAL task scores (C); with decreasing scores in older ages and higher BMI and lower scores in males versus females (D). For both Keep Track and PAL, higher scores are better.

Discussion

  • This project seeks to evaluate the relationship between neuropsychologic tests that measure impairment (MoCA) to tests that focus on specific types of memory and executive function.

  • The relationship between short term memory and new memory and executive function differs by MoCA group; individuals with MCI have lower short-term memory and executive function scores and are more strongly correlated with short term memory.

  • Regression results show that higher age and BMI are linked to statistically lower scores on both Keep Track and PAL.

  • Males have statistically lower PAL scores compared to females.

This project shows that cognitive tasks that measure short-term memory, new memory and executive functioning are sensitive to measuring cognitive functioning in normal adults, in both those with robust and cognitive impairment based on the MoCA test.