unzipfile output7138637360988071942.zip
use agea gndr happy using ESS1-6e01_1_F1, clear
// Generate age variable, truncated at 99.9th percentile
qui centile(agea), centile(99.9)
generate age = agea
replace age = r(c_1) if age > r(c_1) & !missing(age)
// Generate gender variable
generate female =(gndr == 2) if !missing(gndr)
// Fit model and plot
regress happy c.age##c.age##i.female
qui margins, at(age=(15(5)90) female=(0 1))
marginsplot, recastci(rarea) ciopts(color(gs12)) ytitle("Predicted happiness") ///
legend(order(3 "Men" 4 "Women") ring(0) pos(2)) xtitle("Age") ///
ylab(, format(%6.1f)) title("") ///
note(" " "{it:Source:} European Social Survey, round 1{c 150}6." ///
"{it:Note:} Gray-shaded areas denote 95% confidence intervals.", span)