// Open ESS round 5
use agea stflife cntry if inlist(cntry, "DE", "GB", "NL", "SE") using "ESS5e03_4.dta", clear
// Country variable
kountry cntry, from(iso2c)
rename NAMES_STD country
// Restrict to complete cases
keep if !missing(agea, stflife, cntry)
// Center age
qui sum agea, detail
replace agea = `r(p99)' if agea > `r(p99)' & !missing(agea)
bys country: center agea, gen(age)
drop agea
label var age "Age (centered)"
// Letters
tokenize "`c(ALPHA)'"
local i 1
levelsof country, local(country)
foreach z of local country {
qui sum age if country == `"`z'"', detail
foreach x of numlist 10 25 50 75 90 {
local x`x': di %9.1f r(p`x')
di `x`x''
}
qui regress stflife c.age##c.age if country == `"`z'"'
qui margins, at(age = (`x10' `x25' `x50' `x75' `x90'))
marginsplot, title(`"{bf:``i''} `z'"') ///
ytitle("Life satisfaction" "(predicted)") ///
xtitle("Age (percentiles)") ///
xlabel(`x10' "10th" ///
`x25' "25th" ///
`x50' "50th" ///
`x75' "75th" ///
`x90' "90th") ///
ylabel(, format(%6.1f)) ///
recastci(rarea) ciopts(color(gs10)) ///
name("``i''", replace) nodraw
local ++i
}
graph combine A B C D, col(2) ycommon
Apr 23, 2020
Random graphs (144): Automatically labeling figures with letters
Labels:
center,
European Social Survey,
levelsof,
marginsplot,
Random graphs,
recastci,
tokenize
