************************************ *** This file generates Figure 1 *** ************************************ use "data\gss_estimation.dta", clear local i = 1 foreach var of varlist helppoor2 welfare getahead partyidnew polviews2 presidential2{ qui parmby "reg `var' shock $controls if newsample == 0, cluster(region)", saving(reg`i', replace) ids(`var') local i = `i' + 1 qui parmby "reg `var' shock $controls, cluster(region)", saving(reg`i', replace) ids(`var') local i = `i' + 1 } drop _all forvalues i = 1(1)12{ append using reg`i'.dta } keep if parm == "shock" g parmorder = _n bysort idstr: egen outcome = min(parmorder) replace outcome = (outcome - 1)/2 + 1 g spec = (parmorder - (outcome - 1)*2) + 1 append using "orig\gss_original_estimates.dta" replace spec = 1 if spec == . # d; label define spec 1 "GS 2014" 2 "narrow replication" 3 "long replication" ; # d cr label values spec spec g table = 1 save table1.dta, replace * Table 2 use "data\gss_estimation.dta", clear local i = 1 foreach var of varlist helppoor2 welfare getahead partyidnew polviews2 presidential2{ qui parmby "reg `var' shock $controls2 if newsample == 0, cluster(region)", saving(reg`i', replace) ids(`var') local i = `i' + 1 qui parmby "reg `var' shock $controls2, cluster(region)", saving(reg`i', replace) ids(`var') local i = `i' + 1 } drop _all forvalues i = 1(1)12{ append using reg`i'.dta } keep if parm == "shock" g parmorder = _n bysort idstr: egen outcome = min(parmorder) replace outcome = (outcome - 1)/2 + 1 g spec1 = (parmorder - (outcome - 1)*2) + 1 append using "orig\gss_estimates_table2.dta" replace spec1 = 1 if spec1 == . drop spec ren spec1 spec g table = 2 save table2.dta, replace * Table 3 use "data\gss_estimation.dta", clear local i = 1 foreach var of varlist helppoor2 welfare getahead partyidnew polviews2 presidential2{ qui parmby "reg `var' shock $controls3 if newsample == 0, cluster(region)", saving(reg`i', replace) ids(`var') local i = `i' + 1 qui parmby "reg `var' shock $controls3, cluster(region)", saving(reg`i', replace) ids(`var') local i = `i' + 1 } drop _all forvalues i = 1(1)12{ append using reg`i'.dta } keep if parm == "shock" g parmorder = _n bysort idstr: egen outcome = min(parmorder) replace outcome = (outcome - 1)/2 + 1 g spec1 = (parmorder - (outcome - 1)*2) + 1 append using "orig\gss_estimates_table3.dta" replace spec1 = 1 if spec1 == . drop spec ren spec1 spec g table = 3 save table3.dta, replace * combine use table1.dta, clear append using table2.dta append using table3.dta label values spec spec *set scheme tufte capture label drop table label define table 1 "A. baseline" 2 "B. cohort effects" 3 "C. additional controls" label values table table save tables.dta, replace * Tables 1-3 set scheme s1mono eclplot estimate min95 max95 outcome, eplot(scatter) horizontal rplot(rs) supby(spec, spaceby(0.15) offset(-0.15) missing) /// by(table, col(3) note("")) /// yline(1.5 2.5 3.5 4.5 5.5, lpattern(dot)) /// ylabel(1 "Help poor" 2 "Assistance poor" 3 "Work-luck" 4 "Party affiliation" 5 "Political views" 6 "Voting Democrat", labsize(small)) /// estopts1(msymbol(o) mcolor(black)) /// estopts3(msymbol(s) mcolor(gray)) /// estopts2(msymbol(t) mcolor(gray)) /// ciopts2(lcolor(gray)) ciopts1(lcolor(black)) ciopts3(lcolor(gray)) /// xtitle("Effect of economic shock", size(small)) /// xline(0, lcolor(red) lwidth(thin)) /// ytitle("") /// legend(size(small) rows(1)) graph export "figure1.pdf", replace /* End of file */