cap program drop _ex_adecomp program define _ex_adecomp, rclass syntax, example(numlist) preserve if ( "`example'" == "1") { use exdata_adecomp.dta, clear adecomp ipcf_ppp ila_ppp itran_ppp ijubi_ppp icap_ppp others [w=pondera], by(ano) eq(c1+c2+c3+c4+c5) varpl(lp_2usd_ppp) in(fgt0 fgt1 fgt2 gini theil) mat result = r(b) mat colnames result = indicator effect rate qui drop _all svmat double result, n(col) label define indicator 0 "FGT0" 1 "FGT1" 2 "FGT2" 3 "Gini" 4 "Theil" label values indicator indicator label define effect /// 1 "Labor" /// 2 "Transfer" /// 3 "Pension" /// 4 "Capital" /// 5 "Others" /// 6 "Total change" label values effect effect local total 6 qui gen aux=rate if effect==`total' qui egen total_effect=sum(aux) , by(indicator) qui drop aux qui gen share_effect= -100*rate/abs(total_effect) qui keep if effect!=6 graph bar share_effect , over(effect, label(labsize(*0.6))) by(indicator) ytitle(Share of the component effect in the total change) } restore end