/*********************************************************************************** *********************************************************************************** Replication of empirical results in Chapter 7: Population and Sample 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) *********************************************************************************** *********************************************************************************** *** Population Boundary Test * Baseline model use "Chapter_7_population_data.dta", clear xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) outreg2 using table, replace excel * Testing equality of coefficients test 1.notcorr_icrg_dum#c.sumactualmaxmagabove610 =0.notcorr_icrg_dum#c.sumactualmaxmagabove610 * Robustness test model use "population.dta", clear xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=6 & maxmag_annual_incloffcoast<., cluster(country) outreg2 using table, append excel * Testing equality of coefficients test 1.notcorr_icrg_dum#c.sumactualmaxmagabove610 =0.notcorr_icrg_dum#c.sumactualmaxmagabove610 * Estimating degrees of effect robustness quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 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 xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=6 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_r=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] 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 effect robustness for non-corrupt countries is: " robustness quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 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 xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=6 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_r=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] 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 effect robustness for corrupt countries is: " robustness *********************************************************************************** *********************************************************************************** *** Jackknife Test * Baseline model use "Chapter_7_population_data.dta", clear xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) outreg2 using table, replace excel * Testing equality of coefficients test 1.notcorr_icrg_dum#c.sumactualmaxmagabove610 =0.notcorr_icrg_dum#c.sumactualmaxmagabove610 * Robustness test model: Slice off one country at a time discard clear set more off * create the test data for the monte carlo experiment postutil clear capture program drop quakesim program quakesim version 8.0 set seed 10010 tempname quake5 postfile `quake5' b_mag5above1015 se_mag5above1015 b_depth_min se_depth_min b_actualmaxmag10_adj se_actualmaxmag10_adj /* */ b_0ncsumactualmaxmag se_0ncsumactualmaxmag /* */ b_1ncsumactualmaxmag se_1ncsumactualmaxmag /* */ b_dem5_polity se_dem5_polity b_corr_icrg se_corr_icrg b_lngdppc se_lngdppc b_lnpop se_lnpop using quake5, replace qui { forvalues i = 1/59 { drop _all use "Chapter_7_population_data_jackknife.dta", clear nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. & countryid!=`i', cluster(country) nolrtest post `quake5' (_b[mag5above1015]) (_se[mag5above1015]) (_b[depth_min]) (_se[depth_min]) (_b[actualmaxmag10_adj]) (_se[actualmaxmag10_adj]) /* */ (_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610]) (_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610]) /* */ (_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610]) (_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610]) /* */ (_b[dem5_polity]) (_se[dem5_polity]) (_b[corr_icrg]) (_se[corr_icrg]) (_b[lngdppc]) (_se[lngdppc]) (_b[lnpop]) (_se[lnpop]) } } postclose `quake5' end di "NOTE: The simulations will take a few minutes. Please wait..." di "" quakesim * Estimating degrees of effect robustness for eliminating case with largest leverage (Iran) quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 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 xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=6 & maxmag_annual_incloffcoast<. & countryid!=27, cluster(country) scalar coeff_r=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] 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 effect robustness for non-corrupt countries is: " robustness quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. , cluster(country) scalar coeff_b=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 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 xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=6 & maxmag_annual_incloffcoast<. & countryid!=27, cluster(country) scalar coeff_r=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] 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 effect robustness for corrupt countries is: " robustness *********************************************************************************** *********************************************************************************** *** Outlier Elimination Test * Baseline model use "Chapter_7_population_data.dta", clear xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) outreg2 using table, replace excel * Testing equality of coefficients test 1.notcorr_icrg_dum#c.sumactualmaxmagabove610 =0.notcorr_icrg_dum#c.sumactualmaxmagabove610 * Robustness test model * Note: glm, fam(nb) almost identical to nbreg quietly xi: glm killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., fam(nb) capture drop sdevnb predict sdevnb, deviance stan xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. & (sdevnb>=-2 & sdevnb<=2), cluster(country) outreg2 using table, append excel * Testing equality of coefficients test 1.notcorr_icrg_dum#c.sumactualmaxmagabove610 =0.notcorr_icrg_dum#c.sumactualmaxmagabove610 * Estimating degrees of effect robustness quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 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 xi: glm killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., fam(nb) capture drop sdevnb predict sdevnb, deviance stan xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. & (sdevnb>=-2 & sdevnb<=2), cluster(country) scalar coeff_r=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] 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 effect robustness for non-corrupt countries is: " robustness quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 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 xi: glm killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., fam(nb) capture drop sdevnb predict sdevnb, deviance stan quietly xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. & (sdevnb>=-2 & sdevnb<=2), cluster(country) scalar coeff_r=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] 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 effect robustness for corrupt countries is: " robustness *********************************************************************************** *********************************************************************************** *** Stratification Tests ** Over-sampling of developing country observations discard clear set more off * create the test data for the monte carlo experiment postutil clear capture program drop quakesim program quakesim version 8.0 tempname quake5 postfile `quake5' b_mag5above1015 se_mag5above1015 b_depth_min se_depth_min b_actualmaxmag10_adj se_actualmaxmag10_adj /* */ b_0ncsumactualmaxmag se_0ncsumactualmaxmag /* */ b_1ncsumactualmaxmag se_1ncsumactualmaxmag /* */ b_dem5_polity se_dem5_polity b_corr_icrg se_corr_icrg b_lngdppc se_lngdppc b_lnpop se_lnpop using quake5, replace qui { forvalues i = 10/90 { drop _all use "Chapter_7_population_data.dta", clear preserve quietly xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) keep if inc_highoecd==0 & e(sample) gen selector=runiform() keep if selector>=`i'/100 save sample_addition, replace restore preserve append using sample_addition nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., post `quake5' (_b[mag5above1015]) (_se[mag5above1015]) (_b[depth_min]) (_se[depth_min]) (_b[actualmaxmag10_adj]) (_se[actualmaxmag10_adj]) /* */ (_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610]) (_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610]) /* */ (_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610]) (_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610]) /* */ (_b[dem5_polity]) (_se[dem5_polity]) (_b[corr_icrg]) (_se[corr_icrg]) (_b[lngdppc]) (_se[lngdppc]) (_b[lnpop]) (_se[lnpop]) restore } } postclose `quake5' end di "NOTE: The simulations will take a few minutes. Please wait..." di "" set seed 3457234 quakesim use "quake5.dta", clear su b_0ncsumactualmaxmag se_0ncsumactualmaxmag b_1ncsumactualmaxmag se_1ncsumactualmaxmag * Estimate degrees of effect robustness and share of cdf drop _all gen robustness=. gen z_cdf=. save "robustness degrees", replace use "Chapter_7_population_data.dta", clear set level 95 quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar lb_b_corr= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b_corr= coeff_b +invnormal(1-(100-c(level))/200)*se_b scalar coeff_b=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar lb_b_notcorr= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b_notcorr= coeff_b +invnormal(1-(100-c(level))/200)*se_b di "NOTE: The calculations will take a few minutes as 90 models are estimated. Please wait..." di "" quietly { forvalues i = 10/90 { noisily di "." _continue drop _all use "Chapter_7_population_data.dta", clear preserve quietly xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) keep if inc_highoecd==0 & e(sample) gen selector=runiform() keep if selector>=`i'/100 save sample_addition, replace restore preserve append using sample_addition nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., scalar coeff_r=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] gen z_cdf = normal(coeff_r/se_r) scalar lb1=lb_b_notcorr/se_r scalar ub1=ub_b_notcorr/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) gen robustness=ubd-lbd keep z_cdf robustness save "robust_notcorr_degree`i'", replace restore preserve append using sample_addition nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., scalar coeff_r=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] gen z_cdf = normal(coeff_r/se_r) scalar lb1=lb_b_corr/se_r scalar ub1=ub_b_corr/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) gen robustness=ubd-lbd keep z_cdf robustness save "robust_corr_degree`i'", replace restore } } use "robustness degrees", replace forvalues i = 10/90 { append using "robust_corr_degree`i'" } quietly summarize robustness display "Estimated degree of effect robustness is: " r(mean) _pctile robustness, p(2.5, 97.5) matrix range_robustness = (r(r1),r(r2)) matrix rownames range_robustness = robustness matrix colnames range_robustness = lower_025 upper_975 quietly summarize robustness di "Estimated degree of effect robustness in non-corrupt countries is: " r(mean) display "95% of unweighted simulated effect robustness ranges between: " matrix list range_robustness generate weight = 1 quietly summarize weight if robustness < . replace weight = weight/r(sum) replace weight = 0 if robustness == . gen z_cdf_share = z_cdf*weight quietly summarize z_cdf_share scalar sum_cdf_share = r(sum) *display results display "Cumulative density of simulated coefficients smaller zero: " sum_cdf_share use "robustness degrees", replace forvalues i = 10/90 { append using "robust_notcorr_degree`i'" } quietly summarize robustness display "Estimated degree of effect robustness is: " r(mean) _pctile robustness, p(2.5, 97.5) matrix range_robustness = (r(r1),r(r2)) matrix rownames range_robustness = robustness matrix colnames range_robustness = lower_025 upper_975 quietly summarize robustness di "Estimated degree of effect robustness in non-corrupt countries is: " r(mean) display "95% of unweighted simulated effect robustness ranges between: " matrix list range_robustness generate weight = 1 quietly summarize weight if robustness < . replace weight = weight/r(sum) replace weight = 0 if robustness == . gen z_cdf_share = z_cdf*weight quietly summarize z_cdf_share scalar sum_cdf_share = r(sum) *display results display "Cumulative density of simulated coefficients smaller zero: " sum_cdf_share ** Under-sampling of developed country observations discard clear set more off * create the test data for the monte carlo experiment postutil clear capture program drop quakesim program quakesim version 8.0 tempname quake5 postfile `quake5' b_mag5above1015 se_mag5above1015 b_depth_min se_depth_min b_actualmaxmag10_adj se_actualmaxmag10_adj /* */ b_0ncsumactualmaxmag se_0ncsumactualmaxmag /* */ b_1ncsumactualmaxmag se_1ncsumactualmaxmag /* */ b_dem5_polity se_dem5_polity b_corr_icrg se_corr_icrg b_lngdppc se_lngdppc b_lnpop se_lnpop using quake5, replace qui { forvalues i = 10/90 { drop _all use "Chapter_7_population_data.dta", clear quietly xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) gen selector=runiform() if inc_highoecd==1 & e(sample) keep if selector>=`i'/100 nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., post `quake5' (_b[mag5above1015]) (_se[mag5above1015]) (_b[depth_min]) (_se[depth_min]) (_b[actualmaxmag10_adj]) (_se[actualmaxmag10_adj]) /* */ (_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610]) (_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610]) /* */ (_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610]) (_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610]) /* */ (_b[dem5_polity]) (_se[dem5_polity]) (_b[corr_icrg]) (_se[corr_icrg]) (_b[lngdppc]) (_se[lngdppc]) (_b[lnpop]) (_se[lnpop]) } } postclose `quake5' end di "NOTE: The simulations will take a few minutes. Please wait..." di "" set seed 3457234 quakesim use "quake5.dta", clear su b_0ncsumactualmaxmag se_0ncsumactualmaxmag b_1ncsumactualmaxmag se_1ncsumactualmaxmag * Estimate degrees of effect robustness and share of cdf drop _all gen robustness=. gen z_zdf=. save "robustness degrees", replace use "Chapter_7_population_data.dta", clear set level 95 quietly xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) scalar coeff_b=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar lb_b_corr= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b_corr= coeff_b +invnormal(1-(100-c(level))/200)*se_b scalar coeff_b=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar lb_b_notcorr= coeff_b -invnormal(1-(100-c(level))/200)*se_b scalar ub_b_notcorr= coeff_b +invnormal(1-(100-c(level))/200)*se_b di "NOTE: The calculations will take a few minutes as 90 models are estimated. Please wait..." di "" quietly { forvalues i = 10/90 { drop _all use "Chapter_7_population_data.dta", clear quietly xi: nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) gen selector=runiform() if inc_highoecd==1 & e(sample) keep if selector>=`i'/100 preserve nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., scalar coeff_r=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] gen z_cdf = normal(coeff_r/se_r) scalar lb1=lb_b_notcorr/se_r scalar ub1=ub_b_notcorr/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) gen robustness=ubd-lbd keep z_cdf robustness save "robust_notcorr_degree`i'", replace restore preserve nbreg killed_earthquake mag5above1015 depth_min actualmaxmag10_adj notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., scalar coeff_r=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_r=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] gen z_cdf = normal(coeff_r/se_r) scalar lb1=lb_b_corr/se_r scalar ub1=ub_b_corr/se_r scalar lb2=lb1-(coeff_r/se_r) scalar ub2=ub1-(coeff_r/se_r) scalar ubd=normal(ub2) scalar lbd=normal(lb2) gen robustness=ubd-lbd keep z_cdf robustness save "robust_corr_degree`i'", replace restore } } use "robustness degrees", replace forvalues i = 10/90 { append using "robust_corr_degree`i'" } quietly summarize robustness display "Estimated degree of effect robustness is: " r(mean) _pctile robustness, p(2.5, 97.5) matrix range_robustness = (r(r1),r(r2)) matrix rownames range_robustness = robustness matrix colnames range_robustness = lower_025 upper_975 quietly summarize robustness di "Estimated degree of effect robustness in non-corrupt countries is: " r(mean) display "95% of unweighted simulated effect robustness ranges between: " matrix list range_robustness generate weight = 1 quietly summarize weight if robustness < . replace weight = weight/r(sum) replace weight = 0 if robustness == . gen z_cdf_share = z_cdf*weight quietly summarize z_cdf_share scalar sum_cdf_share = r(sum) *display results display "Cumulative density of simulated coefficients smaller zero: " sum_cdf_share use "robustness degrees", replace forvalues i = 10/90 { append using "robust_notcorr_degree`i'" } quietly summarize robustness display "Estimated degree of effect robustness is: " r(mean) _pctile robustness, p(2.5, 97.5) matrix range_robustness = (r(r1),r(r2)) matrix rownames range_robustness = robustness matrix colnames range_robustness = lower_025 upper_975 quietly summarize robustness di "Estimated degree of effect robustness in non-corrupt countries is: " r(mean) display "95% of unweighted simulated effect robustness ranges between: " matrix list range_robustness generate weight = 1 quietly summarize weight if robustness < . replace weight = weight/r(sum) replace weight = 0 if robustness == . gen z_cdf_share = z_cdf*weight quietly summarize z_cdf_share scalar sum_cdf_share = r(sum) *display results display "Cumulative density of simulated coefficients smaller zero: " sum_cdf_share *********************************************************************************** *********************************************************************************** *** Multiple Imputation Test use "Chapter_7_population_data.dta", clear capture mi extract 0, clear xi: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min notcorr_icrg_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<., cluster(country) outreg2 using table, replace excel scalar coeff_b_nc=_b[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b_nc=_se[1.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 scalar lb_b_nc= coeff_b_nc -invnormal(1-(100-c(level))/200)*se_b_nc scalar ub_b_nc= coeff_b_nc +invnormal(1-(100-c(level))/200)*se_b_nc scalar coeff_b_c=_b[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] scalar se_b_c=_se[0.notcorr_icrg_dum#c.sumactualmaxmagabove610] set level 95 scalar lb_b_c= coeff_b_c -invnormal(1-(100-c(level))/200)*se_b_c scalar ub_b_c= coeff_b_c +invnormal(1-(100-c(level))/200)*se_b_c * robustness test model capture drop sample ge sample=e(sample) capture dropvars corr_icrg_imp ge corr_icrg_imp=corr_icrg capture mi extract 0, clear mi set wide mi stset, clear mi register imputed corr_icrg_imp mi impute mvn corr_icrg_imp = killed_earthquake actualmaxmag10_adj mag5above1015 depth_min sumactualmaxmagabove610 dem5_polity lngdppc lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. , add(100) replace force rseed(2232) capture drop not_corr_icrg_imp_dum mi passive: ge not_corr_icrg_imp_dum=. mi passive: replace not_corr_icrg_imp_dum=0 if corr_icrg_imp<4 mi passive: replace not_corr_icrg_imp_dum=1 if corr_icrg_imp>=4 & corr_icrg_imp<. mi estimate , post dots: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min not_corr_icrg_imp_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg_imp lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. outreg2 using table, append excel test 1.not_corr_icrg_imp_dum#c.sumactualmaxmagabove610 =0.not_corr_icrg_imp_dum#c.sumactualmaxmagabove610 * Estimating degrees of effect robustness quietly mi estimate , post dots: nbreg killed_earthquake actualmaxmag10_adj mag5above1015 depth_min not_corr_icrg_imp_dum#c.sumactualmaxmagabove610 dem5_polity lngdppc corr_icrg_imp lnpop if maxmag_annual_incloffcoast>=5 & maxmag_annual_incloffcoast<. scalar coeff_r=_b[1.not_corr_icrg_imp_dum#c.sumactualmaxmagabove610] scalar se_r=_se[1.not_corr_icrg_imp_dum#c.sumactualmaxmagabove610] scalar lb1=lb_b_nc/se_r scalar ub1=ub_b_nc/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 effect robustness for non-corrupt countries is: " robustness scalar coeff_r=_b[0.not_corr_icrg_imp_dum#c.sumactualmaxmagabove610] scalar se_r=_se[0.not_corr_icrg_imp_dum#c.sumactualmaxmagabove610] scalar lb1=lb_b_c/se_r scalar ub1=ub_b_c/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 effect robustness for corrupt countries is: " robustness