knitr::opts_chunk$set(echo=TRUE, warning=FALSE, message=FALSE)Sophia’s Analysis
Description
This analysis uses logistic regression to evaluate the association between those NACC participants that began taking medication for cardiovascular disease (CVD) during the first five years of follow-up and either had normal cognition at baseline and were diagnosed with Mild Cognitive Impairment (MCI) or remained with no diagnosis of MCI or dementia. We examine two medications, beta-blockers and statins, and define seven ordinal categories (0-7) for the visit of their first captured prescription: never prescribed; baseline; year 1 follow-up; year 2 follow-up; year 3 follow-up; year 4 follow-up; and year 5 follow-up. We examine each medication as separate models, and include any prior history of CVD prior to enrollment.
Data
First we need to find the first time a medication was prescribed (if it was).
library(dplyr)
cvd.med <-read.csv("cvd_med_long_dat.csv")
beta.blockers <-read.csv("beta_nacc_dat.csv")
statin <- read.csv("statin_nacc_dat.csv")
statin <-rename(statin, statin_start='beta_start')Methods
Regression models are of the form:
\(logit(y) = \beta_0 + \beta_1(start) +\beta_2(history) + \beta_3(history*start) +\epsilon\)
The \(\beta_3(group*start)\) is called an “interaction” and it tests whether there is a difference between the start of treatment and the group (MCI/No MCI); \(y\) is measuring the probability of never transitioning to MCI. The coefficients from this type of modeling are on the log odds scale, positive values mean that the probability is greater in the no MCI group.
The hypothesis is
\(H_0: \beta_3= 0\)
\(H_a: \beta_3 \ne 0\)
I am viewing this hypothesis as a test for whether or not there is an association between MCI/No MCI and when a participant started a drug for CVD, and whether this relationship is moderated by prior history of CVD.
Results
Exploratory Tables
Most prescriptions were in the first year of follow-up, in both the MCI and no MCI groups. There were few prescriptions for beta-blockers in those without a history of CVD, with 62% of MCI and 71% of no MCI (47% and 59%, respectively, in those with no prior history of CVD). Over half of participants did receive a prescription for a statin medication over the 5-year follow-up period, 60% of those that transitioned to MCI and 55% of those that did not transition; most of these prescriptions were given in the first year of follow-up (41% and 37%, respectively). Interestingly, in all cases, prescription rates were higher in those without a history of CVD.
library(knitr)
### How many MCI versus Non MCI had a history of CVD?
prop.table(xtabs( ~ cvd + group, data=beta.blockers), margin=2) group
cvd MCI Normal cognition
CVD Hx 0.3563941 0.2482370
No CVD Hx 0.6436059 0.7517630
### Beta-Blockers
with.hx <-xtabs(~ group +beta_start + cvd, data=beta.blockers)
prop.table(with.hx, margin=1), , cvd = CVD Hx
beta_start
group 0 1 2 3 4
MCI 0.150943396 0.140461216 0.018867925 0.014675052 0.016771488
Normal cognition 0.118476728 0.087447109 0.011753644 0.007992478 0.009402915
beta_start
group 5 6
MCI 0.008385744 0.006289308
Normal cognition 0.006111895 0.007052186
, , cvd = No CVD Hx
beta_start
group 0 1 2 3 4
MCI 0.467505241 0.088050314 0.027253669 0.012578616 0.016771488
Normal cognition 0.586741890 0.083685943 0.016925247 0.014574518 0.018805830
beta_start
group 5 6
MCI 0.018867925 0.012578616
Normal cognition 0.016455101 0.014574518
### This table averages across CVD hisory
without.hx <-xtabs(~ group +beta_start, data=beta.blockers)
prop.table(without.hx, margin=1) beta_start
group 0 1 2 3 4
MCI 0.61844864 0.22851153 0.04612159 0.02725367 0.03354298
Normal cognition 0.70521862 0.17113305 0.02867889 0.02256700 0.02820874
beta_start
group 5 6
MCI 0.02725367 0.01886792
Normal cognition 0.02256700 0.02162670
### STATINS
with.hx.statin <-xtabs(~ group +statin_start + cvd, data=statin)
prop.table(with.hx.statin, margin=1), , cvd = CVD Hx
statin_start
group 0 1 2 3 4
MCI 0.092243187 0.190775681 0.035639413 0.018867925 0.012578616
Normal cognition 0.065350259 0.136342266 0.017865538 0.012693935 0.007522332
statin_start
group 5 6
MCI 0.002096436 0.004192872
Normal cognition 0.003291020 0.005171603
, , cvd = No CVD Hx
statin_start
group 0 1 2 3 4
MCI 0.306079665 0.220125786 0.041928721 0.012578616 0.033542977
Normal cognition 0.387400094 0.236953456 0.040432534 0.034320639 0.020216267
statin_start
group 5 6
MCI 0.018867925 0.010482180
Normal cognition 0.019275976 0.013164081
### This table averages across CVD history
without.hx.statin <-xtabs(~ group +statin_start, data=statin)
prop.table(without.hx.statin, margin=1) statin_start
group 0 1 2 3 4
MCI 0.39832285 0.41090147 0.07756813 0.03144654 0.04612159
Normal cognition 0.45275035 0.37329572 0.05829807 0.04701457 0.02773860
statin_start
group 5 6
MCI 0.02096436 0.01467505
Normal cognition 0.02256700 0.01833568
Logistic Regression Analysis of Beta-Blockers
The analysis of variance shows that history of CVD doesn’t moderate the association between starting beta-blockers (p=0.9471). We remove the interaction and test the history of CVD and time of starting a beta-blocker prescription, and the only variable that is statistically significant is history of CVD (higher CVD history in MCI group, p=0.0002).
library(rms)
library(lsmeans)
beta.blockers$started_betablockers <- factor(beta.blockers$beta_start)
dd <- datadist(beta.blockers); options(datadist='dd')
Full.Beta <- lrm(group ~ cvd +started_betablockers + cvd*started_betablockers, data=beta.blockers)
Reduced.Beta <- lrm(group ~ cvd +started_betablockers, data=beta.blockers, x=TRUE, y=TRUE)
anova(Full.Beta) Wald Statistics Response: group
Factor Chi-Square d.f.
cvd (Factor+Higher Order Factors) 16.09 7
All Interactions 1.67 6
started_betablockers (Factor+Higher Order Factors) 9.48 12
All Interactions 1.67 6
cvd * started_betablockers (Factor+Higher Order Factors) 1.67 6
TOTAL 32.16 13
P
0.0243
0.9471
0.6613
0.9471
0.9471
0.0023
anova(Reduced.Beta) Wald Statistics Response: group
Factor Chi-Square d.f. P
cvd 14.32 1 0.0002
started_betablockers 7.60 6 0.2693
TOTAL 30.48 7 0.0001
Reduced.BetaLogistic Regression Model
lrm(formula = group ~ cvd + started_betablockers, data = beta.blockers,
x = TRUE, y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 2604 LR chi2 29.59 R2 0.018 C 0.571
MCI 477 d.f. 7 R2(7,2604)0.009 Dxy 0.143
Normal cognition2127 Pr(> chi2) 0.0001 R2(7,1168.9)0.019 gamma 0.208
max |deriv| 8e-13 Brier 0.148 tau-a 0.043
Coef S.E. Wald Z Pr(>|Z|)
Intercept 1.2809 0.1093 11.72 <0.0001
cvd=No CVD Hx 0.4330 0.1144 3.78 0.0002
started_betablockers=1 -0.2639 0.1337 -1.97 0.0484
started_betablockers=2 -0.5061 0.2592 -1.95 0.0509
started_betablockers=3 -0.2245 0.3214 -0.70 0.4849
started_betablockers=4 -0.2200 0.2905 -0.76 0.4489
started_betablockers=5 -0.2762 0.3204 -0.86 0.3887
started_betablockers=6 0.0733 0.3716 0.20 0.8437
plot(Predict(Reduced.Beta, started_betablockers))Logistic Regression Analysis of Statins
Similar to the beta-blocker analysis the shows that history of CVD doesn’t moderate the association between starting beta-blockers (p=0.5649). We remove the interaction and test the history of CVD and time of starting a beta-blocker prescription, and the only variable that is statistically significant is history of CVD (higher CVD history in MCI group, < 0.0001).
statin$started_statins <- factor(statin$statin_start)
statin$y <- ifelse(statin$group=="MCI", 1, 0)
dd <- datadist(statin); options(datadist='dd')
Full.Statin <- lrm(group ~ cvd + started_statins + cvd*started_statins , data=statin)
Reduced.Statin <- lrm(group ~ cvd + started_statins , data=statin, x=TRUE, y=TRUE)
anova(Reduced.Statin) Wald Statistics Response: group
Factor Chi-Square d.f. P
cvd 19.32 1 <.0001
started_statins 9.52 6 0.1462
TOTAL 32.23 7 <.0001
anova(Full.Statin) Wald Statistics Response: group
Factor Chi-Square d.f. P
cvd (Factor+Higher Order Factors) 24.36 7 0.0010
All Interactions 4.84 6 0.5649
started_statins (Factor+Higher Order Factors) 13.73 12 0.3185
All Interactions 4.84 6 0.5649
cvd * started_statins (Factor+Higher Order Factors) 4.84 6 0.5649
TOTAL 35.70 13 0.0007
anova(Reduced.Statin) Wald Statistics Response: group
Factor Chi-Square d.f. P
cvd 19.32 1 <.0001
started_statins 9.52 6 0.1462
TOTAL 32.23 7 <.0001
Reduced.StatinLogistic Regression Model
lrm(formula = group ~ cvd + started_statins, data = statin, x = TRUE,
y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 2604 LR chi2 31.62 R2 0.020 C 0.578
MCI 477 d.f. 7 R2(7,2604)0.009 Dxy 0.155
Normal cognition2127 Pr(> chi2) <0.0001 R2(7,1168.9)0.021 gamma 0.196
max |deriv| 9e-12 Brier 0.148 tau-a 0.047
Coef S.E. Wald Z Pr(>|Z|)
Intercept 1.2208 0.1194 10.23 <0.0001
cvd=No CVD Hx 0.4912 0.1118 4.39 <0.0001
started_statins=1 -0.1067 0.1164 -0.92 0.3591
started_statins=2 -0.3203 0.2056 -1.56 0.1193
started_statins=3 0.3585 0.2898 1.24 0.2160
started_statins=4 -0.5816 0.2637 -2.21 0.0274
started_statins=5 -0.0661 0.3575 -0.18 0.8533
started_statins=6 0.1618 0.4199 0.39 0.7000
plot(Predict(Reduced.Statin, started_statins ))Multiple Regression Analysis
For these analyses we include variables from the descriptive analysis (Table 1) and show that history of CVD, BMI, sex, and age are all statistically associated with transition to MCI in those with a prescription for either beta-blockers or statins (those without a prescription were removed from the analyses). History of CVD disease, and increased BMI were associated with higher probability of MCI transition, as was being female. Those that transitioned were younger than those that did not transition to MCI, adjusting for all the other demographic variables.
only.starters.bb <- subset(beta.blockers, started_betablockers != "0")
only.starters.statin <- subset(statin, started_statins != "0")
multiple.betablocker <- lrm(group ~ cvd + SEX + NACCBMI + NACCAGE, data=only.starters.bb, x=TRUE, y=TRUE)
multiple.betablockerFrequencies of Missing Values Due to Each Variable
group cvd SEX NACCBMI NACCAGE
0 0 0 37 22
Logistic Regression Model
lrm(formula = group ~ cvd + SEX + NACCBMI + NACCAGE, data = only.starters.bb,
x = TRUE, y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 753 LR chi2 31.11 R2 0.063 C 0.642
MCI 159 d.f. 4 R2(4,753)0.035 Dxy 0.284
Normal cognition594 Pr(> chi2) <0.0001 R2(4,376.3)0.070 gamma 0.284
max |deriv| 8e-08 Brier 0.160 tau-a 0.095
Coef S.E. Wald Z Pr(>|Z|)
Intercept 2.1623 1.1927 1.81 0.0698
cvd=No CVD Hx 0.4113 0.1863 2.21 0.0272
SEX=Male -0.6630 0.1848 -3.59 0.0003
NACCBMI 0.0426 0.0203 2.10 0.0358
NACCAGE -0.0253 0.0120 -2.11 0.0345
plot(anova(multiple.betablocker), main="Beta-Blockers")multiple.statin <- lrm(group ~ cvd + SEX + NACCBMI + NACCAGE, data=only.starters.statin, x=TRUE, y=TRUE)
multiple.statinFrequencies of Missing Values Due to Each Variable
group cvd SEX NACCBMI NACCAGE
0 0 0 53 10
Logistic Regression Model
lrm(formula = group ~ cvd + SEX + NACCBMI + NACCAGE, data = only.starters.statin,
x = TRUE, y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 1389 LR chi2 67.19 R2 0.075 C 0.658
MCI 269 d.f. 4 R2(4,1389)0.044 Dxy 0.317
Normal cognition1120 Pr(> chi2) <0.0001 R2(4,650.7)0.093 gamma 0.317
max |deriv| 1e-06 Brier 0.148 tau-a 0.099
Coef S.E. Wald Z Pr(>|Z|)
Intercept 3.9113 0.9123 4.29 <0.0001
cvd=No CVD Hx 0.3031 0.1455 2.08 0.0373
SEX=Male -0.5230 0.1412 -3.70 0.0002
NACCBMI 0.0418 0.0158 2.65 0.0080
NACCAGE -0.0481 0.0094 -5.14 <0.0001
plot(anova(multiple.statin), main="Statins")