/*********************************************************************************** *********************************************************************************** Replication of empirical results in Chapter 9: Explanatory and Omitted Variables of Eric Neumayer and Thomas Plümper: Robustness Tests for Quantitative Research, Cambridge University Press 2017 *********************************************************************************** ***********************************************************************************/ * Stata version 12 or higher needed version 12 *********************************************************************************** *********************************************************************************** * change relative path to the directory where the data are located local DIR = "C:\Users\Eric\Documents\Book\Robustness\" cd "`DIR'" *********************************************************************************** *********************************************************************************** * Install user-written ado-files capture net install outreg2, from(http://fmwww.bc.edu/RePEc/bocode/o) capture net install mmerge, from(http://fmwww.bc.edu/RePEc/bocode/m) capture net install spmon, from(http://fmwww.bc.edu/RePEc/bocode/s) *********************************************************************************** *********************************************************************************** *** Between Variation Test * Baseline model * Baseline model use "Chapter_9_explanatory.dta", clear tsset countryid year capture dropvar lgini_0_110 gen lgini_0_110=l.gini_0_110 reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) outreg2 using table, replace excel keep if e(sample) save "estimation sample", replace * Robustness test model capture dropvars *_mean year_dum_* egen gini_0_110_mean=mean(gini_0_110), by(countryid) egen lgini_0_110_mean=mean(lgini_0_110), by(countryid) egen e0_mean=mean(e0), by(countryid) egen ln_gdp_mean=mean(ln_gdp), by(countryid) egen ln_tot_healthexp_mean=mean(ln_tot_healthexp), by(countryid) egen ln_alcohol_mean=mean(ln_alcohol), by(countryid) egen lung_mort_rate_comb_i_mean=mean(lung_mort_rate_comb_i), by(countryid) egen external_mort_rate_comb_i_mean=mean(external_mort_rate_comb_i), by(countryid) egen income_gini_before_oecd_i_mean=mean(income_gini_before_oecd_i), by(countryid) egen diff_before_after_gini_oecd_mean=mean(diff_before_after_gini_oecd), by(countryid) forvalues i = 1974(1) 2011 { gen year_dum_`i'=0 replace year_dum_`i'=1 if year==`i' egen year_dum_`i'_mean=mean(year_dum_`i'), by(countryid) } forvalues i = 0(10) 100 { capture drop *_dm`i' gen gini_0_110_dm`i'=gini_0_110-(sqrt(`i'/100))*gini_0_110_mean gen lgini_0_110_dm`i'=lgini_0_110-(sqrt(`i'/100))*lgini_0_110_mean gen e0_dm`i'=e0-(sqrt(`i'/100))*e0_mean gen ln_gdp_dm`i'=ln_gdp-(sqrt(`i'/100))*ln_gdp_mean gen ln_tot_healthexp_dm`i'=ln_tot_healthexp-(sqrt(`i'/100))*ln_tot_healthexp_mean gen ln_alcohol_dm`i'=ln_alcohol-(sqrt(`i'/100))*ln_alcohol_mean gen lung_mort_rate_comb_i_dm`i'=lung_mort_rate_comb_i-(sqrt(`i'/100))*lung_mort_rate_comb_i_mean gen external_mort_rate_comb_i_dm`i'=external_mort_rate_comb_i-(sqrt(`i'/100))*external_mort_rate_comb_i_mean gen income_gini_before_oecd_i_dm`i'=income_gini_before_oecd_i-(sqrt(`i'/100))*income_gini_before_oecd_i_mean gen diff_before_after_gini_dm`i'=diff_before_after_gini_oecd-(sqrt(`i'/100))*diff_before_after_gini_oecd_mean forvalues j = 1974(1) 2011 { gen year_dum_`j'_dm_`i'=year_dum_`j'-(sqrt(`i'/100))*year_dum_`j'_mean } quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) scalar coeff_b=_b[income_gini_before_oecd_i] scalar se_b=_se[income_gini_before_oecd_i] scalar lb_b= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b= coeff_b +invnormal(1-(100-c(level))/200)*se_b reg gini_0_110_dm`i' lgini_0_110_dm`i' e0_dm`i' ln_gdp_dm`i' ln_tot_healthexp_dm`i' ln_alcohol_dm`i' lung_mort_rate_comb_i_dm`i' external_mort_rate_comb_i_dm`i' income_gini_before_oecd_i_dm`i' diff_before_after_gini_dm`i' year_dum_*_dm_`i' if country!="Chile", cluster(country) outreg2 using table, append excel scalar coeff_r=_b[income_gini_before_oecd_i_dm`i'] scalar se_r=_se[income_gini_before_oecd_i_dm`i'] scalar lb1=lb_b/se_r scalar ub1=ub_b/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) scalar robustness=ubd-lbd di "Estimated degree of short-run effect robustness for Gini coefficient is: " robustness di " at elimination of " `i' " per cent of within-variation" quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) nlcom (_b[income_gini_before_oecd_i]/_b[lgini_0_110]), post scalar coeff_b=_b[_nl_1] scalar se_b=_se[_nl_1] scalar lb_b= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b= coeff_b +invnormal(1-(100-c(level))/200)*se_b quietly reg gini_0_110_dm`i' lgini_0_110_dm`i' e0_dm`i' ln_gdp_dm`i' ln_tot_healthexp_dm`i' ln_alcohol_dm`i' lung_mort_rate_comb_i_dm`i' external_mort_rate_comb_i_dm`i' income_gini_before_oecd_i_dm`i' diff_before_after_gini_dm`i' year_dum_*_dm_`i' if country!="Chile", cluster(country) nlcom (_b[income_gini_before_oecd_i_dm`i']/_b[lgini_0_110_dm`i']), post scalar coeff_r=_b[_nl_1] scalar se_r=_se[_nl_1] scalar lb1=lb_b/se_r scalar ub1=ub_b/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) scalar robustness=ubd-lbd di "Estimated degree of long-run effect robustness for Gini coefficient is: " robustness di " at elimination of " `i' " per cent of within-variation" */ } *********************************************************************************** *********************************************************************************** *** Groupwise Fixed Effects Test ** Standard group fixed effects * Baseline model use "Chapter_9_explanatory.dta", clear tsset countryid year capture dropvar lgini_0_110 gen lgini_0_110=l.gini_0_110 reg gini_0_110 l.gini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) outreg2 using table, replace excel * Robustness test model reg gini_0_110 l.gini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd nhs_dummy nhi_dummy shi_dummy ehi_1_dummy ehi_2_dummy other_east_europe_dummy i.year if country!="Chile", cluster(country) outreg2 using table, append excel quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) scalar coeff_b=_b[income_gini_before_oecd_i] scalar se_b=_se[income_gini_before_oecd_i] scalar lb_b= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b= coeff_b +invnormal(1-(100-c(level))/200)*se_b quietly reg gini_0_110 l.gini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd nhs_dummy nhi_dummy shi_dummy ehi_1_dummy ehi_2_dummy other_east_europe_dummy i.year if country!="Chile", cluster(country) scalar coeff_r=_b[income_gini_before_oecd_i] scalar se_r=_se[income_gini_before_oecd_i] scalar lb1=lb_b/se_r scalar ub1=ub_b/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) scalar robustness=ubd-lbd di "Estimated degree of short-run effect robustness for Gini coefficient is: " robustness *********************************************************************************** *********************************************************************************** *** Groupwise fixed effects test ** Cluster-based variation in group fixed effects test * Baseline model use "Chapter_9_explanatory.dta", clear tsset countryid year capture dropvar lgini_0_110 gen lgini_0_110=l.gini_0_110 reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) outreg2 using table, replace excel keep if e(sample) save "estimation sample", replace * Robustness test model capture dropvars *_mean year_dum_* egen gini_0_110_mean=mean(gini_0_110), by(countryid) egen lgini_0_110_mean=mean(lgini_0_110), by(countryid) egen e0_mean=mean(e0), by(countryid) egen ln_gdp_mean=mean(ln_gdp), by(countryid) egen ln_tot_healthexp_mean=mean(ln_tot_healthexp), by(countryid) egen ln_alcohol_mean=mean(ln_alcohol), by(countryid) egen lung_mort_rate_comb_i_mean=mean(lung_mort_rate_comb_i), by(countryid) egen external_mort_rate_comb_i_mean=mean(external_mort_rate_comb_i), by(countryid) egen income_gini_before_oecd_i_mean=mean(income_gini_before_oecd_i), by(countryid) egen diff_before_after_gini_oecd_mean=mean(diff_before_after_gini_oecd), by(countryid) foreach i of numlist 51 41 39 35 25 21 15 13 9 7 5 3 1 { cluster wardslinkage e0_mean ln_gdp_mean ln_tot_healthexp_mean ln_alcohol_mean lung_mort_rate_comb_i_mean external_mort_rate_comb_i_mean income_gini_before_oecd_i_mean diff_before_after_gini_oecd_mean, measure(L2) *note: the above cluster analysis is pretty arbitrary capture dropvars clus_c* clusterdum* cluster generate clus_c`i' = cut(`i') preserve collapse clus_c`i', by(country) sort clus_c`i' country list clus_c`i' country restore quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) scalar coeff_b=_b[income_gini_before_oecd_i] scalar se_b=_se[income_gini_before_oecd_i] scalar lb_b= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b= coeff_b +invnormal(1-(100-c(level))/200)*se_b reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.clus_c`i' i.year if country!="Chile", cluster(country) outreg2 using table, append excel scalar coeff_r=_b[income_gini_before_oecd_i] scalar se_r=_se[income_gini_before_oecd_i] scalar lb1=lb_b/se_r scalar ub1=ub_b/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) scalar robustness=ubd-lbd di "Estimated degree of short-run effect robustness for Gini coefficient is (" `i' " cut value): " robustness quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) quietly nlcom (_b[income_gini_before_oecd_i]/_b[lgini_0_110]), post scalar coeff_b=_b[_nl_1] scalar se_b=_se[_nl_1] scalar lb_b= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b= coeff_b +invnormal(1-(100-c(level))/200)*se_b quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.clus_c`i' i.year if country!="Chile", cluster(country) quietly nlcom (_b[income_gini_before_oecd_i]/_b[lgini_0_110]), post scalar coeff_r=_b[_nl_1] scalar se_r=_se[_nl_1] scalar lb1=lb_b/se_r scalar ub1=ub_b/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) scalar robustness=ubd-lbd di "Estimated degree of long-run effect robustness for Gini coefficient is (" `i' " cut value): " robustness } *********************************************************************************** *********************************************************************************** *** Spatial Error Test * Baseline model use "Chapter_9_explanatory.dta", clear tsset countryid year capture dropvar lgini_0_110 gen lgini_0_110=l.gini_0_110 reg gini_0_110 l.gini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) outreg2 using table, replace excel * Robustness test model reg gini_0_110 l.gini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd SE_var_monadic_rowst i.year if country!="Chile", cluster(country) outreg2 using table, append excel quietly reg gini_0_110 lgini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd i.year if country!="Chile", cluster(country) scalar coeff_b=_b[income_gini_before_oecd_i] scalar se_b=_se[income_gini_before_oecd_i] scalar lb_b= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b= coeff_b +invnormal(1-(100-c(level))/200)*se_b quietly reg gini_0_110 l.gini_0_110 e0 ln_gdp ln_tot_healthexp ln_alcohol lung_mort_rate_comb_i external_mort_rate_comb_i income_gini_before_oecd_i diff_before_after_gini_oecd SE_var_monadic_rowst i.year if country!="Chile", cluster(country) scalar coeff_r=_b[income_gini_before_oecd_i] scalar se_r=_se[income_gini_before_oecd_i] scalar lb1=lb_b/se_r scalar ub1=ub_b/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) scalar robustness=ubd-lbd di "Estimated degree of short-run effect robustness for Gini coefficient is: " robustness