Dec 3, 2017

Random graphs (121): Overlaid prediction plots

// Open cumulated Allbus 2004-2014
use if year >= 2004 using "ZA4584_v1-0-0.dta", clear

// Select data
keep if inrange(v729, 25, 65)  // Only those between 25 and 65
drop if v495 == 0 // Health split

// Poor self-rated health
generate poorhealth = inlist(v495, 4, 5) if !inlist(v495, 0, 9)

// Top-bottom
recode v152 (0 99 = .), gen(sss)
label define sss 1 `""1" "Bottom""' 2 "2" 3 "3" 4 "4" 5 "5" 6 "6" 7 "7" 8 "8" 9 "9" 10 `""10" "Top""'
label val sss sss
label var sss "Subjective SES"

// Education
recode v767 (94 99 = .), gen(educ)
label define educ 1 "Basic" 2 "Lower secondary" 3 "Upper secondary" 4 "Post-secondary" 5 "Tertiary"
label val educ educ
label var educ "Education"

// ISEI 1988
generate isei = v789 if !inlist(v789, 0, 99)
replace  isei = v825 if missing(isei) & !inlist(v825, 0, 99)
label var isei "Occupational status (ISEI)"

// EGP
recode v784 (0 = .a) (10004 = .b) (10009 = .c) (1 2 = .d) // ISCO-88
recode v820 (0 = .a) (10004 = .b) (10009 = .c) (1 2 = .d) // Last job ISCO-88
clonevar isco88 = v784
replace  isco88 = v820 if missing(isco88) & !missing(v820)
recode v804 (0 = .a "Not available") (9999 = .b "No answer"), gen(supervisor) // Number of people supervised
recode v773 (0 = .a "Not available") (99 = .b "No answer") ///
            (10/24 = 1 "Self-employed") (40/65 = 0 "Employed") ///
            (30 70/74 = .c "Not employed"), gen(selfemployed)  // Self-employed
iskoegp egp, isko(isco88) supvis(supervisor) sempl(selfemployed)

// Household income
generate income = v924+1 if !inlist(v924, 99996, 99997, 99999)
generate lninc  = log(income)
label var lninc "Household income (logged, equivalized)"

// Controls
generate state = v1374
generate female = (v731 == 2)
generate age = v729 if v729 != 999

// Macro for controls
local control i.female c.age##c.age i.state##i.year

// Fit some models
eststo clear
qui eststo: logit poorhealt sss                     `control', robust cluster(year) 
qui margins, over(sss) post
est store model1
eststo: logit poorhealt sss i.educ                  `control', robust cluster(year) 
qui margins, over(sss) post
est store model2
eststo: logit poorhealt sss i.educ isei             `control', robust cluster(year) 
qui margins, over(sss) post
est store model3
eststo: logit poorhealt sss i.educ isei i.egp       `control', robust cluster(year) 
qui margins, over(sss) post
est store model4
eststo: logit poorhealt sss i.educ isei i.egp lninc `control', robust cluster(year) 
qui margins, over(sss) post
est store model5

// Plot findings
coefplot model1 model2 model3 model4 model5, vertical ///
         legend(order(2 "Age, federal state, survey year" 4 "plus Education" ///
                      6 "plus occupational status (ISEI)" ///
                      8 "plus social class (EGP)" ///
                      10 "plus household income") pos(2) ring(0) col(1) ///
                title(Model accounting for)) ///
         scheme(plotplainblind) ///
         xtitle(Subjective socioeconomic status) ///
         ytitle(Predicted probability of poor health)