1: RUNNING HECKMAN SELECTION MODEL /*Load Data for 499k individuals*/ /*Drop if not in 150038 with all but SES information /* - See Selection 4 in the Excel Spreadsheet */ tab instud drop if instud==0 sort personid /********************** FOR FEMALE*****************************/ merge personid using "DATA SET HERE" tab _merg drop if _merg==1 /*********************************/ /********************** FOR MALE*******************************/ merge personid using "DATA SET HERE" tab _merg drop if _merg==1 /*********************************/ /*using age in 1992 because not all individuals have a baseline age*/ gen age1992use=. foreach yr of numlist 1992/2009 { replace age1992use=age`yr'- (`yr'-1992) if (age1992use==. & age`yr'!=.) } /*Changing individuals missing both SES measures to instud=0*/ replace instud=0 if instud==1 & (maxmissses==1 | missnpses_bc==1) /* Variables included in Heckman selection model */ /* Age in 1992 (age1992use) */ /* Born in Utah(bornut) */ /* Median family income (inc) */ /* County level population (pop) */ /* Missing census information (misscen) */ /* LDS status (activeelds inactivelds) */ /*Generate Rndom Y*/ gen y=5+2.5*uniform() drop if sex==1 /*Female*/ heckman y age1992use, select(instud=age1992use bornut inc pop misscen activelds inactivelds) twostep mills(IMR) outsheet SAVE OUTFILE HERE /*Repeat and drop female*/ drop if sex==2 /*Male*/ heckman y age1992use, select(instud=age1992use bornut inc pop misscen activelds inactivelds) twostep mills(IMR) outsheet SAVE OUTFILE HERE 2: RUNNING TRAJECTORY MODELS FOR FEMALES AND MALES use "BRING UP DATA HERE" ***50% random sample*** count set seed 1019145 sample 50 count /*DROPPING AGES 106+ */ drop devPCH41 - devPCH47 drop ind41 devUNW47 count if age1>=106 drop if age1>=106 * Creating variable for missing at random *drop misatran gen misatran=1 replace misatran=0 if dyr >= 1993 & dyr <= 2009 traj, var(devUNW*) indep(ind*) model(zip) order(2 2 2 2) dropout(0 0 0 0) obsmar(misatran) dcov(ind1 ind1 ind2 ind3 ind4 ind5 ind6 ind7 ind8 ind9 ind10 ind11 ind12 ind13 ind14 ind15 ind16 ind17 ind18 ind19 ind20 ind21 ind22 ind23 ind24 ind25 ind26 ind27 ind28 ind29 ind30 ind31 ind32 ind33 ind34 ind35 ind36 ind37 ind38 ind39) trajplot, xtitle ("Age Scaled") ytitle("Charlson Score") ci trajplot, dropout xtitle ("Age Scaled") ytitle("Probability of death") tab _traj_Group matrix list e(groupSize1) sum _traj_ProbG1 if _traj_Group==1 sum _traj_ProbG2 if _traj_Group==2 sum _traj_ProbG3 if _traj_Group==3 sum _traj_ProbG4 if _traj_Group==4 matrix list e(plot1) save "NAME OUTFILE HERE” 3. RUNNING ORDERED GLLAMM MODELS FOR FEMALES AND MALES insheet using "HECKMAN DATA HERE" keep personid imr instud sort personid save "OUTFILE HERE" clear use "BRING UP DATA HERE" sort personid merge personid using "MERGE WITH HECKMAN DATA HERE" drop if _merge==2 ** CREATING SES CATEGORIES gen bcq1_v2=0 replace bcq1_v2=1 if farmernpses_bc==0 & missnpses_bc==0 & maxnpses_bc<43 gen bcq2_v2=0 replace bcq2_v2=1 if farmernpses_bc==0 & missnpses_bc==0 & maxnpses_bc>=43 & maxnpses_bc<66 gen bcq3_v2=0 replace bcq3_v2=1 if farmernpses_bc==0 & missnpses_bc==0 & maxnpses_bc>=66 & maxnpses_bc<79 gen bcq4_v2=0 replace bcq4_v2=1 if farmernpses_bc==0 & missnpses_bc==0 & maxnpses_bc>=79 **END HHEdit drop if ownsesquart==0 drop if pasesquart==0 gen ownocc_lo=0 gen ownocc_se=0 gen ownocc_th=0 gen ownocc_hi=0 gen ownocc_fa=0 gen parocc_lo=0 gen parocc_se=0 gen parocc_th=0 gen parocc_hi=0 gen parocc_fa=0 replace ownocc_lo=1 if ownsesquart==1 replace ownocc_se=1 if ownsesquart==2 replace ownocc_th=1 if ownsesquart==4 replace ownocc_hi=1 if ownsesquart==5 replace ownocc_fa=1 if ownsesquart==3 replace parocc_lo=1 if pasesquart==1 replace parocc_se=1 if pasesquart==2 replace parocc_th=1 if pasesquart==4 replace parocc_hi=1 if pasesquart==5 replace parocc_fa=1 if pasesquart==3 gen group_be=0 gen group_se=0 gen group_th=0 gen group_wo=0 replace group_be=1 if _traj_Group==1 replace group_se=1 if _traj_Group==2 replace group_th=1 if _traj_Group==3 replace group_wo=1 if _traj_Group==4 sort mother father egen famid=group (mother father) gen weight1=1 replace weight1=_traj_ProbG1 if _traj_Group==1 replace weight1=_traj_ProbG2 if _traj_Group==2 replace weight1=_traj_ProbG3 if _traj_Group==3 replace weight1=_traj_ProbG4 if _traj_Group==4 egen sumweight=sum(weight1) **17377.86 gen pw1=weight1*(20687/17377.86) ** CHECKING DISTRIBUTION OF POSTERIOR PROBABILITIES gen trajprob=0 replace trajprob=_traj_ProbG1 if _traj_Group==1 replace trajprob=_traj_ProbG2 if _traj_Group==2 replace trajprob=_traj_ProbG3 if _traj_Group==3 replace trajprob=_traj_ProbG4 if _traj_Group==4 recode _traj_ProbG1 (0/.4999999=0)(.5/.5999999=50)(.6/.6999999=60)(.7/.799999999=70)(.80/.8999999999=80)(.9/1=90), gen (Traj_ProbG1_cat) recode _traj_ProbG2 (0/.4999999=0)(.5/.5999999=50)(.6/.6999999=60)(.7/.799999999=70)(.80/.8999999999=80)(.9/1=90), gen (Traj_ProbG2_cat) recode _traj_ProbG3 (0/.4999999=0)(.5/.5999999=50)(.6/.6999999=60)(.7/.799999999=70)(.80/.8999999999=80)(.9/1=90), gen (Traj_ProbG3_cat) recode _traj_ProbG4 (0/.4999999=0)(.5/.5999999=50)(.6/.6999999=60)(.7/.799999999=70)(.80/.8999999999=80)(.9/1=90), gen (Traj_ProbG4_cat) gen trajprobcat=0 replace trajprobcat=Traj_ProbG1_cat if _traj_Group==1 replace trajprobcat=Traj_ProbG2_cat if _traj_Group==2 replace trajprobcat=Traj_ProbG3_cat if _traj_Group==3 replace trajprobcat=Traj_ProbG4_cat if _traj_Group==4 sum trajprob, detail tab trajprobcat * RUNNING GLLAMM MODELS * VARIABLES * _traj_Group Trajectory group to which individual belongs * imr Inverse mills ratio * famid Identification for family * parocc_lo parocc_se parocc_th parocc_fa SES level of parent, i.e., childhood SES * ownocc_lo ownocc_se ownocc_th ownocc_fa parocc_lo SES level of self, i.e., adulthood SES * numchildrencalc Number of children * sibs Number of siblings * activelds Active LDS * inactivelds Inactive LDS * white White race * ParDied12 Parent died before age 12 * Agefirstbirth Age at birth of indexed child gllamm _traj_Group imr, i(famid) link(ologit) pw(pw) est store run0 gllamm _traj_Group parocc_lo parocc_se parocc_th parocc_fa imr, i(famid) link(ologit) pw(pw) est store run1 gllamm _traj_Group ownocc_lo ownocc_se ownocc_th ownocc_fa parocc_lo parocc_se parocc_th parocc_fa imr, i(famid) link(ologit) pw(pw) est store run2 gllamm _traj_Group ownocc_lo ownocc_se ownocc_th ownocc_fa parocc_lo parocc_se parocc_th parocc_fa imr numchildrencalc sibs activelds inactivelds white ParDied12 Agefirstbirth, i(famid) link(ologit) pw(pw) est store run3 gllamm _traj_Group /// ownocc_lo ownocc_se ownocc_th ownocc_fa parocc_lo parocc_se parocc_th parocc_fa /// ownocc_lo_parocc_lo ownocc_lo_parocc_se ownocc_lo_parocc_th ownocc_lo_parocc_fa /// ownocc_se_parocc_lo ownocc_se_parocc_se ownocc_se_parocc_th ownocc_se_parocc_fa /// ownocc_th_parocc_lo ownocc_th_parocc_se ownocc_th_parocc_th ownocc_th_parocc_fa /// ownocc_fa_parocc_lo ownocc_fa_parocc_se ownocc_fa_parocc_th ownocc_fa_parocc_fa /// imr numchildrencalc sibs activelds inactivelds white ParDied18, i(famid) link(ologit) pw(pw) est store run4 lrtest run1 (run0) lrtest run2 (run1) lrtest run3 (run2) lrtest run4 (run3) 4. ******* Specific conditions reported by trajecotry group ****** recode cvprio01-cvprio24 (0=0)(1/100=1) gen MI=cvprio01+cvprio02 recode MI (0=0)(1/2=1) gen CHF=cvprio03 gen PVD=cvprio04+cvprio05 recode PVD (0=0)(1/2=1) gen CD=cvprio06 gen De=cvprio08 gen CPD=cvprio07 gen RhD=cvprio17 gen PUD=cvprio15+cvprio16 recode PUD (0=0)(1/2=1) gen MLD=cvprio13 gen Di=cvprio10 gen DiCC=cvprio11 gen HP=cvprio09 gen ReD=cvprio12 gen M=cvprio19+cvprio21+cvprio22+cvprio23+cvprio24 recode M (0=0)(1/5=1) gen LD=cvprio14 gen MST=cvprio20 gen HA=cvprio18 egen totcom=rowtotal(MI-HA) tab MI _traj_group, col tab CHF _traj_group, col tab PVD _traj_group, col tab CD _traj_group, col tab De _traj_group, col tab CPD _traj_group, col tab RhD _traj_group, col tab PUD _traj_group, col tab MLD _traj_group, col tab Di _traj_group, col tab DiCC _traj_group, col tab HP _traj_group, col tab ReD _traj_group, col tab M _traj_group, col tab LD _traj_group, col tab MST _traj_group, col tab HA _traj_group, col recode totcom (0=0)(1/2=1)(3/100=3) tab totcom _traj_group, col gen CHF_D=0 replace CHF_D=1 if CHF==1 & (Di==1|DiCC==1) gen H_D=0 replace H_D=1 if (CHF==1|MI==1|CD==1) & (Di==1|DiCC==1) tab CHF_D _traj_gr, col