Kaplan-Meier survival curves were generated to examine differences in time to CDR progression (CDR > 0) based on hearing-related groups.
Hearing Impairment (WIN_CAT_baseline): Impaired hearing had a significantly faster progression rate compared to normal hearing (p = 0.03).
Hearing Handicap (hhi_category_baseline): No significant difference between those with and without hearing handicap (p = 0.30).
Hearing Aid Use (hearingaids1_baseline): No significant difference in cognitive decline progression between hearing aid users and non-users (p = 0.90).
Conclusion: Hearing impairment was significantly associated with cognitive decline progression, but hearing aid use and self-reported hearing handicap were not.
#Cox Proportional Hazards Model - Covariates Controlled: Age, Gender, Education, Race - Key Results: -Hearing Impairment (WIN Category) HR = 0.81 (p = 0.17) → No significant increased risk when adjusting for covariates. -HHI Handicap HR = 1.11 (p = 0.50) → No significant association with progression risk. -Hearing Aid Use HR = 0.96 (p = 0.86) → No protective effect of hearing aids. -Age & Education Older age and lower education levels were borderline significant predictors of faster progression.
Conclusion: While raw Kaplan-Meier analysis suggested hearing impairment predicts cognitive decline, adjusting for covariates in the Cox model attenuated this effect.
Note: 27 participant’s follow up dates were manually shifted as they were missing baseline otdate but having followup otdates.Their corresponding cdr values were shifted accordingly as well.
There are 192 missing HHI at baseline, 89 were imputed from FU-1 data and 83 were imputed from FU-3. There are 218 missing Words in noise average, Whenever one ear value is found it was used as the average for both. In addition, 28 for Rt ear and 103 for the left ear were imputed from their corresponding FU-1 value.
NOTE: time to progression calculation
## # A tibble: 2 × 3
## WIN_CAT_baseline `Non-progressors` Progressors
## <chr> <int> <int>
## 1 Impaired hearing 133 95
## 2 Normal hearing 207 104
# Fit Kaplan-Meier survival model
km_WIN <- survfit(
Surv(time_to_progression_or_last_days, Censor_status) ~ WIN_CAT_baseline, # Convert time to years
data = Kaplan_wide_survival_final_matched_censor
)
# Plot survival curves with enhanced styling
ggsurvplot(
km_WIN,
data = Kaplan_wide_survival_final_matched_censor,
conf.int = TRUE, # Show 95% confidence intervals
pval = TRUE, # Display log-rank test p-value
risk.table = TRUE, # Add risk table below the plot
risk.table.height = 0.3, # Adjust risk table size
break.time.by = 4, # X-axis breaks in yearly intervals
xlim = c(0, 12), # Set X-axis range to 12 years
ylim = c(0.5, 1), # Adjust Y-axis range for better visualization
title = "Survival Curve for Progression",
xlab = "Survival Time (Years)",
ylab = "Survival Probability",
legend.title = "Hearing Impairment",
legend.labs = c("Impaired Hearing", "Normal Hearing"),
ggtheme = theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14, colour = "#2C3E50"),
axis.title.x = element_text(face = "bold", colour = "#E67E22", size = 10),
axis.title.y = element_text(face = "bold", colour = "#E67E22", size = 10),
legend.title = element_text(face = "bold", size = 10),
legend.position = "top"
)
)
## P value for curve 1
## Call:
## survdiff(formula = Surv(time_to_progression_or_last_days, Censor_status) ~
## WIN_CAT_baseline, data = Kaplan_wide_survival_final_matched_censor)
##
## n=539, 69 observations deleted due to missingness.
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## WIN_CAT_baseline=Impaired hearing 228 95 81.3 2.33 4.71
## WIN_CAT_baseline=Normal hearing 311 103 116.7 1.62 4.71
##
## Chisq= 4.7 on 1 degrees of freedom, p= 0.03
## # A tibble: 2 × 3
## hhi_category_baseline `Non-progressors` Progressors
## <fct> <int> <int>
## 1 No Handicap 281 154
## 2 Handicap 94 60
## P value for curve 2
## Call:
## survdiff(formula = Surv(time_to_progression_or_last_days, Censor_status) ~
## hhi_category_baseline, data = Kaplan_wide_survival_final_matched_censor)
##
## n=589, 19 observations deleted due to missingness.
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## hhi_category_baseline=No Handicap 435 153 158.7 0.208 0.969
## hhi_category_baseline=Handicap 154 60 54.3 0.609 0.969
##
## Chisq= 1 on 1 degrees of freedom, p= 0.3
## # A tibble: 2 × 3
## hearingaids1_baseline `Non-progressors` Progressors
## <dbl> <int> <int>
## 1 0 155 137
## 2 1 42 36
## Call:
## survdiff(formula = Surv(time_to_progression_or_last_days, Censor_status) ~
## hearingaids1_baseline, data = Kaplan_wide_survival_final_matched_censor)
##
## n=370, 238 observations deleted due to missingness.
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## hearingaids1_baseline=0 292 137 136.3 0.00332 0.021
## hearingaids1_baseline=1 78 36 36.7 0.01233 0.021
##
## Chisq= 0 on 1 degrees of freedom, p= 0.9
cox_WIN_adj <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
WIN_CAT_baseline + age + gender + educ + race + ADI_NATRANK ,
data = Kaplan_wide_survival_final_matched_cox
)
summary(cox_WIN_adj) # Adjusted Model for WIN Category## Call:
## coxph(formula = Surv(time_to_progression_or_last_days, Censor_status) ~
## WIN_CAT_baseline + age + gender + educ + race + ADI_NATRANK,
## data = Kaplan_wide_survival_final_matched_cox)
##
## n= 520, number of events= 192
## (88 observations deleted due to missingness)
##
## coef exp(coef) se(coef) z Pr(>|z|)
## WIN_CAT_baselineNormal hearing -0.212710 0.808391 0.156054 -1.363 0.1729
## age 0.027905 1.028298 0.014922 1.870 0.0615 .
## gender -0.053654 0.947760 0.151780 -0.353 0.7237
## educ -0.057867 0.943775 0.030442 -1.901 0.0573 .
## raceWhite 0.356583 1.428441 0.239253 1.490 0.1361
## ADI_NATRANK 0.007726 1.007756 0.003406 2.268 0.0233 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## WIN_CAT_baselineNormal hearing 0.8084 1.2370 0.5954 1.098
## age 1.0283 0.9725 0.9987 1.059
## gender 0.9478 1.0551 0.7039 1.276
## educ 0.9438 1.0596 0.8891 1.002
## raceWhite 1.4284 0.7001 0.8937 2.283
## ADI_NATRANK 1.0078 0.9923 1.0011 1.015
##
## Concordance= 0.593 (se = 0.025 )
## Likelihood ratio test= 18.55 on 6 df, p=0.005
## Wald test = 18.42 on 6 df, p=0.005
## Score (logrank) test = 18.55 on 6 df, p=0.005
cox_HHI_adj <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
hhi_category_baseline + gender + race + educ + ADI_NATRANK +
age,
data = Kaplan_wide_survival_final_matched_cox
)
summary(cox_HHI_adj) # Adjusted Model for HHI Category## Call:
## coxph(formula = Surv(time_to_progression_or_last_days, Censor_status) ~
## hhi_category_baseline + gender + race + educ + ADI_NATRANK +
## age, data = Kaplan_wide_survival_final_matched_cox)
##
## n= 562, number of events= 202
## (46 observations deleted due to missingness)
##
## coef exp(coef) se(coef) z Pr(>|z|)
## hhi_category_baselineHandicap 0.107479 1.113467 0.159774 0.673 0.5011
## gender -0.062726 0.939201 0.145082 -0.432 0.6655
## raceWhite 0.326607 1.386256 0.234657 1.392 0.1640
## educ -0.045112 0.955890 0.029694 -1.519 0.1287
## ADI_NATRANK 0.008457 1.008493 0.003302 2.561 0.0104 *
## age 0.036054 1.036712 0.014380 2.507 0.0122 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## hhi_category_baselineHandicap 1.1135 0.8981 0.8141 1.523
## gender 0.9392 1.0647 0.7067 1.248
## raceWhite 1.3863 0.7214 0.8752 2.196
## educ 0.9559 1.0461 0.9018 1.013
## ADI_NATRANK 1.0085 0.9916 1.0020 1.015
## age 1.0367 0.9646 1.0079 1.066
##
## Concordance= 0.584 (se = 0.024 )
## Likelihood ratio test= 16.51 on 6 df, p=0.01
## Wald test = 16.46 on 6 df, p=0.01
## Score (logrank) test = 16.52 on 6 df, p=0.01
cox_hearingaids_adj <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
hearingaids1_baseline + gender + race + educ + ADI_NATRANK +
age,
data = Kaplan_wide_survival_final_matched_cox
)
summary(cox_hearingaids_adj) # Adjusted Model for Hearing Aids## Call:
## coxph(formula = Surv(time_to_progression_or_last_days, Censor_status) ~
## hearingaids1_baseline + gender + race + educ + ADI_NATRANK +
## age, data = Kaplan_wide_survival_final_matched_cox)
##
## n= 359, number of events= 164
## (249 observations deleted due to missingness)
##
## coef exp(coef) se(coef) z Pr(>|z|)
## hearingaids1_baseline -0.036021 0.964620 0.201700 -0.179 0.8583
## gender -0.052555 0.948802 0.166706 -0.315 0.7526
## raceWhite 0.196657 1.217327 0.262219 0.750 0.4533
## educ -0.060768 0.941042 0.034237 -1.775 0.0759 .
## ADI_NATRANK 0.003370 1.003375 0.003682 0.915 0.3601
## age 0.026260 1.026608 0.016336 1.607 0.1080
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## hearingaids1_baseline 0.9646 1.0367 0.6496 1.432
## gender 0.9488 1.0540 0.6843 1.315
## raceWhite 1.2173 0.8215 0.7281 2.035
## educ 0.9410 1.0627 0.8800 1.006
## ADI_NATRANK 1.0034 0.9966 0.9962 1.011
## age 1.0266 0.9741 0.9943 1.060
##
## Concordance= 0.567 (se = 0.028 )
## Likelihood ratio test= 7.04 on 6 df, p=0.3
## Wald test = 7.07 on 6 df, p=0.3
## Score (logrank) test = 7.08 on 6 df, p=0.3
Proportional Hazards (PH) Assumption violation for ADI and race
cox_win <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
WIN_CAT_baseline + age + gender + educ + race + ADI_NATRANK,
data = Kaplan_wide_survival_final_matched_cox
)
# Test PH assumption
ph_test_win <- cox.zph(cox_win)
print(ph_test_win)## chisq df p
## WIN_CAT_baseline 2.1886 1 0.1390
## age 0.1479 1 0.7005
## gender 0.0507 1 0.8218
## educ 0.1234 1 0.7253
## race 3.6918 1 0.0547
## ADI_NATRANK 6.8861 1 0.0087
## GLOBAL 11.0091 6 0.0881
No Violation of Proportional Hazards (PH) Assumption
cox_win <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
WIN_CAT_baseline + age + gender + educ ,
data = Kaplan_wide_survival_final_matched_cox
)
# Test PH assumption
ph_test_win <- cox.zph(cox_win)
print(ph_test_win)## chisq df p
## WIN_CAT_baseline 2.378 1 0.12
## age 0.135 1 0.71
## gender 0.132 1 0.72
## educ 0.128 1 0.72
## GLOBAL 3.158 4 0.53
cox_hhi <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
hhi_category_baseline + age + gender + educ + race + ADI_NATRANK,
data = Kaplan_wide_survival_final_matched_cox
)
# Test PH assumption
ph_test_hhi <- cox.zph(cox_hhi)
print(ph_test_hhi)## chisq df p
## hhi_category_baseline 0.73951 1 0.3898
## age 0.41008 1 0.5219
## gender 0.00531 1 0.9419
## educ 1.15252 1 0.2830
## race 5.22587 1 0.0223
## ADI_NATRANK 8.38129 1 0.0038
## GLOBAL 13.45042 6 0.0364
cox_hearingaids <- coxph(
Surv(time_to_progression_or_last_days, Censor_status) ~
hearingaids1_baseline + age + gender + educ + race + ADI_NATRANK,
data = Kaplan_wide_survival_final_matched_cox
)
# Test PH assumption
ph_test_hearingaids <- cox.zph(cox_hearingaids)
print(ph_test_hearingaids)## chisq df p
## hearingaids1_baseline 0.803508 1 0.370
## age 0.000887 1 0.976
## gender 2.404589 1 0.121
## educ 0.079334 1 0.778
## race 2.247679 1 0.134
## ADI_NATRANK 4.298750 1 0.038
## GLOBAL 7.114579 6 0.310