****************************************************************************** ** Matthew Wilson and Joseph Wright ** origin date: 26 May 2014 ** latest update: 28 January 2015 ** ** Data sources ** OIL expropriation: Guriev et al (2011) ** Legislature: Cheibub et al (2010) ** XCONST: Polity IV (accessed: 3.24.10) ** Personalist regime: Geddes et al (2014) ** Oil rents per capita: Ross (2008) ** GDP per capita: Maddison (2010) ** Population: Maddison (2010) ** Regime duration time: Geddes et al (2014) ** War: 2010 version of Gleditsch et al (2002) ** Calendar time: Author's calculation ** Oil price shock: Author's calculation ** All expropriation: personal communication with Hajzler ** 2014 risk ratings: Delcredere Ducroire (formerly ONDD, http://www.delcredereducroire.be/en/country-risks/) ** ** Using files: ** clean_hajzler.do ** cowcodes.do ** ATH.dta ** dpi_original.dta ** gwf_yearly.dta ** hajzler_original.dta ** jmw_bjps2014.dta ** oilexpr.dta ** ONDD data 1992_2013.dta ** ****************************************************************************** set more off set scheme lean1 capture log close log using expropriation.log, replace ****************************************************************** ************ Replicate Jensen et al (2014) ******************* ****************************************************************** use jmw_bjps2014, clear recode cow (680=678) /* Yemen */ sort cowcode year merge cowcode year using gwf_yearly tab _merge gen p = gwf_personal==1 | gwf_monarch==1 if gwf_mil~=. gen legXp = p*leg gen lparty2Xp = p*lparty2 gen inheritXp= p*inherit_1996 gen inheritXlparty2= lparty2*inherit_1996 corr investor govrisk if p~=. capture drop _merge sort cowcode year save TEMPJensen.dta, replace * Exact replication * xi: reg govrisk leg ln_gdppc_9502 i.ht_region, vce(ro) est store Table1column1 xi: reg investor leg ln_gdppc_9502 i.ht_region, vce(ro) xi: reg govrisk lparty2 ln_gdppc_9502 i.ht_region, vce(ro) xi: reg investor lparty2 ln_gdppc_9502 i.ht_region, vce(ro) * Restrict sample to GWF dictatorships * xi: reg govrisk leg ln_gdppc_9502 i.ht_region if p~=., vce(ro) beta est store Table1column2 sutex govrisk leg p ln_gdppc_9502 _Iht_region_2 _Iht_region_3 _Iht_region_4 _Iht_region_5 _Iht_region_6 _Iht_region_7 if e(sample), minmax digit(2) xi: reg investor leg ln_gdppc_9502 i.ht_region if p~=. , vce(ro) beta xi: reg govrisk lparty2 ln_gdppc_9502 i.ht_region if p~=. , vce(ro) beta xi: reg investor lparty2 ln_gdppc_9502 i.ht_region if p~=. , vce(ro) beta * Introduce personalism * xi: reg govrisk leg p legXp ln_gdppc_9502 i.ht_region, vce(ro) beta gen s = e(sample) est store Table1column3 xi: reg investor leg p legXp ln_gdppc_9502 i.ht_region, vce(ro) beta xi: reg govrisk lparty2 p lparty2Xp ln_gdppc_9502 i.ht_region , vce(ro) beta xi: reg investor lparty2 p lparty2Xp ln_gdppc_9502 i.ht_region , vce(ro) beta * Raw data * Reported in Appendix Table A-3 tab govrisk if p~=. & leg~=. /* median is 3 */ gen hirisk1= govrisk<3.8 if govrisk~=. /* low risk cut is above median */ gen hirisk2= govrisk<3 if govrisk~=. /* low risk is below median */ bysort p: tab hirisk1 leg if p~=., col bysort p: tab hirisk1 leg if s==1, col bysort p: tab hirisk2 leg if p~=., col bysort p: tab hirisk2 leg if s==1, col * KRLS * gen NA= "NA" if p==. replace NA = " " if p~=. xi: krls govrisk leg ln_gdppc_9502 i.ht_region , graph est store Table2column1 lowess d_leg ln_gdppc_9502 , mcolor(gs10) ytitle(" ") xtitle("GDP per capita (log)") yline(0, lcolor(black)) xlabel(5 (1) 10) ylabel(-.4 (.1) .4) title("All regimes") bwidth(.8) lineopts(lcolor(red)) graph export "C:\Users\jwright\Documents\My Dropbox\Research\Authoritarian legislature\WilsonWright\Latex files\JMPointwiseDerivativesFull.pdf", as(pdf) replace lowess d_leg ln_gdppc_9502 if p==0, mcolor(gs10) ytitle(" ") xtitle("GDP per capita (log)") yline(0, lcolor(black)) ylabel(-.4 (.1) .4) saving(NP) title("Non-personalist") bwidth(.8) lineopts(lcolor(red)) lowess d_leg ln_gdppc_9502 if p==1, mcolor(gs10) ytitle(" ") xtitle("GDP per capita (log)") yline(0, lcolor(black)) ylabel(-.4 (.1) .4) saving(P) title("Personalist") bwidth(.8) lineopts(lcolor(red)) lowess d_leg ln_gdppc_9502 if p==., mcolor(gs10) ytitle(" ") xtitle("GDP per capita (log)") yline(0, lcolor(black)) ylabel(-.4 (.1) .4) saving(N) title("Non-Autocracies") bwidth(.8) lineopts(lcolor(red)) gr combine P.gph NP.gph N.gph , col(23) ysize(3) xsize(6) erase P.gph erase NP.gph erase N.gph * 2SLS IV * Only investor ~ lparty2 has enough variation for consistent estimates xi: ivreg2 govrisk (leg legXp=inherit_1996 inheritXp) p ln_gdppc_9502 i.ht_region, r ffirst partial(i.ht_region p) xi: ivreg2 investor (leg legXp=inherit_1996 inheritXp) p ln_gdppc_9502 i.ht_region, r ffirst partial(i.ht_region p) xi: ivreg2 govrisk (lparty2 lparty2Xp=inherit_1996 inheritXlp) p ln_gdppc_9502 i.ht_region, r ffirst partial(i.ht_region p) xi: ivreg2 investor (lparty2 lparty2Xp=inherit_1996 inheritXlp) p ln_gdppc_9502 i.ht_region, r ffirst partial(i.ht_region p) * Alternative property rights * Only enough obs in hf_prights xi: reg gcr leg p legXp ln_gdppc_9502 i.ht_region, vce(ro) xi: reg hf_prights leg p legXp ln_gdppc_9502 i.ht_region, vce(ro) xi: reg fi_legprop leg p legXp ln_gdppc_9502 i.ht_region, vce(ro) xi: reg gcr lparty2 p lparty2Xp ln_gdppc_9502 i.ht_region, vce(ro) xi: reg hf_prights lparty2 p lparty2Xp ln_gdppc_9502 i.ht_region, vce(ro) xi: reg fi_legprop lparty2 p lparty2Xp ln_gdppc_9502 i.ht_region, vce(ro) * Ordered probit * tab govrisk replace govrisk = 2 if govrisk>=1.5&govrisk<2.5 replace govrisk = 3 if govrisk>=2.5&govrisk<3.5 replace govrisk = 4 if govrisk>=3.5&govrisk<4.5 replace govrisk = 5 if govrisk>=4.5&govrisk<5.5 replace govrisk = 6 if govrisk>=5.5&govrisk<6.5 replace govrisk = 7 if govrisk>=6.5&govrisk<7.5 xi: oprobit govrisk lparty2 ln_gdppc_9502 i.ht_region , vce(ro) xi: oprobit govrisk p lparty2Xp lparty2 ln_gdppc_9502 i.ht_region , vce(ro) xi: oprobit govrisk p legXp leg ln_gdppc_9502 i.ht_region , vce(ro) ************************************************************************************ ****************** Analysis of ONDD data from 2002-2008 **************************** ************************************************************************************ use ATH, clear merge cow year using "ONDD data 1992_2013.dta" tab _merge if year<2011 tsset cow year gen oil = l.ross_loil gen plgdp = l.pwt_lgdppc gen wlgdp = l.wdi_lgdppc gen lgdp = l.mad_lgdppc gen lgdp5 = mad_l5lgdppc /* this one maximizes sample coverage */ gen legis = cg_gleg>1 if cg_gleg~=. /* binary indicator of ELECTED legislature, from CGV (2010) lagged one year */ gen pers = geddes_pers==1 | geddes_mon==1 if geddes_pers~=. * Pooled models * xi: reg Exprop lgdp5 legis i.geddes_region if pers~=., cluster(cow) est store ondd1 tab legis pers if e(sample), col bysort pers: table legis if e(sample), c(mean Expr) xi: reg Exprop lgdp5 legis pers i.geddes_region if pers~=., cluster(cow) est store ondd2 xi: reg Exprop lgdp5 i.legis*pers i.geddes_region if pers~=., cluster(cow) lincom _Ilegis_1 + _IlegXpers_1 est store ondd3 * order probit * xi: oprobit Exprop lgdp5 i.legis*pers i.geddes_region if pers~=., cluster(cow) * control for oil * xi: reg Exprop lgdp5 i.legis*pers oil i.geddes_region if pers~=., cluster(cow) * 3 different lagged lgdp measures, with differing sample coverage * xi: qui reg Exprop lgdp i.legis*pers i.geddes_region if pers~=., cluster(cow) lincom _Ilegis_1 + _IlegXpers_1 lincom _Ilegis_1 xi: qui reg Exprop plgdp i.legis*pers oil i.geddes_region if pers~=., cluster(cow) lincom _Ilegis_1 + _IlegXpers_1 lincom _Ilegis_1 xi: qui reg Exprop wlgdp i.legis*pers oil i.geddes_region if pers~=., cluster(cow) lincom _Ilegis_1 + _IlegXpers_1 lincom _Ilegis_1 * Year Fixed effects * xi: reg Exprop lgdp5 i.legis*pers i.geddes_region i.year if pers~=., cluster(cow) lincom _Ilegis_1 + _IlegXpers_1 lincom _Ilegis_1 * Cross-section model by year * global dv = "Expropriation" global cov = "lgdp5 i.legis*pers i.geddes_region" local max = 2008 local min = 2003 local d = `max' - `min' +1 matrix beta = J(`d',7,.) /* define an empty matrix to store information */ matrix interx = J(`d',3,.) /* define an empty matrix to store information */ forvalues i = `min'(1)`max' { local q= `i'-(`min'-1) matrix beta[`q',1]= `i' /* first column is year */ xi: qui reg $dv $cov if pers~=. & year==`i', vce(ro) sum legis if e(sample) & pers==0, meanonly matrix beta[`q',2]= r(mean) /* second column is share of non-personalists with legislature */ lincomest _Ilegis_1 matrix x =e(b) matrix beta[`q',3]= x[1,1] /* third column is estimate in non-personalists */ matrix x =e(V) matrix beta[`q',4]= sqrt(x[1,1]) /* fourth column is SE in non-personalists */ xi: qui reg $dv $cov if pers~=. & year==`i', vce(ro) sum legis if e(sample) & pers==1, meanonly matrix beta[`q',5]= r(mean) /* fifth column is share of personalists with legislature */ lincomest _Ilegis_1 + _IlegXpers_1 matrix x =e(b) matrix beta[`q',6]= x[1,1] /* sixth column is estimate in personalists */ matrix x =e(V) matrix beta[`q',7]= sqrt(x[1,1]) /* seventh column is SE in personalists */ matrix interx[`q',1]= `i' /* first column is year */ xi: qui reg $dv $cov if pers~=. & year==`i', vce(ro) lincomest _IlegXpers_1 matrix x =e(b) matrix interx[`q',2]= x[1,1] /* second column is interaction estimate */ matrix x =e(V) matrix interx[`q',3]= sqrt(x[1,1]) /* third column is interaction SE */ } matrix list beta matrix list interx outtable using AppendixTable6, mat(beta) replace norowlab format(%9.2f) center estout ondd* using AppendixTable5.tex, cells(b(star fmt(%9.3f)) se(par fmt(%9.2f))) stats(ll r2 N) style(tex) replace label starlevels(+ 0.10 * 0.05 ** 0.01) title(\label{Atab5}) ***************************************************************************************** ******************* Keefer DPI institutionalization comparison ************************** ***************************************************************************************** * Keefer data downloaded on 9.19.14 from: http://siteresources.worldbank.org/INTRES/Resources/469232-1107449512766/DPI2012.dta *cd "C:\Users\jwright\Documents\My Dropbox\Research\Authoritarian legislature\WilsonWright\Data files" set scheme lean1 set more off use dpi_original, clear recode execage yrsoff (-999=.) gen inst = execage-yrsoffc replace inst =0 if inst<0 & inst~=. rename country country gen cowcode = . qui do cowcodes replace cow =345 if country=="Bosnia-Herz" replace cow =482 if country=="Cent. Af. Rep." replace cow =710 if country=="PRC" replace cow =42 if country=="Dom. Rep." replace cow =411 if country=="Eq. Guinea" replace cow =732 if country=="ROK" replace cow =731 if country=="PRK" replace cow =560 if country=="S. Africa" replace cow =490 if country=="Congo (DRC)" drop if cow==. sort cow year merge cow year using ATH tab _merge if year<1975 /* all GWF obs not in DPI are pre-1975 */ gen regtype = 1 if geddes_regime=="sparty" | geddes_regime=="tthreat" | geddes_regime=="spmilitary" replace regtype = 2 if geddes_mil==1 replace regtype = 3 if geddes_pers==1 replace regtype = 4 if geddes_mon==1 label define reg1 1 "party" 2 "military" 3 "personalist" 4 "monarchy" label values regtype reg1 gen fail = archigos_failtype ==1 if archigos_failtype~=0 tab regtype fail if archigos_failure==1, row tab regtype inst, row graph bar (mean) inst, over(regtype) title("Party institutionalization") ytitle("Party age - Leader yrs in office") ylabel(0(5)20) saving(leg1) graph bar (mean) fail if archigos_failure==1, over(regtype) title("Regular transitions") ytitle("Regular leader turnover") ylabel(0(.2).8) saving(leg0) gr combine leg1.gph leg0.gph, col(2) ysize(3) erase leg1.gph erase leg0.gph ***************************************************************************************** ****************************** Expropriations Analysis ******************************* ***************************************************************************************** * Merge data * use ATH, clear merge cow year using oilexpr tab _merge drop if _merge==2 * Clean data * gen oilexp= _merge==3 if year>=1960 & year<=2006 drop _merge tsset cow year gen p = geddes_regime == "personal" | geddes_regime == "personalist" | geddes_regime == "monarchy" gen pop = ln(l.pwt_pop*1000) gen gdp = l.pwt_lgdp gen oil = l.ross_loil gen war = prio_lconflict_int gen legis = cg_gleg>1 if cg_gleg~=. /* binary indicator of ELECTED legislature, from CGV (2010) lagged one year */ gen gtime = ln(1+geddes_duration) gen time = year-1959 gen time2 = time^2 gen shock = year==1974 | year==1981 | year==1999 gen shock1 = f1.shock gen oilp = ross_oilprice gen oilp2 =ross_oilprice^2 * Create Inherit variable * bysort cg_ehead cg_country: egen min = min(year) tsset cow year gen x = l.cg_ginst if min==year replace x = cg_gleg if min==year & x==. & year<1960 replace x=l.cg_gleg if year==min + 1 & geddes_duration==1 & x==. /* prior year institutions if first year of regime and first year of leader */ replace x=2 if geddes_duration==1 & x==. & geddes_prior=="democracy" /* prior democracy if first year of regime */ bysort cg_eleadercode: egen inherit = max(x) replace inherit =0 if geddes_country=="Oman" & min==1970 /* first leader of Oman */ recode inherit (0=0) (1=0) (2=1) /* recode so inherit is ELECTED legislature */ sum inherit cg_ginst if geddes_duration~=. keep if year>=1960 & year<=2006 global c = "gdp pop gtime oil" * Summary * Reported in Appendix Table A-1 ttest pol4_xconst if (p!=.) & pol4_xconst>=-10 & year>=1960 & year<=2006, by(legis) ttest pol4_xconst if p==1 & pol4_xconst>=-10 & year>=1960 & year<=2006, by(legis) ttest pol4_xconst if p==0 & pol4_xconst>=-10 & year>=1960 & year<=2006, by(legis) **Appendix Tables: S-4...S7 preserve capture drop _merge sort cowcode year merge m:m cowcode year using "TEMPJensen.dta" drop _merge save TEMPJensenmerged.dta, replace do clean_hajzler use TEMPJensenmerged.dta, clear merge m:m cowcode year using "expropriations.dta" drop _merge xi: qui reg govrisk leg ln_gdppc_9502 i.ht_region, vce(ro) tab legis oilexp if e(sample), missing tab legis allexp if e(sample), missing codebook cowcode year if e(sample) gen gwf_nonaut=1 if gwf_personal==. & gwf_military==. & gwf_party==. & gwf_monarch==. list cowcode cg_country geddes_country gwf_personal gwf_military gwf_party gwf_monarch gwf_nonaut if e(sample) list cowcode cg_country geddes_country gwf_personal gwf_military gwf_party gwf_monarch gwf_nonaut if year==2002 & ~e(sample) xi: qui reg oilexp i.cow i.year $c legis if p~=., r tab legis oilexp if e(sample), missing tab legis allexp if e(sample), missing codebook cowcode year if e(sample) list cowcode geddes_country cg_country year if oilexp==1 & e(sample) egen minyear=min(year) if e(sample), by(cowcode) egen maxyear=max(year) if e(sample), by(cowcode) egen countyear=count(year) if e(sample), by(cowcode) collapse minyear maxyear countyear if e(sample), by(cowcode cg_country) drop if countyear==. encode cg_country, gen(cg_country2) drop if cg_country2==. drop cg_country2 sort cowcode list cowcode cg_country minyear maxyear countyear erase TEMPJensen.dta erase TEMPJensenmerged.dta erase expropriations.dta restore ** Appendix Figure for oil expropriations over time ** xi: qui reg oilexp i.cow i.year legis if p~=., r egen oilyr= sum(oilexp) if e(sample), by(year) tsset cow year twoway (bar oilyr year if cow==437, xscale(range(1960 2006)) xlabel(1960 (5) 2005) xtitle("Year") /* */ ytitle("Countries with expropriation acts") legend( label(1 "All expropriations") label(2 "Petroleum sector only") /* */ pos(12) col(2) ring(1))) ** Figure 2 ** *Figure 2 models, left panel: XCONST* xi: qui reg oilexp i.cow i.year $c pol4_xconst if p~=. & pol4_xconst>0, r lincom pol4_xconst est store Table3column1 est store lpm1 sum pol4_xconst if e(sample) xi: qui reg oilexp i.cow i.year $c pol4_xconst if p~=. & pol4_xconst>0 & p==1, r lincom pol4_xconst est store Table3column2 est store lpm2 sum pol4_xconst if e(sample) xi: qui reg oilexp i.cow i.year $c pol4_xconst if p~=. & pol4_xconst>0 & p==0, r lincom pol4_xconst est store Table3column3 est store lpm3 sum pol4_xconst if e(sample) *Figure 2 models, right panel: LEGIS* xi: qui reg oilexp i.cow i.year $c legis if p~=., r lincom legis est store Table3column4 est store lpm4 gen s = e(sample) tab oilexp if s tab p legis if s, row ** Raw data by regime type ** Appendix Table A-7 bysort p: tab legis if p~=. & oilexp~=. /* 72% of non-pers have leg; 62% of pers have leg */ bysort p: tab legis if p~=. & oilexp~=. & year>1989 /* 76% of non-pers have leg; 70% of pers have leg */ bysort p: tab oilexp legis if p~=., col /* 7.1 times expr rate in nonpers; 2.5 time expr rate in pers */ *Estimating sample bysort p: tab legis if s==1 /* 74% of non-pers have leg; 62% of pers have leg */ bysort p: tab legis if s==1 & year>1989 /* 81% of non-pers have leg; 70% of pers have leg */ bysort p: tab oilexp legis if s==1, col /* 7.1 times expr rate in nonpers; 2.5 time expr rate in pers */ * Share of countries in sample with change in legislature over time, by personalist (Footnote 12) tsset cow year gen dleg =d.leg recode dleg (-1 =1) tab dleg egen maxp = max(dleg) if s==1 & p==1, by(cow) egen maxnp = max(dleg) if s==1 & p==0, by(cow) egen ctagp = tag(cow) if s==1 & p==1 egen ctagnp = tag(cow) if s==1 & p==0 tab maxp if ctagp==1 /* 61% of personalist regimes have variation over time in legislature */ tab maxnp if ctagnp==1 /* 51% of personalist regimes have variation over time in legislature */ drop dleg max* ctag* ** Summary statistics ** sutex oilexp year $c legis p if e(sample), minmax digit(2) xi: qui reg oilexp i.cow i.year $c legis if p==1, r lincom legis est store Table3column5 est store lpm5 xi: qui reg oilexp i.cow i.year $c legis if p==0, r lincom legis est store Table3column6 est store lpm6 save temp, replace *Graphs use temp , clear tempfile tf1 tf2 tf3 estimates restore lpm4 lincomest (legis) , level(95) parmest,label saving(`tf1',replace) estimates restore lpm5 lincomest (legis) , level(95) parmest,label saving(`tf2',replace) estimates restore lpm6 lincomest (legis) , level(95) parmest,label saving(`tf3',replace) dsconcat `tf1' `tf2' `tf3' replace parm="All" if _n==1 replace parm="Personalist" if _n==2 replace parm="Non-personalist" if _n==3 sencode parm, gen(myparm) drop if _n>4 set scheme lean1 gen est = estimate gen mx = max gen mn = min gen rounde = round(est, .001) eclplot est mn mx myparm, xscale(range(0.5 3.5)) yscale(range (-0.08 0.06)) /* */ ylab(-.08 (.02) .06) xlab(1 2 3, labsize(small)) legend(label(1 "Estimate") label(2 "95% CI") pos(12) col(2) ring(1)) ytitle("Marginal effect of Legislature") /* */ xtitle("") plotregion(margin(large)) yline(0, lpattern(dash)) /* */ estopts( mlabel(rounde) mlabposition(1)) use temp , clear tempfile tf1 tf2 tf3 estimates restore lpm1 lincomest (pol4_xconst)*2.2 , level(95) parmest,label saving(`tf1',replace) estimates restore lpm2 lincomest (pol4_xconst)*2.6 , level(95) parmest,label saving(`tf2',replace) estimates restore lpm3 lincomest (pol4_xconst)*2.8 , level(95) parmest,label saving(`tf3',replace) dsconcat `tf1' `tf2' `tf3' replace parm="All" if _n==1 replace parm="Personalist" if _n==2 replace parm="Non-personalist" if _n==3 sencode parm, gen(myparm) drop if _n>4 set scheme lean1 gen est = estimate gen mx = max gen mn = min gen rounde = round(est, .001) eclplot est mn mx myparm, xscale(range(0.5 3.5)) yscale(range (-0.06 0.06)) /* */ ylab(-.06 (.02) .06) xlab(1 2 3, labsize(small)) legend(label(1 "Estimate") label(2 "95% CI") pos(12) col(2) ring(1)) ytitle("Marginal effect of XCONST" "(2 StDev {&Delta})") /* */ xtitle("") plotregion(margin(large)) yline(0, lpattern(dash)) /* */ estopts( mlabel(rounde) mlabposition(1)) ** Figure 3: Kernal regression ** use temp, clear *No unit means* *Full sample* xi: krls oilexp p legis $c time*, graph est store k1 ttest d_legis, by(p) /* average pointwise marginal effect varies by personalism */ gen nooil = exp(oil)-1<100 ttest d_legis, by(nooil) /* average pointwise marginal effect varies by oil rents */ drop nooil qui sum d_legis if p==1 local p = r(mean) qui sum d_legis if p==0 local np = r(mean) twoway (hist d_legis if p==1, bin(100) title("Personalist") saving(P) xtitle("") xline(`p', lcolor(black)) xscale(range (-.3 .3)) xlabel(-.3 (.1) .3) color(red)) twoway (hist d_legis if p==0, bin(100) title("Non-personalist") saving(NP) xline(`np', lcolor(black)) xscale(range (-.3 .3)) xlabel(-.3 (.1) .3) color(blue) xtitle("Pointwise derivatives of Legislature")) gr combine P.gph NP.gph , col(1) ysize(6) erase P.gph erase NP.gph lowess d_legis oil if p==0, mcolor(gs10) ytitle(" ") xtitle("Oil rents per capita (log)") yline(0,lcolor(black)) ylabel(-.3 (.1) .2) yline(`np' , lcolor(blue) lpattern(dash)) saving(NP) title("Non-personalist") bwidth(.2) lineopts(lcolor(red)) lowess d_legis oil if p==1, mcolor(gs10) ytitle("Pointwise marginal effect") xtitle("Oil rents per capita (log)") yline(0, lcolor(black)) ylabel(-.3 (.1) .2) yline(`p', lcolor(blue) lpattern(dash)) saving(P) title("Personalist") bwidth(.2) lineopts(lcolor(red)) gr combine P.gph NP.gph , col(2) ysize(3) xsize(6) erase P.gph erase NP.gph lowess d_legis gdp if p==0, mcolor(gs10) ytitle(" ") xtitle("GDP per capita (log)") yline(0,lcolor(black)) ylabel(-.3 (.1) .2) yline(`np' , lcolor(blue) lpattern(dash)) saving(NP) title("Non-personalist") bwidth(.2) lineopts(lcolor(red)) lowess d_legis gdp if p==1, mcolor(gs10) ytitle("Pointwise marginal effect") xtitle("GDP per capita (log)") yline(0, lcolor(black)) ylabel(-.3 (.1) .2) yline(`p', lcolor(blue) lpattern(dash)) saving(P) title("Personalist") bwidth(.2) lineopts(lcolor(red)) gr combine P.gph NP.gph , col(2) ysize(3) xsize(6) erase P.gph erase NP.gph *Unit Means as FE* use temp, clear xi: qui reg oilexp i.cow i.year $c legis if p~=., r lincom legis local vars = "gdp pop gtime oil legis p time time2" foreach m of local vars { egen cm_`m' =mean(`m') if s==1, by(cow) } xi: krls oilexp p legis $c time* cm_*, graph /* report this model specification in Appendix Table A-9 */ ttest d_legis, by(p) /* average pointwise marginal effect varies by personalism */ gen nooil = exp(oil)-1<100 ttest d_legis, by(nooil) /* average pointwise marginal effect varies by oil rents */ drop nooil qui sum d_legis if p==1 local p = r(mean) qui sum d_legis if p==0 local np = r(mean) twoway (hist d_legis if p==1, bin(100) title("Personalist") saving(P) xtitle("") xline(`p', lcolor(black)) xscale(range (-.3 .3)) xlabel(-.3 (.1) .3) color(red)) twoway (hist d_legis if p==0, bin(100) title("Non-personalist") xtitle("Pointwise derivatives of Legislature") xline(`np', lcolor(black)) saving(NP) xscale(range (-.3 .3)) xlabel(-.3 (.1) .3) color(blue)) gr combine P.gph NP.gph , col(1) ysize(6) erase P.gph erase NP.gph ttest d_legis if oil~=0, by(p) qui sum d_legis if p==1 & oil~=0 local p = r(mean) qui sum d_legis if p==0 & oil~=0 local np = r(mean) twoway (hist d_legis if p==1 & oil~=0, bin(100) title("Personalist") saving(P) xtitle("") xline(`p', lcolor(black)) xscale(range (-.3 .3)) xlabel(-.3 (.1) .3) color(red)) twoway (hist d_legis if p==0 & oil~=0, bin(100) title("Non-personalist") xline(`np', lcolor(black)) xtitle("Pointwise derivatives of Legislature") saving(NP) xscale(range (-.3 .3)) xlabel(-.3 (.1) .3) color(blue)) gr combine P.gph NP.gph , col(1) ysize(6) erase P.gph erase NP.gph qui sum d_legis if p==1 local p = r(mean) qui sum d_legis if p==0 local np = r(mean) lowess d_legis oil if p==0, mcolor(gs10) ytitle(" ") xtitle("Oil rents per capita (log)") yline(0, lcolor(black)) ylabel(-.3 (.1) .1) yline(`np', lcolor(blue) lpattern(dash)) saving(NP) title("Non-personalist") bwidth(.2) lineopts(lcolor(red)) lowess d_legis oil if p==1, mcolor(gs10) ytitle("Pointwise marginal effect") xtitle("Oil rents per capita (log)") yline(0, lcolor(black)) ylabel(-.3 (.1) .1) yline(`p', lcolor(blue) lpattern(dash)) saving(P) title("Personalist") bwidth(.2) lineopts(lcolor(red)) gr combine P.gph NP.gph , col(2) ysize(3) xsize(6) erase P.gph erase NP.gph lowess d_legis gdp if p==0, mcolor(gs10) ytitle(" ") xtitle("GDP per capita (log)") yline(0,lcolor(black)) ylabel(-.3 (.1) .2) yline(`np' , lcolor(blue) lpattern(dash)) saving(NP) title("Non-personalist") bwidth(.2) lineopts(lcolor(red)) lowess d_legis gdp if p==1, mcolor(gs10) ytitle("Pointwise marginal effect") xtitle("GDP per capita (log)") yline(0, lcolor(black)) ylabel(-.3 (.1) .2) yline(`p', lcolor(blue) lpattern(dash)) saving(P) title("Personalist") bwidth(.2) lineopts(lcolor(red)) gr combine P.gph NP.gph , col(2) ysize(3) xsize(6) erase P.gph erase NP.gph *look at last decade in sample* twoway (scatter d_legis oil if year>=1997 & oil>0 & p==0, msymbol(circle) mcolor(gs10) ) (scatter d_legis oil if year>=2002 & oil>0 & p==1, msymbol(triangle)) (lfit d_legis oil if year>=1997 & oil>0 & p==0 ) (lfit d_legis oil if year>=2002 & oil>0 & p==1 , xtitle("Oil rents per capita (log)")) **Tables for reporting** estout Table1column* using AppendixTableA2.tex, cells(b(star fmt(%9.3f)) se(par fmt(%9.2f))) stats(ll r2 N) style(tex) replace label starlevels(+ 0.10 * 0.05 ** 0.01) title(\label{Atab2}) estout Table3column* using AppendixTableA8.tex, cells(b(star fmt(%9.3f)) se(par fmt(%9.2f))) stats(ll r2 N) style(tex) replace label starlevels(+ 0.10 * 0.05 ** 0.01) title(\label{Atab8}) ** Robustness tests ** use temp, clear *Multiparty legislature: xi: qui reg oilexp i.cow i.year $c i.cg_ginst if p==1, r lincom _Icg_ginsti_1 lincom _Icg_ginsti_2 xi: qui reg oilexp i.cow i.year $c i.cg_ginst if p==0, r lincom _Icg_ginsti_1 lincom _Icg_ginsti_2 *Not robust errors xi: qui reg oilexp i.cow i.year $c legis if p==1, lincom legis xi: qui reg oilexp i.cow i.year $c legis if p==0, lincom legis *Cluster errors on country xi: qui reg oilexp i.cow i.year $c legis if p==1, cluster(cow) lincom legis xi: qui reg oilexp i.cow i.year $c legis if p==0, cluster(cow) lincom legis *Cluster errors on year xi: qui reg oilexp i.cow i.year $c legis if p==1, cluster(year) lincom legis xi: qui reg oilexp i.cow i.year $c legis if p==0, cluster(year) lincom legis *No control variables xi: qui reg oilexp i.cow i.year legis if p==1, r lincom legis xi: qui reg oilexp i.cow i.year legis if p==0, r lincom legis *Oil price xi: qui reg oilexp i.cow $c oilp legis if p==1, r lincom legis xi: qui reg oilexp i.cow $c oilp legis if p==0, r lincom legis xi: qui reg oilexp i.cow $c oilp oilp2 legis if p==1, r lincom legis xi: qui reg oilexp i.cow $c oilp oilp2 legis if p==0, r lincom legis *Oil price + shocks xi: qui reg oilexp i.cow $c oilp shock1 legis if p==1, r lincom legis xi: qui reg oilexp i.cow $c oilp shock1 legis if p==0, r lincom legis xi: qui reg oilexp i.cow $c oilp oilp2 shock1 legis if p==1, r lincom legis xi: qui reg oilexp i.cow $c oilp oilp2 shock1 legis if p==0, r lincom legis *Linear time trend xi: qui reg oilexp i.cow time legis if p==1, r lincom legis xi: qui reg oilexp i.cow time legis if p==0, r lincom legis *Quadratic time trend xi: qui reg oilexp i.cow time time2 legis if p==1, r lincom legis xi: qui reg oilexp i.cow time time2 legis if p==0, r lincom legis *Country-specific linear time trend global t = "i.cow*time" set matsize 800 xi: qui reg oilexp $t $c legis if p==1, r lincom legis xi: qui reg oilexp $t $c legis if p==0, r lincom legis *Country-specific quadratic time trend global t = "i.cow*time i.cow*time2" set matsize 800 xi: qui reg oilexp $t $c legis if p==1, r lincom legis xi: qui reg oilexp $t $c legis if p==0, r lincom legis *Regime duration fixed effects xi: qui reg oilexp i.cow i.year i.geddes_duration $c legis if p==1, r lincom legis xi: qui reg oilexp i.cow i.year i.geddes_duration $c legis if p==0, r lincom legis *Regime case (not country) fixed effects egen rcode = group(geddes_case) xi: qui reg oilexp i.rcode i.year $c legis if p==1, r lincom legis xi: qui reg oilexp i.rcode i.year $c legis if p==0, r lincom legis *Conditional logit xi: qui logit oilexp i.cow oilp oilp2 shock1 $c i.p*legis, r /* interaction model so fewer countries are dropped from model */ lincom legis lincom legis + _IpXlegis_1 *Random (not fixed) effects xi: qui xtreg oilexp i.year $c legis if p==1, re lincom legis xi: qui xtreg oilexp i.year $c legis if p==0, re lincom legis *Correlated random effects (Reported in Appendix Table B-1) use temp, clear xi: qui reg oilexp i.cow i.year $c legis if p~=., r lincom legis local vars = "gdp pop gtime oil legis p time time2" foreach m of local vars { egen cm_`m' =mean(`m') if s==1, by(cow) /* average for each unit for the full sample -- both pers and non-pers */ } egen my_oilexp = mean(oilexp) if s==1, by(cow) /* mean of DV */ foreach m of local vars { egen cmp_`m' =mean(`m') if s==1 & p==1, by(cow) /* average for each unit for the sub-sample -- pers */ } foreach m of local vars { egen cmnp_`m' =mean(`m') if s==1 & p==0, by(cow) /* average for each unit for the sub-sample -- non-pers */ } * Unit means but no RE * xi: qui reg oilexp legis $c time time2 cm_* if p==1, r lincom legis xi: qui reg oilexp legis $c time time2 cm_* if p==0, r lincom legis * Unit means and YES RE * xi: qui xtreg oilexp legis $c time time2 cm_* if p==1, r re /* These are reported in robustness table */ lincom legis xi: qui xtreg oilexp legis $c time time2 cm_* if p==0, r re /* These are reported in robustness table */ lincom legis * Unit means and YES RE and NON-linear link * xi: qui xtprobit oilexp legis $c time time2 cm_* if p==1, re /* Changing link function makes little difference */ lincom legis xi: qui xtprobit oilexp legis $c time time2 cm_* if p==0, re /* Changing link function makes little difference */ lincom legis * Unit means and YES RE and YES mean y * xi: qui xtreg oilexp legis $c time time2 cm_* my_ if p==1, r re /* adding y-mean to RHS makes little difference */ lincom legis xi: qui xtreg oilexp legis $c time time2 cm_* my_ if p==0, r re /* adding y-mean to RHS makes little difference */ lincom legis * Sub-sample unit means and YES RE * xi: qui xtreg oilexp legis $c time time2 cmp_* if p==1, r re /* Substantively little difference in estimates if we use full sample means or sub-sample means to model unit heterogeneity */ lincom legis xi: qui xtreg oilexp legis $c time time2 cmnp_* if p==0, r re /* Substantively little difference in estimates if we use full sample means or sub-sample means to model unit heterogeneity */ lincom legis *Exclude monarchies* xi: qui reg oilexp i.cow i.year $c legis if geddes_personal==1 , r lincom legis xi: qui reg oilexp i.cow i.year $c legis if p==0, r lincom legis *Pure types only* rename geddes_regime ged xi: qui reg oilexp i.cow i.year $c legis if geddes_pers==1 | geddes_monarch==1 , r lincom legis xi: qui reg oilexp i.cow i.year $c legis if ged=="military" | ged=="sparty" , r lincom legis *Ross's Big Oil Change* gen smalloil= year<1980 xi: qui reg oilexp i.cow i.year $c i.smalloil*legis if p==1 , r lincom legis lincom legis + _IsmaXlegis_1 xi: qui reg oilexp i.cow i.year $c i.smalloil*legis if p==0, r lincom legis lincom legis + _IsmaXlegis_1 *Cold war* gen cw= year<1989 xi: qui reg oilexp i.cow i.year $c i.cw*legis if p==1 , r lincom legis lincom legis + _IcwXlegis_1 xi: qui reg oilexp i.cow i.year $c i.cw*legis if p==0, r lincom legis lincom legis + _IcwXlegis_1 *IV FE xi: xtivreg2 oilexp i.year $c (legis= inherit) , fe partial(i.year) r est store iv1 qui reg legis oilexp i.cow i.year $c inherit if p~=., r avplot inherit xi: xtivreg2 oilexp i.year $c (legis= inherit) if p==1, fe partial(i.year) r est store iv2 qui reg legis oilexp i.cow i.year $c inherit if p==1, r avplot inherit xi: xtivreg2 oilexp i.year $c (legis= inherit) if p==0, fe partial(i.year) r est store iv3 qui reg legis oilexp i.cow i.year $c inherit if p==0, r avplot inherit *No FE xi: ivreg2 oilexp i.year $c (legis= inherit) , partial(i.year) r est store iv4 xi: ivreg2 oilexp i.year $c (legis= inherit) if p==1, partial(i.year) r est store iv5 xi: ivreg2 oilexp i.year $c (legis= inherit) if p==0, partial(i.year) r est store iv6 estout iv1 iv2 iv3 iv4 iv5 iv6 using AppendixTableB2.tex, cells(b(star fmt(%9.3f)) se(par fmt(%9.2f))) stats(widstat N) style(tex) replace label starlevels(+ 0.10 * 0.05 ** 0.01) title(\label{Atab1}) * Lewbel instruments * xi: ivreg2h oilexp i.cow i.year $c p (legis= inherit) if p==1, partial(i.year i.cow) r xi: ivreg2h oilexp i.cow i.year $c p (legis= inherit) if p==0, partial(i.year i.cow) r *All expropriations, not just oil expropriations * Merge data * do clean_hajzler use ATH, clear merge cow year using expropriations tab _merge drop if _merge==2 * Clean data * gen take = _merge==3 if year>=1960 & year<=2006 gen oilany = oilexp>0 & _merge==3 /* Binary indicator of oil exproriation in a given year */ gen takeany = allexp>0 & _merge==3 drop _merge tsset cow year gen p = geddes_regime == "personal" | geddes_regime == "personalist" | geddes_regime == "monarchy" /* code Gabon as personalist instead of party */ gen pop = ln(l.pwt_pop*1000) gen gdp = l.pwt_lgdp gen oil = l.ross_loil gen legis = cg_glegis>1 if cg_glegis~=. /* elected legislature */ gen gtime = ln(1+geddes_duration) gen gtime2 = gtime^2 gen time = year-1959 gen time2 = time^2 *Inherit* bysort cg_ehead cg_country: egen min = min(year) tsset cow year gen x = l.cg_ginst if min==year replace x = cg_gleg if min==year & x==. & year<1960 replace x=l.cg_gleg if year==min + 1 & geddes_duration==1 & x==. /* prior year institutions if first year of regime and first year of leader */ replace x=2 if geddes_duration==1 & x==. & geddes_prior=="democracy" /* prior democracy if first year of regime */ bysort cg_eleadercode: egen inherit = max(x) replace inherit =0 if geddes_country=="Oman" & min==1970 /* first leader of Oman */ recode inherit (0=0) (1=0) (2=1) /* recode so inherit is ELECTED legislature */ sum inherit cg_ginst if geddes_duration~=. keep if year>=1960 & year<=2006 global c = "gdp pop gtime oil" *Expropriation across time* xi: qui reg take i.cow i.year legis if p~=., r egen takeyr = sum(allexp) if e(sample), by(year) egen oilyr= sum(oilexp) if e(sample), by(year) tsset cow year twoway (bar takeyr year if cow==437) (line oilyr year if cow==437, lpattern(solid) lcolor(blue)), xscale(range(1960 2006)) /* */ xlabel(1960 (5) 2005) ylabel(0 (10) 60) xtitle("Year") ytitle("Total expropriations", /* */ axis(1)) legend(label(1 "All expropriations") label(2 "Petroleum sector only") pos(1) col(1) ring(0)) *All expropriations xi: qui reg take i.cow i.year $c legis if p~=., r lincom legis tab take if e(sample) tab take if e(sample) & year>1989 xi: qui reg take i.cow i.year $c legis if p==1, r lincom legis xi: qui reg take i.cow i.year $c legis if p==0, r lincom legis global c = "gdp pop gtime oil time time2" xi: qui reg take i.cow i.year $c p legis, r gen s = e(sample) local vars = "gdp pop gtime oil p legis" foreach m of local vars { egen cm_`m' =mean(`m') if s==1, by(cow) } local vars = "gdp pop gtime oil p legis" foreach m of local vars { egen ym_`m' =mean(`m') if s==1, by(year) } xi: krls take p legis $c cm_* , graph reg d_legis p $c cm_* legis ttest d_leg , by(p) qui sum d_legis if p==1 local p = r(mean) qui sum d_legis if p==0 local np = r(mean) lowess d_legis year if p==0, mcolor(gs10) ytitle(" ") xtitle("Year") yline(0, lcolor(black)) xlabel(1960 (5) 2005) ylabel(-.3 (.1) .1) yline(`np', lcolor(blue) lpattern(dash)) saving(NP) title("Non-personalist") bwidth(.6) lineopts(lcolor(red)) lowess d_legis year if p==1, mcolor(gs10) ytitle("Pointwise marginal effect") xtitle("Year") xlabel(1960 (5) 2005) yline(0, lcolor(black)) ylabel(-.3 (.1) .1) yline(`p', lcolor(blue) lpattern(dash)) saving(P) title("Personalist") bwidth(.6) lineopts(lcolor(red)) gr combine P.gph NP.gph , col(2) ysize(3) xsize(6) erase P.gph erase NP.gph *2SLS* gen pXinherit = p*inherit gen pXlegis = p*legis * no oil * xi: xtivreg2 take i.year i.p*gdp i.p*pop i.p*gtime (legis = inherit), fe partial(i.year) r ffirst est store allIV1 xi: xtivreg2 take i.year i.p*gdp i.p*pop i.p*gtime (legis pXlegis= inherit pXinherit), fe partial(i.year) r ffirst est store allIV2 lincom legis + pXlegis * yes oil * xi: xtivreg2 take i.year i.p*gdp i.p*pop i.p*gtime i.p*oil (legis = inherit), fe partial(i.year) r ffirst est store allIV3 xi: xtivreg2 take i.year i.p*gdp i.p*pop i.p*gtime i.p*oil (legis pXlegis= inherit pXinherit), fe partial(i.year) r ffirst est store allIV4 lincom legis + pXlegis estout allIV1 allIV2 allIV3 allIV4 using AppendixTableB3.tex, cells(b(star fmt(%9.3f)) se(par fmt(%9.2f))) stats(widstat N) style(tex) replace label starlevels(+ 0.10 * 0.05 ** 0.01) title(\label{Atab1}) *Expand sample to include observations where oil rents is missing global c = "gdp pop gtime" xi: qui reg take i.cow i.year $c legis if p==1, r lincom legis xi: qui reg take i.cow i.year $c legis if p==0, r lincom legis *Largest possible sample given legislature and expropriation data xi: qui reg take i.cow i.year gtime legis if p==1, r lincom legis xi: qui reg take i.cow i.year gtime legis if p==0, r lincom legis *Test Hajzler oil global c = "gdp pop gtime oil" xi: qui reg oilany i.cow i.year $c legis if p==1, r lincom legis xi: qui reg oilany i.cow i.year $c legis if p==0, r lincom legis xi: logit oilany time time2 i.cow $c i.p*legis, cluster(geddes_case) lincom legis lincom legis + _IpXlegis_1 *pre-1980 --- no results xi: qui reg take i.cow i.year $c legis if p~=. & year<1980, r lincom legis xi: qui reg take i.cow i.year $c legis if p==1 & year<1980, r lincom legis xi: qui reg take i.cow i.year $c legis if p==0& year<1980, r lincom legis *post-1979 xi: qui reg take i.cow i.year $c legis if p~=. & year>=1980, r lincom legis xi: qui reg take i.cow i.year $c legis if p==1 & year>=1980 , r lincom legis xi: qui reg take i.cow i.year $c legis if p==0 & year>=1980 , r lincom legis *pre-1990 (Reported in Appendix Table B-4) xi: qui reg take i.cow i.year $c legis if p~=. & year<1990, r lincom legis xi: qui reg take i.cow i.year $c legis if p==1 & year<1990 , r lincom legis xi: qui reg take i.cow i.year $c legis if p==0 & year<1990, r lincom legis *post-1989 (Reported in Appendix Table B-4) xi: qui reg take i.cow i.year $c legis if p~=. & year>=1990, r lincom legis xi: qui reg take i.cow i.year $c legis if p==1 & year>=1990 , r lincom legis xi: qui reg take i.cow i.year $c legis if p==0 & year>=1990, r lincom legis ********** THE END *********** log close