/* Notes: (1) this script provides the code underlying the examples of the paper "mpitb - mpitb: A toolbox for multidimensional poverty indices" (2) this script assumes the working directory to be the folder "mpitb_intro", provided by the package. You may have to cd mpitb_intro (3) this scripts creates a folder "results" and several files within that folder. If run repeatedly, please delete this folder previously. loc flist : dir "results/" files "*.dta" foreach f in `flist' { rm results/`f' } rmdir results */ cap log close log using mpitb_intro.txt , replace t nomsg version 17 frame reset ***************************************************** **# Example 1: A single year for a single country *** ***************************************************** use syn_cdta.dta if t == 1 , clear sum svyset psu [pw=weight], strata(stratum) mpitb set , na(trial01) d1(d_cm d_nutr, na(hl)) d2(d_satt d_educ, na(ed)) /// d3(d_elct d_wtr d_sani d_hsg d_ckfl d_asst, name(ls)) de(pref. spec) mpitb est , name(trial01) meas(all) indmeas(all) aux(hd) klist(20 33 50) /// weight(equal) svy lfr(myresults, replace) over(region area) cwf myresults d tab measure loa li measure b se if inlist(measure,"M0","H","A") & loa == "nat" & k == 33 , noob recode subg (0=0 "rural") (1=1 "urban") if loa == "area" , gen(area) lab var area area tabdisp indicator measure area if inlist(measure,"hd","hdk") /// & !mi(area) & inlist(k,33,.) , cell(b) *************************************************** **# Example 2: Avoiding unnecessary estimations *** *************************************************** mkdir results use syn_cdta.dta if t == 1 , clear svyset psu [pw=weight], strata(stratum) mpitb set , name(trial01) desc(preferred spec) /// d1(d_cm d_nutr, name(hl)) /// d2(d_satt d_educ, name(ed)) /// d3(d_elct d_wtr d_sani d_hsg d_ckfl d_asst, name(ls)) mpitb est , name(trial01) measures(all) indmeas(all) aux(hd) svy /// k(1 10 20 33 40 (10) 100) over(region area, k(20 33 50) indk(30)) /// indk(20 33 40) weight(equal) lsa(results/trial01, replace) describe using results/trial01 , s ********************************************************************** **# Example 3: Adding alternative weights and indicator selections *** ********************************************************************** mpitb est , n(trial01) m(all) k(33) w(dimw(.5 .25 .25) name(health50)) /// lsa(results/health50, replace) svy mpitb est , n(trial01) m(all) k(33) w(dimw(.25 .5 .25) name(educ50)) /// lsa(results/educ50, replace) svy mpitb est , n(trial01) m(all) k(33) w(dimw(.25 .25 .5) name(livst50)) /// lsa(results/livstd50, replace) svy mpitb est , n(trial01) m(all) k(33) lsa(results/ind_equal, replace) /// w(indw(.1 .1 .1 .1 .1 .1 .1 .1 .1 .1) name(ind_equal)) svy mpitb set , n(trial02) d1(d_cm d_nutr, n(hl)) d2(d_satt d_educ, n(ed)) /// d3(d_wtr d_sani d_hsg d_ckfl d_asst, name(ls)) desc(w/o electricity) mpitb est , n(trial02) m(all) k(33) w(equal) svy /// lsa(results/trial02, replace) save results/results , replace emptyok loc flist trial01 trial02 health50 educ50 livstd50 ind_equal foreach f in `flist' { append using results/`f' , nol } save results/results , replace ***************************************************** **# Example 4: Several years for a single country *** ***************************************************** use syn_cdta.dta , clear svyset psu [pw=weight], strata(stratum) mpitb set , name(trial01) desc(preferred spec) /// d1(d_cm d_nutr, name(hl)) /// d2(d_satt d_educ, name(ed)) /// d3(d_elct d_wtr d_sani d_hsg d_ckfl d_asst, name(ls)) mpitb est , name(trial01) measures(all) klist(1 33 50) weight(equal) /// lframe(myresults, replace) svy over(region) /// cotmeasures(M0 H A) cotframe(mycot, replace) tvar(t) cotyear(year) frame myresults : sort t k frame myresults : li measure wgts t k b se if measure == "H" & loa == "nat" /// , noobs sepby(t) frame mycot : li measure wgts ann t0 t1 k ctype b se if measure == "H" /// & loa == "nat" & ann == 0 , noobs sepby(k) ****************************************************** **# Example 5: A single year for several countries *** ****************************************************** dir cdta , wide mpitb refsh using results/refsh.dta, clear id(ccty) sid(region) p(cdta) /// char(ccty ccnum survey year cty) li ccty region region_name survey year fname in 1/5, noob sepby(ccty) mkf rs frame rs: use results/refsh.dta , clear frame rs: mpitb ctyselect ccty foreach cty in `r(ctylist)' { frame rs : qui levelsof fname if ccty == "`cty'" , loc(fname) clean use `"cdta/`fname'"' , clear svyset psu [pw=weight] , strata(stratum) singleunit(centered) mpitb set , n(mympi) d1(d_cm d_nutr, n(hl)) /// d2(d_satt d_educ, n(ed)) /// d3(d_elct d_wtr d_sani d_hsg d_ckfl d_asst, name(ls)) mpitb est , name(mympi) measures(all) klist(33) weight(equal) /// lsa(results/`cty'_results, replace) over(region) /// svy addmeta(ccty=`cty') } clear save results/results , replace emptyok loc flist : dir "results/" files "*_results.dta" foreach f in `flist' { append using results/`f' , nol } gen region = subg if loa == "region" frlink m:1 ccty region , frame(rs) frget region_name , from(rs) save results/results.dta , replace tabdisp ccty measure if loa == "nat" & inlist(k,33,.), cell(b) tabdisp region_name measure if loa == "region" & inlist(k,33,.) & ccty == "ABC" , c(b) l log close exit