*** Set directories *** Edit the root below to your working directory global root = "SET DIRECTORY HERE" global input = "$root/INPUT" global output = "$root/OUTPUT" *********** *** IEG *** *********** *** Import IEG project-level evaluation data. Data may be downloaded at: http://data.worldbank.org/data-catalog/IEG insheet using "$input/IEG_World_Bank_Project_Performance_Ratings.csv", clear *** Outcomes gen iegscore = . replace iegscore = 5 if ieg_outcome=="Highly Satisfactory" replace iegscore = 4 if ieg_outcome=="Satisfactory" replace iegscore = 3 if ieg_outcome=="Moderately Satisfactory" replace iegscore = 2 if ieg_outcome=="Moderately Unsatisfactory" replace iegscore = 1 if ieg_outcome=="Unsatisfactory" replace iegscore = 0 if ieg_outcome=="Highly Unsatisfactory" gen iegok = iegscore>2 if iegscore!=. *** Collapsing by start or end year preserve collapse (mean) iegscore iegok (count) proj=iegscore, by(approvalfy) rename approvalfy year rename iegscore iegscore0 rename iegok iegok0 rename proj proj0 tempfile start save `start' restore collapse (mean) iegscore iegok (count) proj=iegscore, by(exitfy) rename exitfy year rename iegscore iegscore1 rename iegok iegok1 rename proj proj1 mmerge year using `start' save "$output/iegscores.dta", replace *************** *** LENDING *** *************** *** Import WB Disbursement and Credit Data, manually entered from WB PDFs, see source columns in csv file insheet using "$input/Disbursement and IDA Credit.csv", clear drop *source *** Define Presidents' Terms gen prez1 = year>=2012 & year!=. gen prez2 = year>=2007 & year<=2012 gen prez3 = year>=2005 & year<=2007 gen prez4 = year>=1995 & year<=2005 gen prez5 = year>=1991 & year<=1995 gen prez6 = year>=1986 & year<=1991 gen prez7 = year>=1981 & year<=1986 gen prez8 = year>=1968 & year<=1981 gen prez9 = year>=1963 & year<=1968 gen prez10 = year>=1949 & year<=1962 gen prez11 = year>=1947 & year<=1949 gen prez12 = year>=1946 & year<=1946 gen prez = "Kim, 2012-16" if year>=2012 & year!=. replace prez = "Zoellick, 2007-12" if year>=2007 & year<=2012 replace prez = "Wolfowitz, 2005-07" if year>=2005 & year<=2007 replace prez = "Wolfensohn, 1995-05" if year>=1995 & year<=2005 replace prez = "Preston, 1991-95" if year>=1991 & year<=1995 replace prez = "Conable, 1986-91" if year>=1986 & year<=1991 replace prez = "Clausen, 1981-86" if year>=1981 & year<=1986 replace prez = "McNamara, 1968-81" if year>=1968 & year<=1981 /* replace prez = "Woods, 1963-68" if year>=1963 & year<=1968 replace prez = "Black, 1949-62" if year>=1949 & year<=1962 replace prez = "McCloy, 1947-49" if year>=1947 & year<=1949 replace prez = "Meyer, 1946-46" if year>=1946 & year<=1946 */ *********** *** GDP *** *********** *** Import development indicators preserve tempfile devindic insheet using "$input/d9dbc35b-abee-46e5-8abc-23d465998874_Data.csv", clear *** Reshape and clean keep if countryname == "World" reshape long yr, i(SeriesName) j(year) replace SeriesName = "realgdp" if seriescode == "NY.GDP.PCAP.KD" replace SeriesName = "nomgdp" if seriescode == "NY.GDP.PCAP.CD" drop seriescode countryname countrycode reshape wide yr, i(year) j(SeriesName) string foreach var of varlist * { local name = regexr("`var'", "yr", "") rename `var' `name' } save `devindic' restore *** Merge in development indicators mmerge year using `devindic' drop _merge destring realgdp nomgdp, force replace destring realgdp nomgdp, force replace *** Add IEG scores mmerge year using "$output/iegscores.dta" **************** *** ANALYSIS *** **************** *** Generate year count per Presidents' terms forval p = 1/10{ egen baseyear`p' = min(year) if prez`p'==1 gen t`p' = year - baseyear`p' } *** Normalize by base year foreach var in realgdp nomgdp idadisbursements idacommitments ibrddisbursements ibrdcommitments{ forval p = 1/10{ sum `var' if prez`p'==1 & year==baseyear`p' gen t`var'`p' = 100*`var'/r(mean) if prez`p'==1 } } *** Growth rates gen disburse = ibrddisbursements + idadisbursements gen commit = ibrdcommitments + idacommitments sort year foreach var in disburse commit realgdp nomgdp idadisbursements idacommitments ibrddisbursements ibrdcommitments{ gen g`var' = (`var' - `var'[_n-1])/(`var'[_n-1]) gen mg`var' = . forval p = 1/10{ tempvar temp egen `temp' = mean(g`var') if prez`p'==1 replace mg`var' = 100*`temp' if prez`p'==1 } gen mg`var'1 = mg`var' if prez=="Kim, 2012-16" gen fake`var' = mg`var' replace mg`var' = . if prez=="Kim, 2012-16" } ************* *** LINES *** ************* foreach var in ibrdcommitments idacommitments{ gen l`var' = log10(`var') } keep if year>=1968 twoway (line librdcommitments year, lcolor(emerald)) /// (line lidacommitments year, lcolor(dkorange)), /// ytitle("Nominal USD, log scale") /// title("New lending commitments") /// plotregion(style(none) /// lcolor(white) /// margin(small)) /// graphregion(fcol(white) /// lcol(white) margin(medium)) /// ylabel(2 "$100m" 3 "$1b" 4 "$10b" 5 "$100b", angle(0)) /// xtitle("") /// xlabel(1968 "McNamara, 1968" 1981 "Clausen, 1981" 1986 "Conable, 1986" 1991 "Preston, 1991" 1995 "Wolfensohn, 1995" 2005 "Wolfowitz, 2005" 2007 "Zoellick, 2007" 2012 "Kim, 2012", angle(45)) /// legend(order(1 "IBRD" 2 "IDA") $mylegend ring(0) pos(4) stack row(2)) /// note("Source: Sandefur & Patel (2016) based on World Bank financial statements.", span justif(left) astext) gr export "$figures/tsline_lending.pdf", as(pdf) replace gr export "$figures/tsline_lending.png", as(png) width(1000) replace ************ *** BARS *** ************ *** Lending drop if year==1968 local y = "commit" replace mg`y' = round(mg`y',0.1) replace mg`y'1 = round(mg`y'1,0.1) graph hbar mg`y' mg`y'1, nofill /// blabel(bar, pos(outside)) /// bar(1, color(emerald)) /// bar(2, color(dkorange)) /// over(prez, sort(fake`y') axis(noline) descending) /// legend(off) /// ytitle("Average annual % growth") /// title("World Bank Lending Growth") /// plotregion(style(none) /// lcolor(white) /// margin(small)) /// graphregion(fcol(white) /// lcol(white) margin(medium)) /// note("NB: Lending is defined as new commitments, summing both IBRD and IDA.""Source: Sandefur & Patel (2016) based on World Bank financial statements."/*"We would like to stress that any causal inference here is ludicrous."*/, span justif(left) astext) /// ysc(range(-2 22)) gr export "$figures/bar_`y'.pdf", as(pdf) replace gr export "$figures/bar_`y'.png", as(png) width(1000) replace *** IEG Eval: have to run this graph x2, for 0/1 tokenize started completed forval t = 0/1{ local s = `t' + 1 local y = "iegscore`t'" preserve collapse (mean) `y' [aw=proj`t'], by(prez) replace `y' = round(`y',0.1) gen fake = `y' gen kim = `y' if prez=="Kim, 2012-16" replace `y' = . if prez=="Kim, 2012-16" graph hbar `y' kim, nofill /// blabel(bar, pos(outside)) /// over(prez, sort(fake) axis(noline) descending) /// bar(1, color(emerald)) /// bar(2, color(dkorange)) /// legend(off) /// ytitle("Ave. score (0-5 scale)") /// subtitle("Projects ``s'' during tenure", span) /// plotregion(style(none) /// lcolor(white) /// margin(small)) /// graphregion(fcol(white) /// lcol(white) margin(medium)) /// /*note("NB: IEG scores based on closing year; figures are an unweighted average.""Source: Sandefur & Patel (2016) based on IEG database.", span justif(left) astext)*/ /// ysc(range(3.5)) /// saving("$figures/bar_`y'.gph", replace) restore } graph combine "$figures/bar_iegscore0.gph" /// "$figures/bar_iegscore1.gph", /// plotregion(style(none) /// lcolor(white) /// margin(small)) /// graphregion(fcol(white) /// lcol(white) margin(medium)) /// row(1) /// note("IEG scores are an unweighted average of all projects starting/ending during tenure.""0=highly unsatisfactory, 1=unsatisfactory, 2=moderately unsatisfactory,""3=moderately satisfactory, 4=satisfactory, 5=highly satisfactory.""Source: Sandefur & Patel (2016) based on IEG database.", span justif(left) astext) /// title("Project Evaluations: Average Scores") gr export "$figures/bar_iegboth.pdf", as(pdf) replace gr export "$figures/bar_iegboth.png", as(png) width(1000) replace exit