ld-archer / E_FEM

This is the repository for the English version of the Future Elderly Model, originally developed at the Leonard D. Schaeffer Center for Health Policy and Microsimulation.
MIT License
3 stars 1 forks source link

improve functional limitations models #121

Open ld-archer opened 1 year ago

ld-archer commented 1 year ago

adlstat and iadlstat

ld-archer commented 1 year ago

ADLSTAT

MINIMAL

Call:
polr(formula = form.adlstat.min, data = trans.adlstat.complete, 
    na.action = na.omit, Hess = TRUE)

Coefficients:
                    Value Std. Error t value
male             -0.07345    0.02237  -3.284
scale(l2age65l)   0.15987    0.01683   9.500
scale(l2age6574)  0.17675    0.01636  10.804
scale(l2age75p)   0.24362    0.01111  21.936

Intercepts:
    Value    Std. Error t value 
1|2   1.6048   0.0150   106.8095
2|3   2.4600   0.0183   134.7670
3|4   3.1453   0.0227   138.7306

Residual Deviance: 72608.87 
AIC: 72622.87 

CURRENT FULL

Call:
polr(formula = form.adlstat, data = trans.adlstat.complete, na.action = na.omit, 
    Hess = TRUE)

Coefficients:
                    Value Std. Error  t value
male              0.15078    0.02377   6.3438
white            -0.05396    0.07719  -0.6991
hsless            0.34579    0.02468  14.0121
college          -0.46398    0.03885 -11.9417
scale(l2age65l)   0.13222    0.01724   7.6706
scale(l2age6574)  0.10541    0.01709   6.1668
scale(l2age75p)   0.15808    0.01174  13.4624
l2stroke          0.83925    0.04676  17.9471
l2demene          0.72275    0.13062   5.5333
l2alzhe           0.23433    0.30621   0.7652
l2osteoe          0.78229    0.03907  20.0247
l2catracte        0.24655    0.02880   8.5604
l2lnly            0.61535    0.01858  33.1175
l2sociso          0.10714    0.01083   9.8933

Intercepts:
    Value    Std. Error t value 
1|2   3.0008   0.0871    34.4692
2|3   3.8987   0.0880    44.3010
3|4   4.6104   0.0892    51.6730

Residual Deviance: 69652.86 
AIC: 69686.86 
ld-archer commented 1 year ago

NEW ADLSTAT MODEL

Call:
polr(formula = form.adlstat.test, data = trans.adlstat.complete, 
    na.action = na.omit, Hess = TRUE)

Coefficients:
                    Value Std. Error t value
male1             0.19947   0.028203   7.072
white             0.35560   0.093918   3.786
hsless1           0.10398   0.028453   3.654
college1         -0.25685   0.043310  -5.930
scale(l2age65l)   0.17605   0.019377   9.086
scale(l2age6574)  0.10177   0.019171   5.309
scale(l2age75p)   0.12935   0.013509   9.575
l2stroke          0.66853   0.052934  12.629
l2demene          0.31991   0.147535   2.168
l2osteoe          0.63960   0.043882  14.575
l2catracte        0.22628   0.032269   7.012
l2lnly            0.22525   0.023103   9.750
l2sociso          0.06313   0.013488   4.680
l2cesd            0.25411   0.006592  38.545
l2married        -0.07088   0.036872  -1.922
l2widowed        -0.25370   0.044145  -5.747
l2alcfreq         0.08803   0.005912  14.889
l2smokev          0.28192   0.027398  10.290
l2tr20           -0.02492   0.004380  -5.689
l2verbf          -0.01471   0.002258  -6.515
l2orient         -0.15020   0.023956  -6.270

Intercepts:
    Value   Std. Error t value
1|2  2.4739  0.1520    16.2769
2|3  3.4209  0.1526    22.4139
3|4  4.1523  0.1534    27.0661

Residual Deviance: 56957.72 
AIC: 57005.72 
ld-archer commented 1 year ago

IADLSTAT

MINIMAL

Call:
polr(formula = form.iadlstat.min, data = trans.adlstat.complete, 
    na.action = na.omit, Hess = TRUE)

Coefficients:
                   Value Std. Error t value
male1            -0.4381    0.02438 -17.972
scale(l2age65l)   0.1178    0.01720   6.847
scale(l2age6574)  0.1683    0.01749   9.620
scale(l2age75p)   0.3635    0.01194  30.456

Intercepts:
    Value    Std. Error t value 
1|2   1.3786   0.0152    90.4114
2|3   2.2979   0.0189   121.8917

Residual Deviance: 57829.33 
AIC: 57841.33 

FULL

Call:
polr(formula = form.iadlstat, data = trans.adlstat.complete, 
    na.action = na.omit, Hess = TRUE)

Coefficients:
                    Value Std. Error  t value
male1            -0.24434    0.02578  -9.4795
white            -0.22421    0.08286  -2.7060
hsless1           0.39176    0.02631  14.8892
college1         -0.42308    0.04140 -10.2206
scale(l2age65l)   0.08633    0.01767   4.8855
scale(l2age6574)  0.08793    0.01836   4.7884
scale(l2age75p)   0.29006    0.01266  22.9164
l2stroke          0.88063    0.05296  16.6284
l2demene          1.81877    0.15267  11.9129
l2alzhe           0.32237    0.44921   0.7176
l2osteoe          0.77297    0.04214  18.3414
l2catracte        0.26561    0.03109   8.5446
l2lnly            0.63754    0.01995  31.9551
l2sociso          0.11748    0.01164  10.0896

Intercepts:
    Value    Std. Error t value 
1|2   2.6706   0.0931    28.6704
2|3   3.6460   0.0942    38.7074

Residual Deviance: 54941.98 
AIC: 54973.98 

Not much better than the minimal here. First try the variables for adlstat.

TEST

Call:
polr(formula = form.iadlstat.test, data = trans.adlstat.complete, 
    na.action = na.omit, Hess = TRUE)

Coefficients:
                    Value Std. Error t value
male1            -0.18779   0.028246  -6.649
white             0.19249   0.087463   2.201
hsless1           0.11710   0.028059   4.173
college1         -0.19387   0.042852  -4.524
scale(l2age65l)   0.10475   0.018259   5.737
scale(l2age6574)  0.06249   0.019115   3.269
scale(l2age75p)   0.25638   0.013397  19.137
l2stroke          0.71522   0.054308  13.170
l2demene          1.51484   0.149865  10.108
l2osteoe          0.64856   0.043141  15.033
l2catracte        0.25180   0.031829   7.911
l2lnly            0.22718   0.022802   9.963
l2sociso          0.06503   0.013405   4.851
l2cesd            0.24986   0.006530  38.264
l2married        -0.07061   0.036595  -1.930
l2widowed        -0.09897   0.043007  -2.301
l2alcfreq         0.09799   0.005850  16.749
l2smokev          0.24002   0.026811   8.952
l2tr20           -0.03788   0.004325  -8.758
l2verbf          -0.01937   0.002249  -8.614
l2orient         -0.23852   0.023613 -10.101

Intercepts:
    Value    Std. Error t value 
1|2   1.5627   0.1473    10.6054
2|3   2.5924   0.1478    17.5368

Residual Deviance: 52463.73 
AIC: 52509.73 

Happy enough.

ld-archer commented 1 year ago

Final step is to add in the cognitive score variables to the model and fit a model for each. Will use the same predictors for all to save time.

ld-archer commented 1 year ago

Total Word Recall (TR20)

MINIMAL

Call:
lm(formula = form.tr20.min, data = trans.notDead, na.action = na.omit)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.8418  -2.0782   0.1195   2.2348  11.9578 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      10.63778    0.01728  615.72   <2e-16 ***
male1            -0.71416    0.02620  -27.26   <2e-16 ***
scale(l2age65l)  -0.20722    0.01632  -12.70   <2e-16 ***
scale(l2age6574) -0.86352    0.01955  -44.17   <2e-16 ***
scale(l2age75p)  -0.87997    0.01768  -49.76   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.358 on 67225 degrees of freedom
  (17207 observations deleted due to missingness)
Multiple R-squared:  0.1926,    Adjusted R-squared:  0.1925 
F-statistic:  4009 on 4 and 67225 DF,  p-value: < 2.2e-16

FIRST TEST

Call:
lm(formula = form.tr20, data = trans.notDead, na.action = na.omit)

Residuals:
    Min      1Q  Median      3Q     Max 
-13.623  -2.033   0.153   2.155  11.296 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)       9.08012    0.07365  123.29   <2e-16 ***
male1            -0.96817    0.02514  -38.51   <2e-16 ***
white             2.01643    0.07240   27.85   <2e-16 ***
hsless1          -1.67254    0.02884  -57.99   <2e-16 ***
college1          1.28525    0.03475   36.98   <2e-16 ***
scale(l2age65l)  -0.16666    0.01556  -10.71   <2e-16 ***
scale(l2age6574) -0.71456    0.01869  -38.22   <2e-16 ***
scale(l2age75p)  -0.82379    0.01684  -48.91   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.194 on 67221 degrees of freedom
  (17208 observations deleted due to missingness)
Multiple R-squared:  0.2697,    Adjusted R-squared:  0.2696 
F-statistic:  3546 on 7 and 67221 DF,  p-value: < 2.2e-16
ld-archer commented 1 year ago

Found this study that uses machine learning on ELSA - Ahmadzadeh et al. (2023)

NEW MODEL

Call:
lm(formula = form.tr20.test, data = trans.notDead, na.action = na.omit)

Residuals:
    Min      1Q  Median      3Q     Max 
-13.956  -1.951   0.124   2.109  11.240 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      10.411752   0.098328 105.888  < 2e-16 ***
male1            -1.023308   0.026110 -39.192  < 2e-16 ***
white             1.740516   0.075391  23.086  < 2e-16 ***
hsless1          -1.418525   0.029640 -47.859  < 2e-16 ***
college1          1.127947   0.035068  32.165  < 2e-16 ***
scale(l2age65l)  -0.168168   0.017106  -9.831  < 2e-16 ***
scale(l2age6574) -0.723499   0.020307 -35.628  < 2e-16 ***
scale(l2age75p)  -0.749246   0.017245 -43.446  < 2e-16 ***
l2hearing        -0.103211   0.012208  -8.455  < 2e-16 ***
l2sight          -0.128511   0.013918  -9.233  < 2e-16 ***
l2adlstat        -0.091436   0.022283  -4.103 4.08e-05 ***
l2iadlstat       -0.337685   0.028064 -12.033  < 2e-16 ***
l2cesd           -0.101329   0.007278 -13.923  < 2e-16 ***
l2smoken         -0.415386   0.037615 -11.043  < 2e-16 ***
l2employed1       0.348560   0.044238   7.879 3.34e-15 ***
l2retired         0.321511   0.043801   7.340 2.16e-13 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.126 on 63771 degrees of freedom
  (20650 observations deleted due to missingness)
Multiple R-squared:  0.2884,    Adjusted R-squared:  0.2882 
F-statistic:  1723 on 15 and 63771 DF,  p-value: < 2.2e-16

Fine for me.