## Beyond Institutional Design: Explaining the Performance of International Organizations ## Ranjit Lall ## Replication code ## setwd() library(stargazer) library(foreign) library(psy) library(systemfit) library(effects) library(arm) library(Amelia) library(sandwich) library(car) library(Zelig) ## Load dataset data <- read.csv("lall_dataset.csv", header=T) data <- as.data.frame(data) head(data) ## Table 2 ## Model 1: UK ols.uk1 <- lm(uk_index ~ dfpa + staff + field + age, data = data) summary(ols.uk1) cov.uk1 <- vcovHC(ols.uk1, type = "HC") sqrt(diag(cov.uk1)) ## Model 2: AUS ols.aus1 <- lm(aus_index ~ dfpa + staff + field + age, data = data) summary(ols.aus1) cov.aus1 <- vcovHC(ols.aus1, type = "HC") sqrt(diag(cov.aus1)) ## Model 3: NET ols.net1 <- lm(net_index ~ dfpa + staff + field + age, data = data) summary(ols.net1) cov.net1 <- vcovHC(ols.net1, type = "HC") sqrt(diag(cov.net1)) ## Model 4: SWE ols.swe1 <- lm(swe_index ~ dfpa + staff + field + age, data = data) summary(ols.swe1) cov.swe1 <- vcovHC(ols.swe1, type = "HC") sqrt(diag(cov.swe1)) ## Model 5: DEN ols.den1 <- lm(perf_den ~ dfpa + staff + field + age, data = data) summary(ols.den1) cov.den1 <- vcovHC(ols.den1, type = "HC") sqrt(diag(cov.den1)) ## Model 6: AVG ols.avg1 <- lm(avg_measure ~ dfpa + staff + field + age, data = data) summary(ols.avg1) cov.avg1 <- vcovHC(ols.avg1, type = "HC") sqrt(diag(cov.avg1)) ## Table 3 ## Model 1: UK ols.uk2 <- lm(uk_index ~ djpa + staff + field + age, data = data) summary(ols.uk2) cov.uk2 <- vcovHC(ols.uk1, type = "HC") sqrt(diag(cov.uk2)) ## Model 2: AUS ols.aus2 <- lm(aus_index ~ djpa + staff + field + age, data = data) summary(ols.aus2) cov.aus2 <- vcovHC(ols.aus2, type = "HC") sqrt(diag(cov.aus2)) ## Model 3: NET ols.net2 <- lm(net_index ~ djpa + staff + field + age, data = data) summary(ols.net2) cov.net <- vcovHC(ols.net2, type = "HC") sqrt(diag(cov.net)) ## Model 4: SWE ols.swe2 <- lm(swe_index ~ djpa + staff + field + age, data = data) summary(ols.swe2) cov.swe2 <- vcovHC(ols.swe2, type = "HC") sqrt(diag(cov.swe2)) ## Model 5: DEN ols.den2 <- lm(perf_den ~ djpa + staff + field + age, data = data) summary(ols.den2) cov.den2 <- vcovHC(ols.den2, type = "HC") sqrt(diag(cov.den2)) ## Model 6: AVG ols.avg2 <- lm(avg_measure ~ djpa + staff + field + age, data = data) summary(ols.avg2) cov.avg2 <- vcovHC(ols.avg2, type = "HC") sqrt(diag(cov.avg2)) ## Tables A3-A10 (summarized in Table 4) ## Table A3 ## UK ols.uk.res <- lm(results_uk ~ dfpa + staff + field + age, data = data) summary(ols.uk.res) cov.uk.res <- vcovHC(ols.uk.res, type = "HC") sqrt(diag(cov.uk.res)) ols.uk.crit <- lm(critint_uk ~ dfpa + staff + field + age, data = data) summary(ols.uk.crit) cov.uk.crit <- vcovHC(ols.uk.crit, type = "HC") sqrt(diag(cov.uk.crit)) ols.uk.cost <- lm(cost_uk ~ dfpa + staff + field + age, data = data) summary(ols.uk.cost) cov.uk.cost <- vcovHC(ols.uk.cost, type = "HC") sqrt(diag(cov.uk.cost)) ols.uk.fin <- lm(financial_uk ~ dfpa + staff + field + age, data = data) summary(ols.uk.fin) cov.uk.fin <- vcovHC(ols.uk.fin, type = "HC") sqrt(diag(cov.uk.fin)) ols.uk.trans <- lm(trans_uk ~ dfpa + staff + field + age, data = data) summary(ols.uk.trans) cov.uk.trans <- vcovHC(ols.uk.trans, type = "HC") sqrt(diag(cov.uk.trans)) ols.uk.strat <- lm(strategic_uk ~ dfpa + staff + field + age, data = data) summary(ols.uk.strat) cov.uk.strat <- vcovHC(ols.uk.strat, type = "HC") sqrt(diag(cov.uk.strat)) ## Table A4 ## AUS ols.aus.res <- lm(results_aus ~ dfpa + staff + field + age, data = data) summary(ols.aus.res) cov.aus.res <- vcovHC(ols.aus.res, type = "HC") sqrt(diag(cov.aus.res)) ols.aus.crit <- lm(critint_aus ~ dfpa + staff + field + age, data = data) summary(ols.aus.crit) cov.aus.crit <- vcovHC(ols.aus.crit, type = "HC") sqrt(diag(cov.aus.crit)) ols.aus.cost <- lm(cost_aus ~ dfpa + staff + field + age, data = data) summary(ols.aus.cost) cov.aus.cost <- vcovHC(ols.aus.cost, type = "HC") sqrt(diag(cov.aus.cost)) ols.aus.fin <- lm(financial_aus ~ dfpa + staff + field + age, data = data) summary(ols.aus.fin) cov.aus.fin <- vcovHC(ols.aus.fin, type = "HC") sqrt(diag(cov.aus.fin)) ols.aus.trans <- lm(trans_aus ~ dfpa + staff + field + age, data = data) summary(ols.aus.trans) cov.aus.trans <- vcovHC(ols.aus.trans, type = "HC") sqrt(diag(cov.aus.trans)) ols.aus.strat <- lm(strategic_aus ~ dfpa + staff + field + age, data = data) summary(ols.aus.strat) cov.aus.strat <- vcovHC(ols.aus.strat, type = "HC") sqrt(diag(cov.aus.strat)) ## Table A5 ## NET ols.net.res <- lm(results_net ~ dfpa + staff + field + age, data = data) summary(ols.net.res) cov.net.res <- vcovHC(ols.net.res, type = "HC") sqrt(diag(cov.net.res)) ols.net.foc <- lm(focus_net ~ dfpa + staff + field + age, data = data) summary(ols.net.foc) cov.net.foc <- vcovHC(ols.net.foc, type = "HC") sqrt(diag(cov.net.foc)) ols.net.fin <- lm(financial_net ~ dfpa + staff + field + age, data = data) summary(ols.net.fin) cov.net.fin <- vcovHC(ols.net.fin, type = "HC") sqrt(diag(cov.net.fin)) ols.net.admin <- lm(admin_net ~ dfpa + staff + field + age, data = data) summary(ols.net.admin) cov.net.admin <- vcovHC(ols.net.admin, type = "HC") sqrt(diag(cov.net.admin)) ## Table A6 ## SWE ols.swe.int <- lm(internal ~ dfpa + staff + field + age, data = data) summary(ols.swe.int) cov.swe.int<- vcovHC(ols.swe.int, type = "HC") sqrt(diag(cov.swe.int)) ols.swe.ext <- lm(external ~ dfpa + staff + field + age, data = data) summary(ols.swe.ext) cov.swe.ext<- vcovHC(ols.swe.ext, type = "HC") sqrt(diag(cov.swe.ext)) ## Table A7 ## UK ols.uk.res <- lm(results_uk ~ djpa + staff + field + age, data = data) summary(ols.uk.res) cov.uk.res <- vcovHC(ols.uk.res, type = "HC") sqrt(diag(cov.uk.res)) ols.uk.crit <- lm(critint_uk ~ djpa + staff + field + age, data = data) summary(ols.uk.crit) cov.uk.crit <- vcovHC(ols.uk.crit, type = "HC") sqrt(diag(cov.uk.crit)) ols.uk.cost <- lm(cost_uk ~ djpa + staff + field + age, data = data) summary(ols.uk.cost) cov.uk.cost <- vcovHC(ols.uk.cost, type = "HC") sqrt(diag(cov.uk.cost)) ols.uk.fin <- lm(financial_uk ~ djpa + staff + field + age, data = data) summary(ols.uk.fin) cov.uk.fin <- vcovHC(ols.uk.fin, type = "HC") sqrt(diag(cov.uk.fin)) ols.uk.trans <- lm(trans_uk ~ djpa + staff + field + age, data = data) summary(ols.uk.trans) cov.uk.trans <- vcovHC(ols.uk.trans, type = "HC") sqrt(diag(cov.uk.trans)) ols.uk.strat <- lm(strategic_uk ~ djpa + staff + field + age, data = data) summary(ols.uk.strat) cov.uk.strat <- vcovHC(ols.uk.strat, type = "HC") sqrt(diag(cov.uk.strat)) ## Table A8 ## AUS ols.aus.res <- lm(results_aus ~ djpa + staff + field + age, data = data) summary(ols.aus.res) cov.aus.res <- vcovHC(ols.aus.res, type = "HC") sqrt(diag(cov.aus.res)) ols.aus.crit <- lm(critint_aus ~ djpa + staff + field + age, data = data) summary(ols.aus.crit) cov.aus.crit <- vcovHC(ols.aus.crit, type = "HC") sqrt(diag(cov.aus.crit)) ols.aus.cost <- lm(cost_aus ~ djpa + staff + field + age, data = data) summary(ols.aus.cost) cov.aus.cost <- vcovHC(ols.aus.cost, type = "HC") sqrt(diag(cov.aus.cost)) ols.aus.fin <- lm(financial_aus ~ djpa + staff + field + age, data = data) summary(ols.aus.fin) cov.aus.fin <- vcovHC(ols.aus.fin, type = "HC") sqrt(diag(cov.aus.fin)) ols.aus.strat <- lm(strategic_aus ~ djpa + staff + field + age, data = data) summary(ols.aus.strat) cov.aus.strat <- vcovHC(ols.aus.strat, type = "HC") sqrt(diag(cov.aus.strat)) ols.aus.trans <- lm(trans_aus ~ djpa + staff + field + age, data = data) summary(ols.aus.trans) cov.aus.trans <- vcovHC(ols.aus.trans, type = "HC") sqrt(diag(cov.aus.trans)) ## Table A9 ## NET ols.net.res <- lm(results_net ~ djpa + staff + field + age, data = data) summary(ols.net.res) cov.net.res <- vcovHC(ols.net.res, type = "HC") sqrt(diag(cov.net.res)) ols.net.foc <- lm(focus_net ~ djpa + staff + field + age, data = data) summary(ols.net.foc) cov.net.foc <- vcovHC(ols.net.foc, type = "HC") sqrt(diag(cov.net.foc)) ols.net.fin <- lm(financial_net ~ djpa + staff + field + age, data = data) summary(ols.net.fin) cov.net.fin <- vcovHC(ols.net.fin, type = "HC") sqrt(diag(cov.net.fin)) ols.net.admin <- lm(admin_net ~ djpa + staff + field + age, data = data) summary(ols.net.admin) cov.net.admin <- vcovHC(ols.net.admin, type = "HC") sqrt(diag(cov.net.admin)) ## Table A10 ## SWE head(data) ols.swe.int <- lm(internal ~ djpa + staff + field + age, data = data) summary(ols.swe.int) cov.swe.int<- vcovHC(ols.swe.int, type = "HC") sqrt(diag(cov.swe.int)) ols.swe.ext <- lm(external ~ djpa + staff + field + age, data = data) summary(ols.swe.ext) cov.swe.ext<- vcovHC(ols.swe.ext, type = "HC") sqrt(diag(cov.swe.ext)) ## Table 5 ## TCS ols.dfpa1 <- lm(dfpa ~ ia + tcs + djpa + staff + field + age, data = data) summary(ols.dfpa1) cov.dfpa1 <- vcovHC(ols.dfpa1, type = "HC") sqrt(diag(cov.dfpa1)) ## TCQ ols.dfpa2 <- lm(dfpa ~ ia + tcq + djpa + staff + field + age, data = data) summary(ols.dfpa2) cov.dfpa2 <- vcovHC(ols.dfpa2, type = "HC") sqrt(diag(cov.dfpa2)) ## Robustness checks ## Additional controls ## Table A11 ols.uk.iss <- lm(uk_index ~ dfpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.uk.iss) cov.uk.iss <- vcovHC(ols.uk.iss, type = "HC") sqrt(diag(cov.uk.iss)) ## Model 2: AUS ols.aus.iss <- lm(aus_index ~ dfpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.aus.iss) cov.aus.iss <- vcovHC(ols.aus.iss, type = "HC") sqrt(diag(cov.aus.iss)) ## Model 3: NET ols.net.iss <- lm(net_index ~ dfpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.net.iss) cov.net.iss <- vcovHC(ols.net.iss, type = "HC") sqrt(diag(cov.net.iss)) ## Model 4: SWE ols.swe.iss <- lm(swe_index ~ dfpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.swe.iss) cov.swe.iss <- vcovHC(ols.swe.iss, type = "HC") sqrt(diag(cov.swe.iss)) ## Model 5: DEN ols.den.iss <- lm(perf_den ~ dfpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.den.iss) cov.den.iss <- vcovHC(ols.den.iss, type = "HC") sqrt(diag(cov.den.iss)) ## Model 6: AVG ols.avg.iss <- lm(avg_measure ~ dfpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.avg.iss) cov.avg.iss <- vcovHC(ols.avg.iss, type = "HC") sqrt(diag(cov.avg.iss)) ## Table A12 ols.uk.iss <- lm(uk_index ~ djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.uk.iss) cov.uk.iss <- vcovHC(ols.uk.iss, type = "HC") sqrt(diag(cov.uk.iss)) ## Model 2: AUS ols.aus.iss <- lm(aus_index ~ djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.aus.iss) cov.aus.iss <- vcovHC(ols.aus.iss, type = "HC") sqrt(diag(cov.aus.iss)) ## Model 3: NET ols.net.iss <- lm(net_index ~ djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.net.iss) cov.net.iss <- vcovHC(ols.net.iss, type = "HC") sqrt(diag(cov.net.iss)) ## Model 4: SWE ols.swe.iss <- lm(swe_index ~ djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.swe.iss) cov.swe.iss <- vcovHC(ols.swe.iss, type = "HC") sqrt(diag(cov.swe.iss)) ## Model 5: DEN ols.den.iss <- lm(perf_den ~ djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.den.iss) cov.den.iss <- vcovHC(ols.den.iss, type = "HC") sqrt(diag(cov.den.iss)) ## Model 6: AVG ols.avg.iss <- lm(avg_measure ~ djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.avg.iss) cov.avg.iss <- vcovHC(ols.avg.iss, type = "HC") sqrt(diag(cov.avg.iss)) ## Table A13 ## TCS ols.dfpa1.iss <- lm(dfpa ~ ia + tcs + djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.dfpa1.iss) cov.dfpa1.iss <- vcovHC(ols.dfpa1.iss, type = "HC") sqrt(diag(cov.dfpa1.iss)) ## TCQ ols.dfpa2.iss <- lm(dfpa ~ ia + tcq + djpa + staff + field + age + development + education + environment + humanitarian + health + asymmetry + voting + geographical, data = data) summary(ols.dfpa2.iss) cov.dfpa2.iss <- vcovHC(ols.dfpa2.iss, type = "HC") sqrt(diag(cov.dfpa2.iss)) ## Excluding sets of observations ## Table A14 igos <- data[-c(6, 13:15, 17, 20, 23),] head(igos) ## Model 1: UK igo.uk <- lm(uk_index ~ dfpa + staff + field + age, data = igos) summary(igo.uk) cov.igo.uk <- vcovHC(igo.uk, type = "HC") sqrt(diag(cov.igo.uk)) ## Model 2: AUS igo.aus <- lm(aus_index ~ dfpa + staff + field + age, data = igos) summary(igo.aus) cov.igo.aus <- vcovHC(igo.aus, type = "HC") sqrt(diag(cov.igo.aus)) ## Model 3: NET igo.net <- lm(net_index ~ dfpa + staff + field + age, data = igos) summary(igo.net) cov.igo.net <- vcovHC(igo.net, type = "HC") sqrt(diag(cov.igo.net)) ## Model 4: SWE igo.swe <- lm(swe_index ~ dfpa + staff + field + age, data = igos) summary(igo.swe) cov.igo.swe <- vcovHC(igo.swe, type = "HC") sqrt(diag(cov.igo.swe)) ## Model 5: DEN igo.den <- lm(perf_den ~ dfpa + staff + field + age, data = igos) summary(igo.den) cov.igo.den <- vcovHC(igo.den, type = "HC") sqrt(diag(cov.igo.den)) ## Model 6: AVG igo.avg <- lm(avg_measure ~ dfpa + staff + field + age, data = igos) summary(igo.avg) cov.igo.avg <- vcovHC(igo.avg, type = "HC") sqrt(diag(cov.igo.avg)) ## Table A15 ## Model 1: UK igo.uk <- lm(uk_index ~ dfpa + staff + field + age, data = igos) summary(igo.uk) cov.igo.uk <- vcovHC(igo.uk, type = "HC") sqrt(diag(cov.igo.uk)) ## Model 2: AUS igo.aus <- lm(aus_index ~ dfpa + staff + field + age, data = igos) summary(igo.aus) cov.igo.aus <- vcovHC(igo.aus, type = "HC") sqrt(diag(cov.igo.aus)) ## Model 3: NET igo.net <- lm(net_index ~ dfpa + staff + field + age, data = igos) summary(igo.net) cov.igo.net <- vcovHC(igo.net, type = "HC") sqrt(diag(cov.igo.net)) ## Model 4: SWE igo.swe <- lm(swe_index ~ dfpa + staff + field + age, data = igos) summary(igo.swe) cov.igo.swe <- vcovHC(igo.swe, type = "HC") sqrt(diag(cov.igo.swe)) ## Model 5: DEN igo.den <- lm(perf_den ~ dfpa + staff + field + age, data = igos) summary(igo.den) cov.igo.den <- vcovHC(igo.den, type = "HC") sqrt(diag(cov.igo.den)) ## Model 6: AVG igo.avg <- lm(avg_measure ~ djpa + staff + field + age, data = igos) summary(igo.avg) cov.igo.avg <- vcovHC(igo.avg, type = "HC") sqrt(diag(cov.igo.avg)) ## Table A16 ## TCS igo.ols.dfpa1 <- lm(dfpa ~ ia + tcs + djpa + staff + field + age, data = igos) summary(igo.ols.dfpa1) cov.igo.dfpa1 <- vcovHC(igo.ols.dfpa1, type = "HC") sqrt(diag(cov.igo.dfpa1)) ## TCQ igo.ols.dfpa2 <- lm(dfpa ~ ia + tcq + djpa + staff + field + age, data = igos) summary(igo.ols.dfpa2) cov.igo.dfpa2 <- vcovHC(igo.ols.dfpa2, type = "HC") sqrt(diag(cov.igo.dfpa2)) ## Table A17 ## UK cd.uk1 <- cookd(ols.uk1) cd.uk1[cd.uk1>4/length(cd.uk1)] ## 4, 8, 20, 49 dffits.uk1 <- dffits(ols.uk1) dffits.uk1[dffits.uk1>2*sqrt(length(ols.uk1$coefficients)/nobs(ols.uk1))] ## 20, 33, 49 dfbetas.uk1 <- dfbetas(ols.uk1)[,"dfpa"] dfbetas.uk1[dfbetas.uk1>2/sqrt(nobs(ols.uk1))] ## 33 uk.inf1 <- data[-c(4, 8, 20, 33, 49),] ## CDB, COMSEC, ICRC, PIDG, UNHCR uk.infobs1 <- lm(uk_index ~ dfpa + staff + field + age, data = uk.inf1) summary(uk.infobs1) cov.uk.infobs1 <- vcovHC(uk.infobs1, type = "HC") sqrt(diag(cov.uk.infobs1)) ## AUS cd.aus1 <- cookd(ols.aus1) cd.aus1[cd.aus1>4/length(cd.aus1)] ## 6, 8, 17 dffits.aus1 <- dffits(ols.aus1) dffits.aus1[dffits.aus1>2*sqrt(length(ols.aus1$coefficients)/nobs(ols.aus1))] ## None dfbetas.aus1 <- dfbetas(ols.aus1)[,"dfpa"] dfbetas.aus1[dfbetas.aus1>2/sqrt(nobs(ols.aus1))] ## 40 aus.inf1 <- data[-c(6, 8, 17, 40),] ## CGIAR, COMSEC, GFATM, UNESCO aus.infobs1 <- lm(aus_index ~ dfpa + staff + field + age, data = aus.inf1) summary(aus.infobs1) cov.aus.infobs1 <- vcovHC(aus.infobs1, type = "HC") sqrt(diag(cov.aus.infobs1)) ## NET cd.net1 <- cookd(ols.net1) cd.net1[cd.net1>4/length(cd.net1)] ## 16, 37, 40, 53 dffits.net1 <- dffits(ols.net1) dffits.net1[dffits.net1>2*sqrt(length(ols.net1$coefficients)/nobs(ols.net1))] ## 16, 53 dfbetas.net1 <- dfbetas(ols.net1)[,"dfpa"] dfbetas.net1[dfbetas.net1>2/sqrt(nobs(ols.net1))] ## 40 net.inf1 <- data[-c(16, 37, 40, 53),] ## GEF, UNCTAD, UNESCO, WTO net.infobs1 <- lm(net_index ~ dfpa + staff + field + age, data = net.inf1) summary(net.infobs1) cov.net.infobs1 <- vcovHC(net.infobs1, type = "HC") robust.net.infobs1 <- sqrt(diag(cov.net.infobs1)) ## SWE cd.swe1 <- cookd(ols.swe1) cd.swe1[cd.swe1>4/length(cd.swe1)] ## 14, 16 dffits.swe1 <- dffits(ols.swe1) dffits.swe1[dffits.swe1>2*sqrt(length(ols.swe1$coefficients)/nobs(ols.swe1))] ## 14, 50 dfbetas.swe1 <- dfbetas(ols.swe1)[,"dfpa"] dfbetas.swe1[dfbetas.swe1>2/sqrt(nobs(ols.swe1))] ## 50 swe.inf1 <- data[-c(14, 16, 50),] ## GAVI, GEF, WB swe.infobs1 <- lm(swe_index ~ dfpa + staff + field + age, data = swe.inf1) summary(swe.infobs1) cov.swe.infobs1 <- vcovHC(swe.infobs1, type = "HC") sqrt(diag(cov.swe.infobs1)) ## DEN cd.den1 <- cookd(ols.den1) cd.den1[cd.den1>4/length(cd.den1)] ## 3, 21, 48 dffits.den1 <- dffits(ols.den1) dffits.den1[dffits.den1>2*sqrt(length(ols.den1$coefficients)/nobs(ols.den1))] ## 3, 21 dfbetas.den1 <- dfbetas(ols.den1)[,"dfpa"] dfbetas.den1[dfbetas.den1>2/sqrt(nobs(ols.den1))] ## 3 den.inf1 <- data[-c(3, 21, 48),] ## ASDB, IFAD, UNRWA den.infobs1 <- lm(perf_den ~ dfpa + staff + field + age, data = den.inf1) summary(den.infobs1) cov.den.infobs1 <- vcovHC(den.infobs1, type = "HC") sqrt(diag(cov.den.infobs1)) ## AVG cd.avg1 <- cookd(ols.avg1) cd.avg1[cd.avg1>4/length(cd.avg1)] ## 6, 8, 20, 53 dffits.avg1 <- dffits(ols.avg1) dffits.avg1[dffits.avg1>2*sqrt(length(ols.avg1$coefficients)/nobs(ols.avg1))] ## 20, 53 dfbetas.avg1 <- dfbetas(ols.avg1)[,"dfpa"] dfbetas.avg1[dfbetas.avg1>2/sqrt(nobs(ols.avg1))] ## 40 avg.inf1 <- data[-c(6, 8, 20, 40, 53),] ## CGIAR, COMSEC, ICRC, PIDG, WTO avg.infobs1 <- lm(avg_measure ~ dfpa + staff + field + age, data = avg.inf1) summary(avg.infobs1) cov.avg.infobs1 <- vcovHC(avg.infobs1, type = "HC") sqrt(diag(cov.avg.infobs1)) ## Table A18 ## UK cd.uk2 <- cookd(ols.uk2) cd.uk2[cd.uk2>4/length(cd.uk2)] ## 8, 10, 33 dffits.uk2 <- dffits(ols.uk2) dffits.uk2[dffits.uk2>2*sqrt(length(ols.uk2$coefficients)/nobs(ols.uk2))] ## 10, 33 dfbetas.uk2 <- dfbetas(ols.uk2)[,"djpa"] dfbetas.uk2[dfbetas.uk2>2/sqrt(nobs(ols.uk2))] ## 8, 9 uk.inf2 <- data[-c(8, 9, 10, 33),] ## COMSEC, EBRD, EDF, PIDG uk.infobs2 <- lm(uk_index ~ djpa + staff + field + age, data = uk.inf2) summary(uk.infobs2) cov.uk.infobs2 <- vcovHC(uk.infobs2, type = "HC") sqrt(diag(cov.uk.infobs2)) ## AUS cd.aus2 <- cookd(ols.aus2) cd.aus2[cd.aus2>4/length(cd.aus2)] ## 8 dffits.aus2 <- dffits(ols.aus2) dffits.aus2[dffits.aus2>2*sqrt(length(ols.aus2$coefficients)/nobs(ols.aus2))] ## None dfbetas.aus2 <- dfbetas(ols.aus2)[,"djpa"] dfbetas.aus2[dfbetas.aus2>2/sqrt(nobs(ols.aus2))] ## 51 aus.inf2 <- data[-c(8, 51),] data$IO ## COMSEC, WFP aus.infobs2 <- lm(aus_index ~ djpa + staff + field + age, data = aus.inf2) summary(aus.infobs2) cov.aus.infobs2 <- vcovHC(aus.infobs2, type = "HC") sqrt(diag(cov.aus.infobs2)) ## NET cd.net2 <- cookd(ols.net2) cd.net2[cd.net2>4/length(cd.net2)] ## 16, 37, 40 dffits.net2 <- dffits(ols.net2) dffits.net2[dffits.net2>2*sqrt(length(ols.net2$coefficients)/nobs(ols.net2))] ## 16 dfbetas.net2 <- dfbetas(ols.net2)[,"djpa"] dfbetas.net2[dfbetas.net2>2/sqrt(nobs(ols.net2))] ## 16, 37 net.inf2 <- data[-c(16, 37, 40),] data$IO ## GEF, UNCTAD, UNESCO net.infobs2 <- lm(net_index ~ djpa + staff + field + age, data = net.inf2) summary(net.infobs2) cov.net.infobs2 <- vcovHC(net.infobs2, type = "HC") sqrt(diag(cov.net.infobs2)) ## SWE cd.swe2 <- cookd(ols.swe2) cd.swe2[cd.swe2>4/length(cd.swe2)] ## 14, 16 dffits.swe2 <- dffits(ols.swe2) dffits.swe2[dffits.swe2>2*sqrt(length(ols.swe2$coefficients)/nobs(ols.swe2))] ## 14 dfbetas.swe2 <- dfbetas(ols.swe2)[,"djpa"] dfbetas.swe2[dfbetas.swe2>2/sqrt(nobs(ols.swe2))] ## None swe.inf2 <- data[-c(14, 16),] ## GAVI, GEF swe.infobs2 <- lm(swe_index ~ djpa + staff + field + age, data = swe.inf2) summary(swe.infobs2) cov.swe.infobs2 <- vcovHC(swe.infobs2, type = "HC") sqrt(diag(cov.swe.infobs2)) ## DEN cd.den2 <- cookd(ols.den2) cd.den2[cd.den2>4/length(cd.den2)] ## 21, 41, 48 dffits.den2 <- dffits(ols.den2) dffits.den2[dffits.den2>2*sqrt(length(ols.den2$coefficients)/nobs(ols.den2))] ## 21, 41 dfbetas.den2 <- dfbetas(ols.den2)[,"djpa"] dfbetas.den2[dfbetas.den2>2/sqrt(nobs(ols.den2))] ## 21 den.inf2 <- data[-c(21, 41, 48),] ## IFAD, UNFPA, UNRWA den.infobs2 <- lm(perf_den ~ djpa + staff + field + age, data = den.inf2) summary(den.infobs2) cov.den.infobs2 <- vcovHC(den.infobs2, type = "HC") sqrt(diag(cov.den.infobs2)) ## AVG cd.avg2 <- cookd(ols.avg2) cd.avg2[cd.avg2>4/length(cd.avg2)] ## 8 dffits.avg2 <- dffits(ols.avg2) dffits.avg2[dffits.avg2>2*sqrt(length(ols.avg2$coefficients)/nobs(ols.avg2))] ## None dfbetas.avg2 <- dfbetas(ols.avg2)[,"djpa"] dfbetas.avg2[dfbetas.avg2>2/sqrt(nobs(ols.avg2))] ## 37, 45 avg.inf2 <- data[-c(8, 37, 45),] ## COMSEC, UNCTAD, UNISDR avg.infobs2 <- lm(avg_measure ~ djpa + staff + field + age, data = avg.inf2) summary(avg.infobs2) cov.avg.infobs2 <- vcovHC(avg.infobs2, type = "HC") sqrt(diag(cov.avg.infobs2)) ## Table A19 cd.dfpa1 <- cookd(ols.dfpa1) cd.dfpa1[cd.dfpa1>4/length(cd.dfpa1)] ## 5, 10, 30, 37, 49 dffits.dfpa1 <- dffits(ols.dfpa1) dffits.dfpa1[dffits.dfpa1>2*sqrt(length(ols.dfpa1$coefficients)/nobs(ols.dfpa1))] ## 10, 30 dfbetas.dfpa1 <- dfbetas(ols.dfpa1)[,"ia"] dfbetas.dfpa1[dfbetas.dfpa1>2/sqrt(nobs(ols.dfpa1))] ## 5, 30, 49 dfbetas.dfpa1 <- dfbetas(ols.dfpa1)[,"tcs"] dfbetas.dfpa1[dfbetas.dfpa1>2/sqrt(nobs(ols.dfpa1))] ## 40, 49 dfpa1.inf <- data[-c(5, 10, 30, 37, 40, 49),] data$IO ## CERF, EDF, OCHA, UNCTAD, UNESCO, UNW ols.dfpa1.inf <- lm(dfpa ~ ia + tcs + djpa + staff + field + age, data = dfpa1.inf) summary(ols.dfpa1.inf) cov.dfpa1.inf <- vcovHC(ols.dfpa1.inf, type = "HC") sqrt(diag(cov.dfpa1.inf)) ## DFPA2 cd.dfpa2 <- cookd(ols.dfpa2) cd.dfpa2[cd.dfpa2>4/length(cd.dfpa2)] ## 10, 37, 49, 53 dffits.dfpa2 <- dffits(ols.dfpa2) dffits.dfpa2[dffits.dfpa2>2*sqrt(length(ols.dfpa2$coefficients)/nobs(ols.dfpa2))] ## 10 dfbetas.dfpa2 <- dfbetas(ols.dfpa2)[,"ia"] dfbetas.dfpa2[dfbetas.dfpa2>2/sqrt(nobs(ols.dfpa2))] ## 33, 49, 53 dfbetas.dfpa2 <- dfbetas(ols.dfpa2)[,"tcq"] dfbetas.dfpa2[dfbetas.dfpa2>2/sqrt(nobs(ols.dfpa2))] ## 2, 19, 40 dfpa2.inf <- data[-c(2, 10, 19, 33, 37, 49, 53),] data$IO ## AFDB, EDF, IADB, PIDG, UNCTAD, UNW, WTO ols.dfpa2.inf <- lm(dfpa ~ ia + tcq + djpa + staff + field + age, data = dfpa2.inf) summary(ols.dfpa2.inf) cov.dfpa2.inf <- vcovHC(ols.dfpa2.inf, type = "HC") sqrt(diag(cov.dfpa2.inf)) ## 2SLS IV analysis ## Table A20 ## Model 1: UK fml.uk <- list("mu1" = uk_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcs + staff + field + age) inst <- ~ tcs + staff + field + age tsls.uk <- systemfit(fml.uk, "2SLS", inst=inst, data = data) summary(tsls.uk) ## Model 2: AUS fml.aus <- list("mu1" = aus_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcs + staff + field + age) inst <- ~ tcs + staff + field + age tsls.aus <- systemfit(fml.aus, "2SLS", inst=inst, data = data) summary(tsls.aus) ## Model 3: NET fml.net <- list("mu1" = net_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcs + staff + field + age) inst <- ~ tcs + staff + field + age tsls.net <- systemfit(fml.net, "2SLS", inst=inst, data = data) summary(tsls.net) ## Model 4: SWE fml.swe <- list("mu1" = swe_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcs + staff + field + age) inst <- ~ tcs + staff + field + age tsls.swe <- systemfit(fml.swe, "2SLS", inst=inst, data = data) summary(tsls.swe) ## Model 5: DEN fml.den <- list("mu1" = perf_den ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcs + staff + field + age) inst <- ~ tcs + staff + field + age tsls.den <- systemfit(fml.den, "2SLS", inst=inst, data = data) summary(tsls.den) ## Model 6: AVG fml.avg <- list("mu1" = avg_measure ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcs + staff + field + age) inst <- ~ tcs + staff + field + age tsls.avg <- systemfit(fml.avg, "2SLS", inst=inst, data = data) summary(tsls.avg) ## Table A21 ## Model 1: UK fml.uk <- list("mu1" = uk_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcq + staff + field + age) inst <- ~ tcq + staff + field + age tsls.uk <- systemfit(fml.uk, "2SLS", inst=inst, data = data) summary(tsls.uk) ## Model 2: AUS fml.aus <- list("mu1" = aus_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcq + staff + field + age) inst <- ~ tcq + staff + field + age tsls.aus <- systemfit(fml.aus, "2SLS", inst=inst, data = data) summary(tsls.aus) ## Model 3: NET fml.net <- list("mu1" = net_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcq + staff + field + age) inst <- ~ tcq + staff + field + age tsls.net <- systemfit(fml.net, "2SLS", inst=inst, data = data) summary(tsls.net) ## Model 4: SWE fml.swe <- list("mu1" = swe_index ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcq + staff + field + age) inst <- ~ tcq + staff + field + age tsls.swe <- systemfit(fml.swe, "2SLS", inst=inst, data = data) summary(tsls.swe) ## Model 5: DEN fml.den <- list("mu1" = perf_den ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcq + staff + field + age) inst <- ~ tcq + staff + field + age tsls.den <- systemfit(fml.den, "2SLS", inst=inst, data = data) summary(tsls.den) ## Model 6: AVG fml.avg <- list("mu1" = avg_measure ~ dfpa + staff + field + age, "mu2" = dfpa ~ tcq + staff + field + age) inst <- ~ tcq + staff + field + age tsls.avg <- systemfit(fml.avg, "2SLS", inst=inst, data = data) summary(tsls.avg)