
// ESS round 1
use ESS1e06_4.dta, clear
// Prepare variables
// Country variable
encode cntry, gen(country)
// Trade union membership
recode trummb (0 = 0 "Non-member") (1 = 1 "Trade union member") (. = .), generate(unionmember)
label var unionmember "Trade union member"
// Age
generate age = agea if agea != 999
label var age "Age"
// Sex
gen female = (gndr == 2) if gndr != 9
label var female "Female sex"
label define female 1 "Female" 0 "Male"
label val female female
// Happiness
recode happy (77 88 99 = .)
// Center age and sex
center age female
// First set of models
preserve
statsby mean_ = _b[unionmember] ///
loci = (_b[unionmember] - 1.96 * _se[unionmember]) ///
hici = (_b[unionmember] + 1.96 * _se[unionmember]) ///
, by(country) clear: ///
regress happy unionmember
// Sort coefficients by size
egen order_ = rank(mean_), unique
labmask order_, value(country) decode
// Plot
twoway (rcap mean_ mean_ order_, horizontal) ///
(rspike loci hici order_, horizontal) ///
, legend(off) ylabel(1/20, valuelabels ang(h) labsize(*.8)) ///
xlabel(-.5 (.5) 1.5, grid format(%6.1f)) name(unadjusted, replace) ///
xmtick(-.5 (.1) 1.5) ///
ytitle("") xtitle("Happiness advantage of trade union membership" " ") ///
xscale(alt) ysize(4)
restore
// Second set of models
preserve
statsby mean_ = _b[unionmember] ///
loci = (_b[unionmember] - 1.96 * _se[unionmember]) ///
hici = (_b[unionmember] + 1.96 * _se[unionmember]) ///
, by(country) clear: ///
regress happy unionmember c_female c_age
// Sort coefficients by size
egen order_ = rank(mean_), unique
labmask order_, value(country) decode
// Plot
twoway (rcap mean_ mean_ order_, horizontal) ///
(rspike loci hici order_, horizontal) ///
, legend(off) ylabel(1/20, valuelabels ang(h) labsize(*.8)) ///
xlabel(-.5 (.5) 1.5, grid format(%6.1f)) name(adjusted, replace) ///
xmtick(-.5 (.1) 1.5) ///
ytitle("") xtitle("Happiness advantage of trade union membership" "(adjusted for age and sex)") ///
xscale(alt) ysize(4)
restore
// Plot both underneath one another
graph combine unadjusted adjusted, row(2) ysize(8) xcommon name(combined, replace) ///
note(" " ///
"{it:Source:} ESS round 1, own calculations. {it:Note:} Error bars denote 95% confidence intervals." , span size(*.8))