1 WIN Threshold & Cognition

1.1 Objective:

Examined WIN (Words-in-Noise) Threshold as the outcome, with cognitive status (PACC, CDR,MOCA categories) as key predictors, adjusting for demographic and environmental covariates. Hearing aid use at baseline with longitudinal words in noise result was also assessed.

1.2 WIN Threshold ~ PACC Classification

-Lower PACC → Higher WIN Thresholds (poorer auditory performance).
- Time significantly increases WIN Threshold across all participants.
- Age, gender, and race influence WIN performance.
- No significant time × PACC interaction (similar progression over time).

1.3 WIN Threshold ~ MOCA Classification

  • Lower MOCA → Higher WIN Thresholds (worse performance).
  • Time significantly affects WIN Threshold.
  • No significant time × MOCA interaction (similar rate of change).

1.4 WIN Threshold ~ CDR Status

  • Higher CDR (CDR > 0) is associated with higher WIN Thresholds (indicating worse performance).
  • Time significantly affects WIN Threshold (performance changes over time).
  • No significant time × CDR interaction → The rate of change in WIN Thresholds over time is similar for CDR = 0 and CDR > 0.

1.5 WIN Threshold ~ First time CDR Progression Status

-Progressors have higher WIN Thresholds (worse hearing performance). -Time significantly affects WIN Thresholds across all participants. -No significant time × CDR Progression interaction → Hearing declines at a similar rate for Progressors and Non-Progressors.

1.6 WIN Threshold ~ CDR Sustained Progression Status

-Sustained Progressors have slightly higher WIN Thresholds, but the effect is not significant. -Time significantly affects WIN Thresholds, indicating a decline in hearing performance over time. -No significant time × CDR Sustained Progression interaction → Hearing declines at a similar rate for Sustained and Non-Sustained Progressors.

1.7 WIN Threshold ~ Hearing Aid Use at Baseline

-Hearing aid users have significantly higher WIN Thresholds (indicating poorer performance). -Time significantly affects WIN Threshold, with performance worsening over time. -A significant time × hearing aid use interaction → Hearing aid users experience a faster decline in auditory performance over time.

1.8 Conclusion:

✔ Cognitive impairment (low PACC/MOCA/CDR > 0) is linked to poorer auditory performance.
✔ Hearing difficulties are associated with cognitive status, independent of time-based interactions.
✔ Hearing aid users exhibit worse hearing at baseline and experience a faster decline over time. ✔ Demographic factors (age, gender, race) also play a role.

Note The analysis was done on a dataset filtered for non-missing baseline Words in noise value, n=420. Follow up Words in noise threshold were filtered for missing values.

Note There were 107 missing data points in baseline pacc score. 35 matched pacc scores were extracted and filled the missing baseline pacc from follow-up 1 pacc score in the ADRC data.

`

Note time was calculated from baseline to each followup otdate in years.

Words in noise summary

## # A tibble: 1 × 6
##    mean median    sd range_min range_max n_observations
##   <dbl>  <dbl> <dbl>     <dbl>     <dbl>          <int>
## 1  11.0     10  4.15       3.2        26           1165

Note PACC classification was done by first calculating the mean and sd of baseline pacc for the dataset. Those below and equal to -1 sd were called “low PACC” and those above were named “high pacc.

2 Model 1 pacc classified

model_pacc_classification <- lmer(
  WIN_Threshold_Avg ~ time * PACC_class_sick + educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID),
  data = Drives_for_the_WIN_lme_long,
  REML = FALSE
)
# View the summary of the model
summary(model_pacc_classification)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: WIN_Threshold_Avg ~ time * PACC_class_sick + educ + gender +  
##     age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 |      ID)
##    Data: Drives_for_the_WIN_lme_long
## 
##      AIC      BIC   logLik deviance df.resid 
##   3915.1   3971.6  -1945.5   3891.1      808 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9974 -0.4931 -0.0619  0.4333  4.5284 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  ID       (Intercept) 9.629    3.103   
##  Residual             3.016    1.737   
## Number of obs: 820, groups:  ID, 310
## 
## Fixed effects:
##                               Estimate Std. Error t value
## (Intercept)                   0.514455   5.007136   0.103
## time                          0.449637   0.036123  12.447
## PACC_class_sicklow PACC       1.089955   0.533431   2.043
## educ                         -0.203945   0.081464  -2.503
## gender                       -2.662624   0.391622  -6.799
## age                           0.204005   0.039372   5.182
## raceWhite                     2.124973   0.575232   3.694
## ADI_NATRANK                   0.008401   0.008873   0.947
## noise_censusblock2020_mean    0.004328   0.073524   0.059
## time:PACC_class_sicklow PACC -0.019915   0.136055  -0.146
## 
## Correlation of Fixed Effects:
##             (Intr) time   PACC_P educ   gender age    racWht ADI_NA n_2020
## time        -0.028                                                        
## PACC_c_PACC  0.054  0.100                                                 
## educ        -0.332 -0.003  0.108                                          
## gender      -0.242  0.007  0.056  0.147                                   
## age         -0.508 -0.001 -0.199  0.013  0.084                            
## raceWhite   -0.113  0.037  0.068  0.029  0.064 -0.030                     
## ADI_NATRANK -0.324  0.012  0.017  0.272 -0.056  0.142  0.342              
## ns_cns2020_ -0.723  0.017 -0.003  0.017  0.043 -0.104 -0.018  0.075       
## t:PACC__PAC  0.023 -0.264 -0.166 -0.003  0.003 -0.054  0.021 -0.007  0.012

2.1 Model 1 table

sjPlot::plot_model(model_pacc_classification, 
                   title="Effect of Baseline PACC on WIN threshold")

sjPlot::tab_model(model_pacc_classification, 
                   title = "Effect of Baseline PACC on WIN threshold",
                   file = NULL)
Effect of Baseline PACC on WIN threshold
  WIN_Threshold_Avg
Predictors Estimates CI p
(Intercept) 0.51 -9.31 – 10.34 0.918
time 0.45 0.38 – 0.52 <0.001
PACC class sick [low
PACC]
1.09 0.04 – 2.14 0.041
educ -0.20 -0.36 – -0.04 0.012
gender -2.66 -3.43 – -1.89 <0.001
age 0.20 0.13 – 0.28 <0.001
race [White] 2.12 1.00 – 3.25 <0.001
ADI NATRANK 0.01 -0.01 – 0.03 0.344
noise censusblock2020
mean
0.00 -0.14 – 0.15 0.953
time × PACC class sick
[low PACC]
-0.02 -0.29 – 0.25 0.884
Random Effects
σ2 3.02
τ00 ID 9.63
ICC 0.76
N ID 310
Observations 820
Marginal R2 / Conditional R2 0.275 / 0.827

2.2 Model 1 data vis

2.2.1 Model 1 with no adjustment

## Intercept for High PACC: 0.5145
## Intercept for Low PACC: 1.6044

2.2.2 Model 1 with plot_model

plot_model(model_pacc_classification, 
           type = "pred", 
           terms = c("time", "PACC_class_sick"),
           mdrt.values = "meansd",  # Ensure covariates are set at their means
           show.data = TRUE)  # Overlay raw data points

2.2.3 Model 1 with manual adjustment at the intercept

Adjusting at the Intercept Level (Group-Level Adjustment) When we adjust at the intercept, we assume that all participants share the same average values for covariates.

The intercept is pre-adjusted using the mean values of educ, age, ADI_NATRANK, etc. The same intercept applies to everyone, so predictions are for an “average” participant in each PACC group.

# Extract fixed effects from the model
fixed_effects <- fixef(model_pacc_classification)

# Compute mean values for continuous covariates
mean_educ <- mean(clean_data_PACC_Class$educ, na.rm = TRUE)
mean_age <- mean(clean_data_PACC_Class$age, na.rm = TRUE)
mean_ADI_NATRANK <- mean(clean_data_PACC_Class$ADI_NATRANK, na.rm = TRUE)
mean_noise <- mean(clean_data_PACC_Class$noise_censusblock2020_mean, na.rm = TRUE)

# Compute proportion of White participants
mean_raceWhite <- mean(clean_data_PACC_Class$race == "White", na.rm = TRUE)  # Binary 0/1 = 0.82

# Find most common gender
most_common_gender <- as.numeric(names(sort(table(clean_data_PACC_Class$gender), decreasing = TRUE)[1]))

# Base intercept for "high PACC" group (reference)
intercept_high_pacc <- fixed_effects["(Intercept)"] +
                       fixed_effects["educ"] * mean_educ +
                       fixed_effects["age"] * mean_age +
                       fixed_effects["ADI_NATRANK"] * mean_ADI_NATRANK +
                       fixed_effects["noise_censusblock2020_mean"] * mean_noise +
                       fixed_effects["raceWhite"] * mean_raceWhite

# Adjust for gender: Apply effect if the most common gender is Female (coded as 2)
if (most_common_gender == 2) {
    intercept_high_pacc <- intercept_high_pacc + fixed_effects["gender"]
}

# Adjust for "low PACC" group
intercept_low_pacc <- intercept_high_pacc + fixed_effects["PACC_class_sicklow PACC"]

# Create a new data frame for predictions (fix factor levels)
new_data <- expand.grid(
  time = seq(0, 12, by = 1.5),
  PACC_class_sick = factor(c("high PACC", "low PACC"), levels = c("high PACC", "low PACC"))  # Explicitly set levels
)

# Compute predictions (holding covariates constant)
new_data <- new_data %>%
  mutate(
    PACC_class_sick = as.character(PACC_class_sick),  # Convert to character
    predicted = case_when(
      PACC_class_sick == "high PACC" ~ intercept_high_pacc + fixed_effects["time"] * time,
      PACC_class_sick == "low PACC" ~ intercept_low_pacc + (fixed_effects["time"] + fixed_effects["time:PACC_class_sicklow PACC"]) * time
    )
  )

# Plot results
ggplot(new_data, aes(x = time, y = predicted, color = PACC_class_sick)) +
  geom_line(size = 1.2) +  
  geom_point(size = 2) +  
  theme_minimal() +
  labs(
    title = "Hearing Ability Decline Over Time (WIN Threshold Avg)",
    subtitle = "Comparing PACC = High vs. Low at Baseline",
    x = "Time (Years)",
    y = "Predicted WIN Threshold Avg (Higher = Worse Hearing)",
    color = "Baseline PACC Classification"
  ) +
  theme(legend.position = "top")

# Print intercepts
cat(sprintf("Intercept for PACC = high: %.4f\n", intercept_high_pacc))
## Intercept for PACC = high: 11.6542
cat(sprintf("Intercept for PACC = low: %.4f\n", intercept_low_pacc))
## Intercept for PACC = low: 12.7441
## # A tibble: 2 × 2
##   MOCA_CAT      n
##   <fct>     <int>
## 1 high moca   176
## 2 low moca    156

3 Model 2 MOCA classified

MoCA score was categorized at baseline taking into account for race and educational level.

model_MOCA_classification <- lmer(
  WIN_Threshold_Avg ~ time * MOCA_CAT + educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID),
  data = clean_data_MOCA_CAT,
  REML = FALSE
)
# View the summary of the model
summary(model_MOCA_classification)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: WIN_Threshold_Avg ~ time * MOCA_CAT + educ + gender + age + race +  
##     ADI_NATRANK + noise_censusblock2020_mean + (1 | ID)
##    Data: clean_data_MOCA_CAT
## 
##      AIC      BIC   logLik deviance df.resid 
##   4235.4   4292.9  -2105.7   4211.4      874 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9249 -0.5074 -0.0461  0.4275  4.5591 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  ID       (Intercept) 9.910    3.148   
##  Residual             3.019    1.737   
## Number of obs: 886, groups:  ID, 332
## 
## Fixed effects:
##                             Estimate Std. Error t value
## (Intercept)                 0.691516   4.990949   0.139
## time                        0.433812   0.041411  10.476
## MOCA_CATlow moca            1.303714   0.398694   3.270
## educ                       -0.142609   0.077644  -1.837
## gender                     -2.632626   0.383697  -6.861
## age                         0.183372   0.038650   4.744
## raceWhite                   2.148517   0.554354   3.876
## ADI_NATRANK                 0.006228   0.008753   0.711
## noise_censusblock2020_mean  0.004776   0.073672   0.065
## time:MOCA_CATlow moca       0.085755   0.073194   1.172
## 
## Correlation of Fixed Effects:
##             (Intr) time   MOCA_m educ   gender age    racWht ADI_NA n_2020
## time        -0.020                                                        
## MOCA_CATlwm  0.090  0.168                                                 
## educ        -0.317  0.000  0.111                                          
## gender      -0.224  0.010  0.127  0.133                                   
## age         -0.510 -0.016 -0.198  0.007  0.082                            
## raceWhite   -0.118  0.018 -0.053  0.006  0.030 -0.004                     
## ADI_NATRANK -0.323 -0.001 -0.086  0.243 -0.070  0.148  0.355              
## ns_cns2020_ -0.740  0.016 -0.060  0.025  0.032 -0.084 -0.010  0.092       
## t:MOCA_CATm  0.004 -0.565 -0.222 -0.005 -0.004  0.007  0.018  0.007 -0.001

3.1 Model 2 table and estimate plot

sjPlot::plot_model(model_MOCA_classification, 
                   title="Effect of Baseline MoCA on WIN threshold")

sjPlot::tab_model(model_MOCA_classification, 
                   title = "Effect of Baseline MoCA on WIN threshold",
                   file = NULL)
Effect of Baseline MoCA on WIN threshold
  WIN_Threshold_Avg
Predictors Estimates CI p
(Intercept) 0.69 -9.10 – 10.49 0.890
time 0.43 0.35 – 0.52 <0.001
MOCA CAT [low moca] 1.30 0.52 – 2.09 0.001
educ -0.14 -0.30 – 0.01 0.067
gender -2.63 -3.39 – -1.88 <0.001
age 0.18 0.11 – 0.26 <0.001
race [White] 2.15 1.06 – 3.24 <0.001
ADI NATRANK 0.01 -0.01 – 0.02 0.477
noise censusblock2020
mean
0.00 -0.14 – 0.15 0.948
time × MOCA CAT [low
moca]
0.09 -0.06 – 0.23 0.242
Random Effects
σ2 3.02
τ00 ID 9.91
ICC 0.77
N ID 332
Observations 886
Marginal R2 / Conditional R2 0.285 / 0.833

3.2 Model 2 data vis

3.2.1 Model 2 with no adjustment

## Intercept for High MOCA: 0.6915
## Intercept for Low MOCA: 1.9952

3.2.2 Model 2 with manual adjustment at the intercept

Adjusting at the Intercept Level (Group-Level Adjustment) When we adjust at the intercept, we assume that all participants share the same average values for covariates.

The intercept is pre-adjusted using the mean values of educ, age, ADI_NATRANK, etc. The same intercept applies to everyone, so predictions are for an “average” participant in each MoCA group.

## Intercept for MOCA = high: 11.2863
## Intercept for MOCA = low: 12.5901

### Model 2 with plot_model

Plotting using a package: By default, plot_model() holds all covariates at their mean or median values and covariate coefficient estimate for categorical variables is based on the most prevalent category.

## # A tibble: 2 × 2
##   CDR_status     n
##   <fct>      <int>
## 1 cdr = 0      251
## 2 cdr > 0      122

4 Model 3 CDR_status

CDR_status was defined by the specific CDR value at baseline. There were a total 136 CDR >0 at baseline (became 122 when filtered for non-NA for other variables). Some were incidental one-off increase and majority were “sustained progression”.

model_CDR_status <- lmer(
  WIN_Threshold_Avg ~ time * CDR_status + educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID),
  data = clean_data_CDR,
  REML = FALSE
)
# View the summary of the model
summary(model_CDR_status)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: WIN_Threshold_Avg ~ time * CDR_status + educ + gender + age +  
##     race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID)
##    Data: clean_data_CDR
## 
##      AIC      BIC   logLik deviance df.resid 
##   4949.7   5009.2  -2462.9   4925.7     1032 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.0405 -0.5038 -0.0716  0.4400  4.5622 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  ID       (Intercept) 10.413   3.227   
##  Residual              2.911   1.706   
## Number of obs: 1044, groups:  ID, 373
## 
## Fixed effects:
##                             Estimate Std. Error t value
## (Intercept)                -5.811478   4.709096  -1.234
## time                        0.476691   0.029873  15.957
## CDR_statuscdr > 0           1.225474   0.398670   3.074
## educ                       -0.170846   0.077561  -2.203
## gender2                    -2.378407   0.368601  -6.453
## age                         0.196800   0.037083   5.307
## raceWhite                   1.632221   0.539349   3.026
## ADI_NATRANK                 0.009407   0.008178   1.150
## noise_censusblock2020_mean  0.072777   0.070630   1.030
## time:CDR_statuscdr > 0     -0.065040   0.118498  -0.549
## 
## Correlation of Fixed Effects:
##             (Intr) time   CDR_>0 educ   gendr2 age    racWht ADI_NA n_2020
## time        -0.026                                                        
## CDR_sttsc>0 -0.005  0.137                                                 
## educ        -0.333 -0.004  0.114                                          
## gender2     -0.154  0.012  0.035  0.166                                   
## age         -0.499  0.003 -0.084  0.001  0.080                            
## raceWhite   -0.113  0.010 -0.096  0.008  0.070  0.020                     
## ADI_NATRANK -0.319  0.015 -0.004  0.261 -0.064  0.115  0.351              
## ns_cns2020_ -0.740  0.013  0.005  0.040  0.025 -0.106 -0.034  0.087       
## tm:CDR_st>0 -0.008 -0.252 -0.187  0.021 -0.004 -0.024  0.017  0.002  0.022

4.1 Table for Model 3

Effect of Baseline CDR status on WIN threshold
  WIN_Threshold_Avg
Predictors Estimates CI p
(Intercept) -5.81 -15.05 – 3.43 0.217
time 0.48 0.42 – 0.54 <0.001
CDR status [cdr > 0] 1.23 0.44 – 2.01 0.002
educ -0.17 -0.32 – -0.02 0.028
gender [2] -2.38 -3.10 – -1.66 <0.001
age 0.20 0.12 – 0.27 <0.001
race [White] 1.63 0.57 – 2.69 0.003
ADI NATRANK 0.01 -0.01 – 0.03 0.250
noise censusblock2020
mean
0.07 -0.07 – 0.21 0.303
time × CDR status [cdr >
0]
-0.07 -0.30 – 0.17 0.583
Random Effects
σ2 2.91
τ00 ID 10.41
ICC 0.78
N ID 373
Observations 1044
Marginal R2 / Conditional R2 0.230 / 0.832

4.2 Data vis for Model 3

4.2.1 Model 3 with no adjustment at the intercept

## Intercept for CDR_0: -5.8115
## Intercept for CDR_GT0: -4.5860

4.2.2 Model 3 with adjustment at the intercept

Adjusting at the Intercept Level (Group-Level Adjustment) When we adjust at the intercept, we assume that all participants share the same average values for covariates.

The intercept is pre-adjusted using the mean values of educ, age, ADI_NATRANK, etc. The same intercept applies to everyone, so predictions are for an “average” participant in each CDR_status group.

## Intercept for CDR = 0 (holding covariates constant): 8.8340
## Intercept for CDR > 0 (holding covariates constant): 10.0595

4.2.3 Model 3 with plot_model

Plotting using a package: By default, plot_model() holds all covariates at their mean or median values and covariate coefficient estimate for categorical variables is based on the most prevalent category.

5 Model 4 First time CDR_Progression_status

CDR_Progression_status is defined based on first time progression for the entirety of follow up for each P.

model_CDR_Progression_status <- lmer(
  WIN_Threshold_Avg ~ time * CDR_Progression_status + educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID),
  data = clean_data_CDR_progression,
  REML = FALSE
)
# View the summary of the model
summary(model_CDR_Progression_status)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: WIN_Threshold_Avg ~ time * CDR_Progression_status + educ + gender +  
##     age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 |      ID)
##    Data: clean_data_CDR_progression
## 
##      AIC      BIC   logLik deviance df.resid 
##   5428.2   5488.7  -2702.1   5404.2     1130 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9341 -0.5047 -0.0670  0.4379  4.5599 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  ID       (Intercept) 10.656   3.264   
##  Residual              2.939   1.714   
## Number of obs: 1142, groups:  ID, 407
## 
## Fixed effects:
##                                         Estimate Std. Error t value
## (Intercept)                            -4.662415   4.479444  -1.041
## time                                    0.466663   0.030946  15.080
## CDR_Progression_statusProgressors       1.045262   0.365400   2.861
## educ                                   -0.126986   0.073884  -1.719
## gender2                                -2.384214   0.352601  -6.762
## age                                     0.201404   0.035639   5.651
## raceWhite                               1.717565   0.519026   3.309
## ADI_NATRANK                             0.008797   0.007971   1.104
## noise_censusblock2020_mean              0.029862   0.068017   0.439
## time:CDR_Progression_statusProgressors  0.112758   0.075258   1.498
## 
## Correlation of Fixed Effects:
##             (Intr) time   CDR_P_ educ   gendr2 age    racWht ADI_NA n_2020
## time        -0.026                                                        
## CDR_Prgrs_P -0.005  0.155                                                 
## educ        -0.328  0.002  0.087                                          
## gender2     -0.125  0.011  0.013  0.143                                   
## age         -0.491  0.006 -0.081  0.004  0.067                            
## raceWhite   -0.097  0.002 -0.120  0.001  0.056  0.003                     
## ADI_NATRANK -0.315  0.012 -0.075  0.246 -0.046  0.124  0.366              
## ns_cns2020_ -0.737  0.010  0.015  0.033  0.006 -0.122 -0.040  0.076       
## tm:CDR_Pr_P  0.004 -0.411 -0.209 -0.007 -0.015 -0.024  0.013 -0.008  0.022

5.1 Model 4 tables

Effect of CDR_Progression_status on WIN threshold
  WIN_Threshold_Avg
Predictors Estimates CI p
(Intercept) -4.66 -13.45 – 4.13 0.298
time 0.47 0.41 – 0.53 <0.001
CDR Progression status
[Progressors]
1.05 0.33 – 1.76 0.004
educ -0.13 -0.27 – 0.02 0.086
gender [2] -2.38 -3.08 – -1.69 <0.001
age 0.20 0.13 – 0.27 <0.001
race [White] 1.72 0.70 – 2.74 0.001
ADI NATRANK 0.01 -0.01 – 0.02 0.270
noise censusblock2020
mean
0.03 -0.10 – 0.16 0.661
time × CDR Progression
status [Progressors]
0.11 -0.03 – 0.26 0.134
Random Effects
σ2 2.94
τ00 ID 10.66
ICC 0.78
N ID 407
Observations 1142
Marginal R2 / Conditional R2 0.233 / 0.834

5.2 Model 4 data vis

5.2.1 Model 4 data vis with no adjustment

## Intercept for Non-Progressors: -4.6624
## Intercept for Progressors: -3.6172

5.2.2 Model 4 data vis with adjustment at the intercept

## Intercept for Non-Progressors: 8.8322
## Intercept for Progressors: 9.8775

5.2.3 Model 4 data vis with plot_model

6 Model 5 CDR sustained progression status

CDR_sustained_progression_status was defined as the presence of consecutive CDR > 0 over the follow ups.

model_CDR_Sustained_Progression_Status <- lmer(
  WIN_Threshold_Avg ~ time * CDR_sustained_progression_status + educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID),
  data = clean_data_CDR_sustained_progression_status,
  REML = FALSE
)
# View the summary of the model
summary(model_CDR_Sustained_Progression_Status)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: WIN_Threshold_Avg ~ time * CDR_sustained_progression_status +  
##     educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean +  
##     (1 | ID)
##    Data: clean_data_CDR_sustained_progression_status
## 
##      AIC      BIC   logLik deviance df.resid 
##   5437.6   5498.1  -2706.8   5413.6     1130 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9667 -0.5065 -0.0619  0.4510  4.5483 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  ID       (Intercept) 10.887   3.300   
##  Residual              2.945   1.716   
## Number of obs: 1142, groups:  ID, 407
## 
## Fixed effects:
##                                                             Estimate Std. Error
## (Intercept)                                                -4.340048   4.528421
## time                                                        0.466462   0.029613
## CDR_sustained_progression_statussustained progression       0.522022   0.616236
## educ                                                       -0.145231   0.074328
## gender2                                                    -2.384717   0.356003
## age                                                         0.205297   0.036295
## raceWhite                                                   1.872832   0.521000
## ADI_NATRANK                                                 0.010361   0.008033
## noise_censusblock2020_mean                                  0.027579   0.068707
## time:CDR_sustained_progression_statussustained progression  0.125915   0.095879
##                                                            t value
## (Intercept)                                                 -0.958
## time                                                        15.752
## CDR_sustained_progression_statussustained progression        0.847
## educ                                                        -1.954
## gender2                                                     -6.699
## age                                                          5.656
## raceWhite                                                    3.595
## ADI_NATRANK                                                  1.290
## noise_censusblock2020_mean                                   0.401
## time:CDR_sustained_progression_statussustained progression   1.313
## 
## Correlation of Fixed Effects:
##             (Intr) time   CDR__p educ   gendr2 age    racWht ADI_NA n_2020
## time        -0.026                                                        
## CDR_sstn__p  0.048  0.066                                                 
## educ        -0.327 -0.007  0.022                                          
## gender2     -0.125  0.006  0.014  0.143                                   
## age         -0.494  0.007 -0.151  0.008  0.065                            
## raceWhite   -0.101  0.019 -0.051  0.010  0.057  0.001                     
## ADI_NATRANK -0.318  0.018 -0.042  0.253 -0.046  0.124  0.362              
## ns_cns2020_ -0.734  0.014  0.036  0.032  0.006 -0.125 -0.041  0.076       
## tm:CDR_s__p  0.001 -0.309 -0.255  0.001 -0.005 -0.011 -0.004 -0.010  0.012

6.1 Model 5 tables

Effect of CDR_Progression_status on WIN threshold
  WIN_Threshold_Avg
Predictors Estimates CI p
(Intercept) -4.34 -13.23 – 4.55 0.338
time 0.47 0.41 – 0.52 <0.001
CDR sustained progression
status [sustained
progression]
0.52 -0.69 – 1.73 0.397
educ -0.15 -0.29 – 0.00 0.051
gender [2] -2.38 -3.08 – -1.69 <0.001
age 0.21 0.13 – 0.28 <0.001
race [White] 1.87 0.85 – 2.90 <0.001
ADI NATRANK 0.01 -0.01 – 0.03 0.197
noise censusblock2020
mean
0.03 -0.11 – 0.16 0.688
time × CDR sustained
progression status
[sustained progression]
0.13 -0.06 – 0.31 0.189
Random Effects
σ2 2.95
τ00 ID 10.89
ICC 0.79
N ID 407
Observations 1142
Marginal R2 / Conditional R2 0.230 / 0.836

6.2 Model 5 Data vis

6.2.1 Model 5 data vis with plot_model

6.2.2 Model 5 data vis with no adjustment

## Intercept for Non-Sustained Progressors: -4.3400
## Intercept for Sustained Progressors: -3.8180

6.2.3 Model 5 data vis with adjustment

## Intercept for Non-Sustained Progressors (adjusted): 9.2366
## Intercept for Sustained Progressors (adjusted): 9.7587

## # A tibble: 2 × 2
##   hearingaids1_baseline     n
##   <fct>                 <int>
## 1 No                      315
## 2 Yes                      75

7 Model 6 Hearing aid use status

Those who wear hearing aid at baseline declined faster in hearing impairment (as expected) based on follow up words in noise test.

model_hearingaids1_baseline <- lmer(
  WIN_Threshold_Avg ~ time * hearingaids1_baseline + educ + gender + age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 | ID),
  data = clean_data_hearingaids1_baseline,
  REML = FALSE
)
# View the summary of the model
summary(model_hearingaids1_baseline)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: WIN_Threshold_Avg ~ time * hearingaids1_baseline + educ + gender +  
##     age + race + ADI_NATRANK + noise_censusblock2020_mean + (1 |      ID)
##    Data: clean_data_hearingaids1_baseline
## 
##      AIC      BIC   logLik deviance df.resid 
##   5115.9   5176.0  -2546.0   5091.9     1090 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.9265 -0.5215 -0.0540  0.4328  4.6995 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  ID       (Intercept) 8.016    2.831   
##  Residual             2.852    1.689   
## Number of obs: 1102, groups:  ID, 390
## 
## Fixed effects:
##                               Estimate Std. Error t value
## (Intercept)                   -3.00838    4.11261  -0.732
## time                           0.42716    0.03073  13.899
## hearingaids1_baselineYes       4.09238    0.42185   9.701
## educ                          -0.11978    0.06656  -1.800
## gender2                       -1.95837    0.32318  -6.060
## age                            0.17877    0.03237   5.523
## raceWhite                      1.45641    0.46598   3.125
## ADI_NATRANK                    0.01320    0.00716   1.843
## noise_censusblock2020_mean     0.01730    0.06153   0.281
## time:hearingaids1_baselineYes  0.21365    0.07476   2.858
## 
## Correlation of Fixed Effects:
##             (Intr) time   hrn1_Y educ   gendr2 age    racWht ADI_NA n_2020
## time        -0.028                                                        
## hrngds1_bsY  0.044  0.108                                                 
## educ        -0.334 -0.010  0.065                                          
## gender2     -0.144  0.013  0.156  0.159                                   
## age         -0.499 -0.004 -0.124 -0.001  0.060                            
## raceWhite   -0.112  0.026 -0.066  0.011  0.060  0.001                     
## ADI_NATRANK -0.320  0.012  0.045  0.266 -0.040  0.099  0.346              
## ns_cns2020_ -0.746  0.023 -0.018  0.050  0.026 -0.100 -0.023  0.097       
## tm:hrngd1_Y  0.001 -0.411 -0.256  0.008 -0.008  0.016 -0.011  0.002 -0.009

7.1 Model 6 tables

Effect of hearing aid use at baseline on WIN threshold
  WIN_Threshold_Avg
Predictors Estimates CI p
(Intercept) -3.01 -11.08 – 5.06 0.465
time 0.43 0.37 – 0.49 <0.001
hearingaids1 baseline
[Yes]
4.09 3.26 – 4.92 <0.001
educ -0.12 -0.25 – 0.01 0.072
gender [2] -1.96 -2.59 – -1.32 <0.001
age 0.18 0.12 – 0.24 <0.001
race [White] 1.46 0.54 – 2.37 0.002
ADI NATRANK 0.01 -0.00 – 0.03 0.066
noise censusblock2020
mean
0.02 -0.10 – 0.14 0.779
time × hearingaids1
baseline [Yes]
0.21 0.07 – 0.36 0.004
Random Effects
σ2 2.85
τ00 ID 8.02
ICC 0.74
N ID 390
Observations 1102
Marginal R2 / Conditional R2 0.391 / 0.840

7.2 Model 6 Data vis

7.2.1 Model 6 data vis with plot_model

7.2.2 Model 6 data vis with no adjustment

# Extract fixed effects from the model
fixed_effects <- fixef(model_hearingaids1_baseline)

# Compute intercepts for hearing aid groups
intercept_no_hearingaid <- fixed_effects["(Intercept)"]  # -3.00838 (Reference group)
intercept_yes_hearingaid <- intercept_no_hearingaid + fixed_effects["hearingaids1_baselineYes"]

# Create a new data frame for predictions
new_data <- expand.grid(
  time = seq(0, 12, by = 1.5),  # Time from 0 to 12
  hearingaids1_baseline = c("No", "Yes")  # Matches factor levels
)

# Compute predictions manually
new_data <- new_data %>%
  mutate(
    predicted = case_when(
      hearingaids1_baseline == "No" ~ intercept_no_hearingaid + fixed_effects["time"] * time,
      hearingaids1_baseline == "Yes" ~ intercept_yes_hearingaid + 
                                        (fixed_effects["time"] + fixed_effects["time:hearingaids1_baselineYes"]) * time
    )
  )

# Plot using ggplot2
ggplot(new_data, aes(x = time, y = predicted, color = hearingaids1_baseline)) +
  geom_line(size = 1) +
  geom_point(size = 2) +
  theme_minimal() +
  labs(
    title = "Predicted values of WIN_Threshold_Avg by Hearing Aid Status",
    x = "Time",
    y = "WIN_Threshold_Avg",
    color = "Hearing Aid Status"
  ) +
  theme(legend.position = "top")

# Print intercepts with titles
cat(sprintf("Intercept for No Hearing Aid: %.4f\n", intercept_no_hearingaid))
## Intercept for No Hearing Aid: -3.0084
cat(sprintf("Intercept for Yes Hearing Aid: %.4f\n", intercept_yes_hearingaid))
## Intercept for Yes Hearing Aid: 1.0840

7.2.3 Model 6 data vis with adjustment at the intercept

# Extract fixed effects from the model
fixed_effects <- fixef(model_hearingaids1_baseline)

# Compute mean values for continuous covariates using the correct dataset
mean_educ  <- mean(clean_data_hearingaids1_baseline$educ, na.rm = TRUE)
mean_age   <- mean(clean_data_hearingaids1_baseline$age, na.rm = TRUE)
mean_ADI   <- mean(clean_data_hearingaids1_baseline$ADI_NATRANK, na.rm = TRUE)
mean_noise <- mean(clean_data_hearingaids1_baseline$noise_censusblock2020_mean, na.rm = TRUE)

# Compute proportion of White participants
mean_raceWhite <- mean(clean_data_hearingaids1_baseline$race == "White", na.rm = TRUE)

# Find the most common gender
most_common_gender <- as.numeric(names(sort(table(clean_data_hearingaids1_baseline$gender), decreasing = TRUE)[1]))

# Compute the covariate-adjusted base intercept for the reference group (i.e., No Hearing Aid)
intercept_no_hearingaid <- fixed_effects["(Intercept)"] +
  fixed_effects["educ"] * mean_educ +
  fixed_effects["age"] * mean_age +
  fixed_effects["ADI_NATRANK"] * mean_ADI +
  fixed_effects["noise_censusblock2020_mean"] * mean_noise +
  fixed_effects["raceWhite"] * mean_raceWhite

# Adjust for gender if the most common gender is coded as 2 (e.g., Female)
if (most_common_gender == 2) {
  intercept_no_hearingaid <- intercept_no_hearingaid + fixed_effects["gender2"]
}

# Adjust intercept for "Yes" hearing aid group
intercept_yes_hearingaid <- intercept_no_hearingaid + fixed_effects["hearingaids1_baselineYes"]

# Create a new data frame for predictions
new_data <- expand.grid(
  time = seq(0, 12, by = 1.5),
  hearingaids1_baseline = c("No", "Yes")  # Ensure factor levels match dataset
)

# Compute predictions, holding covariates constant
new_data <- new_data %>%
  mutate(
    predicted = case_when(
      hearingaids1_baseline == "No" ~ intercept_no_hearingaid + fixed_effects["time"] * time,
      hearingaids1_baseline == "Yes" ~ intercept_yes_hearingaid + 
                                        (fixed_effects["time"] + fixed_effects["time:hearingaids1_baselineYes"]) * time
    )
  )

# Plot the predicted trajectories
ggplot(new_data, aes(x = time, y = predicted, color = hearingaids1_baseline)) +
  geom_line(size = 1) +
  geom_point(size = 2) +
  theme_minimal() +
  labs(
    title = "Predicted WIN_Threshold_Avg by Hearing Aid Status",
    x = "Time (Years)",
    y = "WIN_Threshold_Avg (Higher = Worse Hearing)",
    color = "Hearing Aid Status"
  ) +
  theme(legend.position = "top")

# Print the adjusted intercepts
cat(sprintf("Intercept for No Hearing Aid (adjusted): %.4f\n", intercept_no_hearingaid))
## Intercept for No Hearing Aid (adjusted): 8.7330
cat(sprintf("Intercept for Yes Hearing Aid (adjusted): %.4f\n", intercept_yes_hearingaid))
## Intercept for Yes Hearing Aid (adjusted): 12.8254