// Data
use ESS7e02_1.dta, clear
// Drinking variable
recode alcfreq (7 = 0 "Never") (6 = 1 "Less than once a month") ///
(5 = 2 "Once a month") (4 = 3 "2{c 150}3 times a month") ///
(3 = 4 "Once a week") (2 = 5 "Several times a week") ///
(1 = 6 "Every day") (77 88 99 = .), gen(alcohol)
label var alcohol "Alcohol consumption"
// Dichotomize alcohol variable
generate drinking = inlist(alcohol, 5, 6) if !missing(alcohol)
// Country name variable
kountry cntry, from(iso2c) marker
rename NAMES_STD country
// Education
recode eisced (1 2 = 0 "Lower") ///
(3 4 5 = 1 "Medium") ///
(6 7 = 2 "High") ///
(55/99 = .), gen(education)
label var education "Education"
// Alcohol consumption by country
histogram alcohol, percent disc horizontal ///
by(country, title("{bf:A} Frequency of drinking alcohohl", ///
justification(left) bexpand span) ///
note("")) ///
ylabel(0(1)6, val) ytitle("") ///
ysize(8) name(figure1, replace)
// Alcohol consumption by education by country
// Collect predicted probabilities
capture program drop my_logit
program define my_logit, eclass
syntax[if]
marksample touse
logit drinking if `touse'
margins if `touse', post
exit
end
statsby point = _b[_cons] se = _se[_cons], by(country education) clear: my_logit
// Calculate stuff
replace point = point * 100
replace se = se * 100
gen lb = point - 1.96 * se
gen ub = point + 1.96 * se
// Plot
twoway (bar point point education) ///
(rspike lb ub education), ///
by(country, legend(off) ///
title("{bf:B} Drinking by educational attainment", ///
justification(left) bexpand span) ///
note("")) ///
xlabel(0 1 2, val ang(v)) ylabel(0 (10) 50) ///
ytitle("% drinking more than once a week") ///
ysize(8) ///
name(figure2, replace)
graph combine figure1 figure2, col(2) ///
note(" " "{it:Source:} European Social Survey 2014", ///
span justification(right) bexpand size(*.8))
Nov 3, 2017
Random graphs (115): Bar graphs
Labels:
European Social Survey,
Histogram,
logit,
margins,
program,
Random graphs,
statsby,
twoway bar
