// 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)
Dec 3, 2017
Random graphs (121): Overlaid prediction plots
Labels:
Allbus,
coefplot,
estimates store,
iskoegp,
margins,
Random graphs
