library(dplyr)
library(tidyr)
library(purrr)
library(broom)
library(readr)
library(ggplot2)
library(ggstance)
library(gridExtra)
library(haven)
library(stargazer)
library(lubridate)
library(lazyeval)
library(sandwich)
library(lmtest)
library(broom)
library(pander)
library(countrycode)

knitr::opts_chunk$set(cache=FALSE, fig.retina=2,
                      tidy.opts=list(width.cutoff=120),  # For code
                      options(width=120),  # For output
                      warning=FALSE)

countries.with.edb.bureau <- read_csv(file.path(PROJHOME, "data/countries_with_edb_bureau.csv"))
edb.its <- read_dta("~/Dropbox/Andrew/EDB/MasterWBMarch16_15.dta") %>%
  filter(year > 1999) %>%
  rename(p_edb_rank = p_ebd_rank) %>%
  select(ccode, year, 
         sb_proced, sb_days, sb_capital, sb_cost, con_proced, con_days, 
         gdp, gdpcap, pop, gdpgrowth, polity = polity2, ibrd,
         p_edb_rank) %>%
  mutate_each(funs(ln = log1p(.)), 
              starts_with("sb"), starts_with("con"), gdp, gdpcap, pop) %>%
  mutate(year.centered.2005 = year - 2005,
         year.centered.2006 = year - 2006,
         ranked.2005 = year.centered.2005 >= 0,
         ranked.2006 = year.centered.2006 >= 0) %>%
  group_by(ccode) %>%
  mutate(loan_ln = log1p(sum(ibrd, na.rm=TRUE))) %>%
  mutate_each(funs(lag = lag(.))) %>%
  ungroup()

edb.its.constrained.countries <- edb.its %>%
  mutate(in.report.in.2004 = year == 2004 & !is.na(sb_days),
         in.report.in.2001 = year == 2001 & !is.na(sb_days)) %>%
  group_by(ccode) %>%
  summarise(in.2004 = sum(in.report.in.2004),
            in.2001 = sum(in.report.in.2001))

edb.its <- edb.its %>%
  left_join(edb.its.constrained.countries, by="ccode") %>%
  filter(in.2004 == 1)

edb.its.2001 <- edb.its %>%
  filter(in.2001 == 1)

edb.its.committee <- edb.its %>%
  filter(ccode %in% countries.with.edb.bureau$cowcode)

edb.its.2001.committee <- edb.its %>%
  filter(in.2001 == 1) %>%
  filter(ccode %in% countries.with.edb.bureau$cowcode)

edb.its.2001.nocommittee <- edb.its %>%
  filter(in.2001 == 1) %>%
  filter(!(ccode %in% countries.with.edb.bureau$cowcode))

edb.its.cap.constrained <- filter(edb.its, year >= 2003)

edb.its.2001.cap.constrained <- filter(edb.its.2001, year >= 2003)

edb.its.committee.cap.constrained <- filter(edb.its.committee, year >= 2003)

edb.its.2001.committee.cap.constrained <- filter(edb.its.2001.committee, year >= 2003)
edb.its.2001.nocommittee.cap.constrained <- filter(edb.its.2001.nocommittee, year >= 2003)


theme_edb <- function(base_size=9, base_family="Clear Sans Light") {
  update_geom_defaults("label", list(family="Clear Sans Light"))
  update_geom_defaults("text", list(family="Clear Sans Light"))
  ret <- theme_bw(base_size, base_family) + 
    theme(panel.background = element_rect(fill="#ffffff", colour=NA),
          axis.title.y = element_text(margin = margin(r = 10)),
          axis.title.x = element_text(margin = margin(t = 10)),
          title=element_text(vjust=1.2, family="Clear Sans", face="bold"),
          plot.subtitle=element_text(family="Clear Sans Light"),
          plot.caption=element_text(family="Clear Sans Light",
                                    size=rel(0.8), colour="grey70"),
          panel.border = element_blank(), 
          axis.line=element_line(colour="grey50", size=0.2),
          #panel.grid=element_blank(), 
          axis.ticks=element_blank(),
          legend.position="bottom", 
          legend.title=element_text(size=rel(0.8)),
          axis.title=element_text(size=rel(0.8), family="Clear Sans", face="bold"),
          strip.text=element_text(size=rel(1), family="Clear Sans", face="bold"),
          strip.background=element_rect(fill="#ffffff", colour=NA),
          panel.margin.y=unit(1.5, "lines"),
          legend.key=element_blank(),
          legend.margin=unit(0.2, "lines"))
  
  ret
}

plot.its <- function(model, var.name, var.title, y.title, plot.year = 2005) {
  # summary_dots <- list(
  #   n = ~ n(),
  #   variable = interp(~ mean(val, na.rm = T), val=as.name(var.name)),
  #   stdev = interp(~ sd(val, na.rm = T), val = as.name(var.name))
  # )
  
  if (plot.year == 2005) {
    plot.data <- edb.its %>%
      group_by(year.centered.2005) %>%
      summarise_(variable = interp(~mean(var, na.rm=TRUE), var=as.name(var.name)))

    newdata <- data_frame(year.centered.2005 = seq(min(edb.its$year.centered.2005),
                                              max(edb.its$year.centered.2005), by=1),
                          ranked.2005 = year.centered.2005 >= 0,
                          gdpcap_ln_lag = mean(edb.its$gdpcap_ln_lag, na.rm=TRUE),
                          gdpgrowth_lag = mean(edb.its$gdpgrowth_lag, na.rm=TRUE),
                          pop_ln_lag = mean(edb.its$pop_ln_lag, na.rm=TRUE))

    plot.predict <- augment(model, newdata=newdata) %>% 
      rename(variable = .fitted,
             year.centered = year.centered.2005,
             ranked = ranked.2005)
  } else {
    plot.data <- edb.its %>%
      group_by(year.centered.2006) %>%
      summarise_(variable = interp(~mean(var, na.rm=TRUE), var=as.name(var.name)))
    
    newdata <- data_frame(year.centered.2006 = seq(min(edb.its$year.centered.2006),
                                              max(edb.its$year.centered.2006), by=1),
                          ranked.2006 = year.centered.2006 >= 0,
                          gdpcap_ln_lag = mean(edb.its$gdpcap_ln_lag, na.rm=TRUE),
                          gdpgrowth_lag = mean(edb.its$gdpgrowth_lag, na.rm=TRUE),
                          pop_ln_lag = mean(edb.its$pop_ln_lag, na.rm=TRUE))

    plot.predict <- augment(model, newdata=newdata) %>% 
      rename(variable = .fitted,
             year.centered = year.centered.2006,
             ranked = ranked.2006)
  }

  ggplot(plot.predict, aes(x=year.centered, y=variable)) +
    geom_line() +
    geom_line(data=plot.predict, aes(colour=ranked), size=0.75) +
    geom_vline(xintercept=0) +
    scale_colour_manual(values=c("#0073D9", "#CC3340"),
                        labels=c("Not ranked    ", "Ranked"),
                        name=NULL) +
    labs(title=var.title, y=y.title, x=paste("Years since", plot.year)) +
    theme_edb()
}

# Calculate clustered robust standard errors
robust.clusterify <- function(model, dat, cluster) {
  attach(dat, warn.conflicts = F)
  not <- attr(model$model,"na.action")
  
  if( ! is.null(not)) {  # only drop the NA values if there are any left
    cluster <- cluster[-not]
    dat <- dat[-not,]
  }
  
  with(dat, {
    M <- length(unique(cluster))
    N <- length(cluster)
    K <- model$rank
    dfc <- (M/(M-1))*((N-1)/(N-K))
    uj <- apply(estfun(model),2, function(x) tapply(x, cluster, sum));
    vcovCL <- dfc*sandwich(model, meat=crossprod(uj)/N)
    coefs <- coeftest(model, vcovCL, type="HC1")  # HC1 or HC0 are close to Stata
    return(list(clcov=vcovCL, coefs=coefs))
  })
}

Starting a business variables over time

Countries in 2004 report

plot.edb <- edb.its %>%
  select(year, sb_days, sb_proced, sb_cost, sb_capital, con_days, con_proced) %>%
  gather(variable, value, -year) %>%
  group_by(year, variable) %>%
  summarise(avg = mean(value, na.rm=TRUE)) %>%
  filter(!is.nan(avg))

plot.interventions <- data_frame(year = 2005:2006,
                                 intervention = c("2005", "2006"))
ggplot(plot.edb, aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  scale_color_manual(values=c("red", "blue"), name=NULL) +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  labs(x=NULL, y=NULL, title="Average values of sb variables over time",
       subtitle="Only countries included in 2004 report") +
  facet_wrap(~ variable, scales="free_y") + 
  theme_edb()

Countries in 2001 report

plot.edb.2001 <- edb.its.2001 %>%
  select(year, sb_days, sb_proced, sb_cost, sb_capital, con_days, con_proced) %>%
  gather(variable, value, -year) %>%
  group_by(year, variable) %>%
  summarise(avg = mean(value, na.rm=TRUE)) %>%
  filter(!is.nan(avg))

plot.interventions <- data_frame(year = 2005:2006,
                                 intervention = c("2005", "2006"))
ggplot(plot.edb.2001, aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  scale_color_manual(values=c("red", "blue"), name=NULL) +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  labs(x=NULL, y=NULL, title="Average values of sb variables over time",
       subtitle="Only countries included in 2001 report") +
  facet_wrap(~ variable, scales="free_y") + 
  theme_edb()

Countries with reform committees in 2015

plot.edb.committee <- edb.its.2001.committee %>%
  select(year, sb_days, sb_proced, sb_cost, sb_capital, con_days, con_proced) %>%
  gather(variable, value, -year) %>%
  group_by(year, variable) %>%
  summarise(avg = mean(value, na.rm=TRUE)) %>%
  filter(!is.nan(avg))

plot.interventions <- data_frame(year = 2005:2006,
                                 intervention = c("2005", "2006"))
# ggplot(plot.edb.committee, aes(x=year, y=avg)) +
#   geom_vline(data=plot.interventions, aes(xintercept=year,
#                                           colour=intervention),
#              linetype="dashed", size=0.5) +
#   geom_line() + 
#   scale_color_manual(values=c("red", "blue"), name=NULL) +
#   scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
#   coord_cartesian(xlim=c(2000, 2015)) +
#   labs(x=NULL, y=NULL, title="Average values of sb variables over time",
#        subtitle="Only countries that were in the report by 2011 and have EDB reform committees") +
#   facet_wrap(~ variable, scales="free_y") + 
#   theme_edb()

Countries in report in 2001, with/without reform committees

plot.edb.committee.2001 <- edb.its.2001 %>%
  mutate(has.committee = factor(ccode %in% countries.with.edb.bureau$cowcode,
                                levels=c(FALSE, TRUE),
                                labels=c("No committee", "Committee"),
                                ordered=TRUE)) %>%
  select(year, has.committee, sb_days, sb_proced, sb_cost, sb_capital) %>%
  # select(year, has.committee, sb_days, sb_proced, sb_cost, sb_capital, con_days, con_proced) %>%
  gather(variable, value, -year, -has.committee) %>%
  group_by(year, variable, has.committee) %>%
  summarise(avg = mean(value, na.rm=TRUE)) %>%
  filter(!is.nan(avg)) %>%
  ungroup() %>%
  mutate(variable = factor(variable, levels=c("sb_proced", "sb_days",
                                              "sb_cost", "sb_capital"),
                           labels=c("Procedures", "Days", "Cost", "Capital"),
                           ordered=TRUE))

plot.interventions <- data_frame(year = 2005:2006,
                                 intervention = c("2005", "2006"))

# plot.con_days <- ggplot(filter(plot.edb.committee.2001, variable=="con_days"), 
#                         aes(x=year, y=avg)) +
#   geom_vline(data=plot.interventions, aes(xintercept=year,
#                                           colour=intervention),
#              linetype="dashed", size=0.5) +
#   geom_line() + 
#   labs(x=NULL, y="Days") +
#   scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
#   coord_cartesian(xlim=c(2000, 2015)) +
#   scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
#   facet_wrap(~ variable + has.committee) + 
#   theme_edb()
# 
# plot.con_proced <- ggplot(filter(plot.edb.committee.2001, variable=="con_proced"), 
#                         aes(x=year, y=avg)) +
#   geom_vline(data=plot.interventions, aes(xintercept=year,
#                                           colour=intervention),
#              linetype="dashed", size=0.5) +
#   geom_line() + 
#   labs(x=NULL, y="Procedures") +
#   scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
#   coord_cartesian(xlim=c(2000, 2015)) +
#   scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
#   facet_wrap(~ variable + has.committee) + 
#   theme_edb()

plot.sb_capital <- ggplot(filter(plot.edb.committee.2001, variable=="Capital"), 
                        aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  labs(x=NULL, y="Percent") +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
  facet_wrap(~ variable + has.committee) + 
  theme_edb() + theme(axis.text.x = element_text(angle=45, hjust=1))

plot.sb_cost <- ggplot(filter(plot.edb.committee.2001, variable=="Cost"), 
                        aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  labs(x=NULL, y="Percent") +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
  facet_wrap(~ variable + has.committee) + 
  theme_edb() + theme(axis.text.x = element_text(angle=45, hjust=1))

plot.sb_days <- ggplot(filter(plot.edb.committee.2001, variable=="Days"), 
                        aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  labs(x=NULL, y="Days") +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
  facet_wrap(~ variable + has.committee) + 
  theme_edb() + theme(axis.text.x = element_text(angle=45, hjust=1))

plot.sb_proced <- ggplot(filter(plot.edb.committee.2001, variable=="Procedures"), 
                        aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  labs(x=NULL, y="Procedures") +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
  facet_wrap(~ variable + has.committee) + 
  theme_edb() + theme(axis.text.x = element_text(angle=45, hjust=1))

plot.with.committees <- ggplot(filter(plot.edb.committee.2001, has.committee=="Committee"), 
                         aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  labs(x=NULL, y=NULL, title="Countries with reform committees") +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
  facet_wrap(~ variable, scales="free_y") + 
  theme_edb()# + theme(axis.text.x = element_text(angle=45, hjust=1))

plot.without.committees <- ggplot(filter(plot.edb.committee.2001, has.committee=="No committee"), 
                               aes(x=year, y=avg)) +
  geom_vline(data=plot.interventions, aes(xintercept=year,
                                          colour=intervention),
             linetype="dashed", size=0.5) +
  geom_line() + 
  labs(x=NULL, y=NULL, title="Countries without reform committees") +
  scale_x_continuous(limits=c(2000, 2015), breaks=seq(2000, 2015, 5)) +
  coord_cartesian(xlim=c(2000, 2015)) +
  scale_color_manual(values=c("red", "blue"), name=NULL, guide=FALSE) +
  facet_wrap(~ variable, scales="free_y") + 
  theme_edb()# + theme(axis.text.x = element_text(angle=45, hjust=1))
plot.without.committees

plot.with.committees

grid.arrange(plot.without.committees, plot.with.committees, ncol=2)

Model results

Original models from spring version of paper

These are the models from the first column of the paper from April/May, just for the sake of comparison. There are only tiny differences in coefficients, since data from 1999 is now omitted (it wasn’t in the original models).

model.proced.orig <- lm(sb_proced ~ sb_proced_lag + ranked.2005_lag + gdpcap_ln_lag + 
                          gdpgrowth_lag + polity_lag + pop_ln_lag, 
                        data=edb.its)
model.proced.orig.se <- robust.clusterify(model.proced.orig, edb.its, edb.its$ccode)

model.days.orig <- lm(sb_days ~ sb_days_lag + ranked.2005_lag + gdpcap_ln_lag + 
                          gdpgrowth_lag + polity_lag + pop_ln_lag, 
                        data=edb.its)
model.days.orig.se <- robust.clusterify(model.days.orig, edb.its, edb.its$ccode)

model.days_ln.orig <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2005_lag + gdpcap_ln_lag + 
                          gdpgrowth_lag + polity_lag + pop_ln_lag, 
                        data=edb.its)
model.days_ln.orig.se <- robust.clusterify(model.days_ln.orig, edb.its, edb.its$ccode)

model.cost_ln.orig <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2005_lag + gdpcap_ln_lag + 
                          gdpgrowth_lag + polity_lag + pop_ln_lag, 
                        data=edb.its)
model.cost_ln.orig.se <- robust.clusterify(model.cost_ln.orig, edb.its, edb.its$ccode)

model.capital_ln.orig <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2005_lag + gdpcap_ln_lag + 
                          gdpgrowth_lag + polity_lag + pop_ln_lag, 
                        data=edb.its)
model.capital_ln.orig.se <- robust.clusterify(model.capital_ln.orig, edb.its, edb.its$ccode)


model.proced.orig.nolag <- lm(sb_proced ~ ranked.2005_lag + gdpcap_ln_lag + 
                          gdpgrowth_lag + polity_lag + pop_ln_lag, 
                        data=edb.its)
model.proced.orig.nolag.se <- robust.clusterify(model.proced.orig.nolag, edb.its, edb.its$ccode)

model.days.orig.nolag <- lm(sb_days ~ ranked.2005_lag + gdpcap_ln_lag + 
                        gdpgrowth_lag + polity_lag + pop_ln_lag, 
                      data=edb.its)
model.days.orig.nolag.se <- robust.clusterify(model.days.orig.nolag, edb.its, edb.its$ccode)

model.days_ln.orig.nolag <- lm(sb_days_ln ~ ranked.2005_lag + gdpcap_ln_lag + 
                           gdpgrowth_lag + polity_lag + pop_ln_lag, 
                         data=edb.its)
model.days_ln.orig.nolag.se <- robust.clusterify(model.days_ln.orig.nolag, edb.its, edb.its$ccode)

model.cost_ln.orig.nolag <- lm(sb_cost_ln ~ ranked.2005_lag + gdpcap_ln_lag + 
                           gdpgrowth_lag + polity_lag + pop_ln_lag, 
                         data=edb.its)
model.cost_ln.orig.nolag.se <- robust.clusterify(model.cost_ln.orig.nolag, edb.its, edb.its$ccode)

model.capital_ln.orig.nolag <- lm(sb_capital_ln ~ ranked.2005_lag + gdpcap_ln_lag + 
                              gdpgrowth_lag + polity_lag + pop_ln_lag, 
                            data=edb.its)
model.capital_ln.orig.nolag.se <- robust.clusterify(model.capital_ln.orig.nolag, edb.its, edb.its$ccode)
stargazer(model.proced.orig, model.proced.orig.nolag,
          model.days.orig, model.days.orig.nolag,
          model.days_ln.orig, model.days_ln.orig.nolag,
          model.cost_ln.orig, model.cost_ln.orig.nolag,
          model.capital_ln.orig, model.capital_ln.orig.nolag,
          se=list(model.proced.orig.se$coefs[,2], model.proced.orig.nolag.se$coefs[,2], 
                  model.days.orig.se$coefs[,2], model.days.orig.nolag.se$coefs[,2],
                  model.days_ln.orig.se$coefs[,2], model.days_ln.orig.nolag.se$coefs[,2],
                  model.cost_ln.orig.se$coefs[,2], model.cost_ln.orig.nolag.se$coefs[,2], 
                  model.capital_ln.orig.se$coefs[,2], model.capital_ln.orig.nolag.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 10))),
          notes="Robust standard errors clustered by country")
EDB outcomes
sb_proced sb_days sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
Constant 0.073 8.097*** 6.687 100.262*** 0.180 5.024*** 0.253** 8.681*** 0.302 5.022**
(0.405) (2.253) (4.439) (30.711) (0.110) (0.709) (0.124) (0.908) (0.210) (2.334)
sb_proced_lag 0.920***
(0.014)
sb_days_lag 0.866***
(0.024)
sb_days_ln_lag 0.931***
(0.012)
sb_cost_ln_lag 0.947***
(0.009)
sb_capital_ln_lag 0.924***
(0.010)
ranked.2005_lag -0.257*** -1.773*** -0.165 -19.570*** -0.036* -0.548*** -0.082*** -0.191*** -0.034 -0.988***
(0.066) (0.233) (0.828) (2.354) (0.019) (0.060) (0.017) (0.064) (0.047) (0.148)
gdpcap_ln_lag -0.041* -0.718*** -0.420** -6.527*** -0.014** -0.213*** -0.035*** -0.716*** -0.018 -0.081
(0.022) (0.142) (0.202) (1.502) (0.006) (0.038) (0.009) (0.048) (0.012) (0.121)
gdpgrowth_lag -0.020*** 0.006 -0.276*** -0.407 -0.007*** -0.0004 -0.013*** -0.039*** -0.008* -0.029
(0.006) (0.019) (0.071) (0.302) (0.002) (0.006) (0.002) (0.010) (0.005) (0.022)
polity_lag -0.006 -0.082** -0.086 -0.340 -0.002 -0.010 0.0002 0.003 0.004 -0.067**
(0.006) (0.035) (0.056) (0.343) (0.001) (0.009) (0.001) (0.014) (0.004) (0.030)
pop_ln_lag 0.057** 0.480*** -0.016 0.380 0.008 0.023 0.011** 0.019 -0.007 -0.065
(0.022) (0.130) (0.208) (1.632) (0.005) (0.038) (0.005) (0.048) (0.011) (0.132)
Year fixed effects No No No No No No No No No No
Observations 1,660 1,794 1,660 1,794 1,660 1,794 1,660 1,794 1,559 1,692
R2 0.909 0.288 0.881 0.191 0.902 0.285 0.963 0.595 0.904 0.084
Adjusted R2 0.909 0.286 0.881 0.189 0.902 0.283 0.963 0.594 0.903 0.082
Residual Std. Error 1.053 (df = 1653) 2.998 (df = 1788) 11.859 (df = 1653) 32.874 (df = 1788) 0.283 (df = 1653) 0.776 (df = 1788) 0.291 (df = 1653) 0.965 (df = 1788) 0.712 (df = 1552) 2.244 (df = 1686)
F Statistic 2,752.381*** (df = 6; 1653) 144.569*** (df = 5; 1788) 2,046.473*** (df = 6; 1653) 84.327*** (df = 5; 1788) 2,540.216*** (df = 6; 1653) 142.812*** (df = 5; 1788) 7,182.407*** (df = 6; 1653) 525.510*** (df = 5; 1788) 2,429.318*** (df = 6; 1552) 31.116*** (df = 5; 1686)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple interrupted time series

How to interpret coefficients:

  • β0 = Constant: pre-period intercept - baseline pre intervention
  • β1 = year.centered: pre-period slope - baseline time trend - level of increase prior to intervention
  • β2 = ranked: immediate effect of the event - change in intercept at point of experiment
  • β3 = year.centered:ranked: change in slope after the experiment - what happens after
model.proced.2005 <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its)
model.proced.2005.se <- robust.clusterify(model.proced.2005, edb.its, edb.its$ccode)

model.days_ln.2005 <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its)
model.days_ln.2005.se <- robust.clusterify(model.days_ln.2005, edb.its, edb.its$ccode)

model.cost_ln.2005 <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its)
model.cost_ln.2005.se <- robust.clusterify(model.cost_ln.2005, edb.its, edb.its$ccode)

model.capital_ln.2005 <- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.cap.constrained)
model.capital_ln.2005.se <- robust.clusterify(model.capital_ln.2005, edb.its.cap.constrained, edb.its.cap.constrained$ccode)


model.proced.2006 <- lm(sb_proced ~ 
                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                   data=edb.its)
model.proced.2006.se <- robust.clusterify(model.proced.2006, edb.its, edb.its$ccode)

model.days_ln.2006 <- lm(sb_days_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its)
model.days_ln.2006.se <- robust.clusterify(model.days_ln.2006, edb.its, edb.its$ccode)

model.cost_ln.2006 <- lm(sb_cost_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its)
model.cost_ln.2006.se <- robust.clusterify(model.cost_ln.2006, edb.its, edb.its$ccode)

model.capital_ln.2006 <- lm(sb_capital_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.cap.constrained)
model.capital_ln.2006.se <- robust.clusterify(model.capital_ln.2006, edb.its.cap.constrained, edb.its.cap.constrained$ccode)
stargazer(model.proced.2005, model.days_ln.2005,
          model.cost_ln.2005, model.capital_ln.2005,
          model.proced.2006, model.days_ln.2006,
          model.cost_ln.2006, model.capital_ln.2006,
          se=list(model.proced.2005.se$coefs[,2], model.days_ln.2005.se$coefs[,2],
                  model.cost_ln.2005.se$coefs[,2], model.capital_ln.2005.se$coefs[,2],
                  model.proced.2006.se$coefs[,2], model.days_ln.2006.se$coefs[,2],
                  model.cost_ln.2006.se$coefs[,2], model.capital_ln.2006.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 9.274*** 3.527*** 3.502*** 2.594*** 9.151*** 3.458*** 3.423*** 2.613***
(0.302) (0.073) (0.143) (0.217) (0.301) (0.073) (0.136) (0.208)
year.centered.2005 -0.304*** -0.090*** 0.045 -0.156**
(0.095) (0.022) (0.031) (0.069)
ranked.2005 0.118 -0.021 -0.220*** 0.058
(0.146) (0.043) (0.053) (0.087)
year.centered.2005:ranked.2005 -0.020 -0.005 -0.150*** 0.004
(0.100) (0.024) (0.034) (0.072)
year.centered.2006 -0.257*** -0.084*** 0.013 -0.090**
(0.072) (0.017) (0.022) (0.040)
ranked.2006 -0.128 -0.068 -0.276*** -0.144
(0.158) (0.042) (0.051) (0.090)
year.centered.2006:ranked.2006 -0.059 -0.007 -0.112*** -0.056
(0.079) (0.020) (0.025) (0.045)
Year fixed effects No No No No No No No No
Observations 2,075 2,075 2,075 1,836 2,075 2,075 2,075 1,836
R2 0.123 0.173 0.061 0.050 0.123 0.173 0.061 0.050
Adjusted R2 0.122 0.171 0.060 0.049 0.122 0.172 0.060 0.049
Residual Std. Error 3.262 (df = 2071) 0.825 (df = 2071) 1.434 (df = 2071) 2.229 (df = 1832) 3.262 (df = 2071) 0.825 (df = 2071) 1.434 (df = 2071) 2.229 (df = 1832)
F Statistic 96.756*** (df = 3; 2071) 144.085*** (df = 3; 2071) 45.031*** (df = 3; 2071) 32.236*** (df = 3; 1832) 96.739*** (df = 3; 2071) 144.359*** (df = 3; 2071) 44.994*** (df = 3; 2071) 32.291*** (df = 3; 1832)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple: In since 2001

model.proced.2005.2001 <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its.2001)
model.proced.2005.2001.se <- robust.clusterify(model.proced.2005.2001, edb.its.2001, edb.its.2001$ccode)

model.days_ln.2005.2001 <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001)
model.days_ln.2005.2001.se <- robust.clusterify(model.days_ln.2005.2001, edb.its.2001, edb.its.2001$ccode)

model.cost_ln.2005.2001 <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001)
model.cost_ln.2005.2001.se <- robust.clusterify(model.cost_ln.2005.2001, edb.its.2001, edb.its.2001$ccode)

model.capital_ln.2005.2001 <- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001.cap.constrained)
model.capital_ln.2005.2001.se <- robust.clusterify(model.capital_ln.2005.2001, edb.its.2001.cap.constrained, edb.its.2001.cap.constrained$ccode)


model.proced.2006.2001 <- lm(sb_proced ~ 
                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                   data=edb.its.2001)
model.proced.2006.2001.se <- robust.clusterify(model.proced.2006.2001, edb.its.2001, edb.its.2001$ccode)

model.days_ln.2006.2001 <- lm(sb_days_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.2001)
model.days_ln.2006.2001.se <- robust.clusterify(model.days_ln.2006.2001, edb.its.2001, edb.its.2001$ccode)

model.cost_ln.2006.2001 <- lm(sb_cost_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.2001)
model.cost_ln.2006.2001.se <- robust.clusterify(model.cost_ln.2006.2001, edb.its.2001, edb.its.2001$ccode)

model.capital_ln.2006.2001 <- lm(sb_capital_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.2001.cap.constrained)
model.capital_ln.2006.2001.se <- robust.clusterify(model.capital_ln.2006.2001, edb.its.2001.cap.constrained, edb.its.2001.cap.constrained$ccode)
stargazer(model.proced.2005.2001, model.days_ln.2005.2001,
          model.cost_ln.2005.2001, model.capital_ln.2005.2001,
          model.proced.2006.2001, model.days_ln.2006.2001,
          model.cost_ln.2006.2001, model.capital_ln.2006.2001,
          se=list(model.proced.2005.2001.se$coefs[,2], model.days_ln.2005.2001.se$coefs[,2],
                  model.cost_ln.2005.2001.se$coefs[,2], model.capital_ln.2005.2001.se$coefs[,2],
                  model.proced.2006.2001.se$coefs[,2], model.days_ln.2006.2001.se$coefs[,2],
                  model.cost_ln.2006.2001.se$coefs[,2], model.capital_ln.2006.2001.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes, only countries in 2001 report",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes, only countries in 2001 report
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 9.350*** 3.419*** 3.101*** 2.701*** 9.203*** 3.336*** 3.020*** 2.678***
(0.345) (0.078) (0.140) (0.235) (0.349) (0.079) (0.138) (0.232)
year.centered.2005 -0.256*** -0.108*** -0.037* -0.105***
(0.085) (0.019) (0.022) (0.037)
ranked.2005 0.010 -0.036 -0.135*** 0.051
(0.142) (0.045) (0.044) (0.074)
year.centered.2005:ranked.2005 -0.088 0.009 -0.059** -0.085*
(0.092) (0.022) (0.024) (0.044)
year.centered.2006 -0.228*** -0.101*** -0.048*** -0.074**
(0.068) (0.016) (0.017) (0.029)
ranked.2006 -0.242 -0.082* -0.185*** -0.120
(0.162) (0.048) (0.051) (0.090)
year.centered.2006:ranked.2006 -0.105 0.008 -0.041** -0.114***
(0.077) (0.019) (0.019) (0.039)
Year fixed effects No No No No No No No No
Observations 1,538 1,538 1,538 1,319 1,538 1,538 1,538 1,319
R2 0.130 0.235 0.076 0.077 0.130 0.236 0.077 0.077
Adjusted R2 0.128 0.233 0.074 0.075 0.128 0.234 0.075 0.075
Residual Std. Error 3.366 (df = 1534) 0.758 (df = 1534) 1.315 (df = 1534) 2.127 (df = 1315) 3.366 (df = 1534) 0.757 (df = 1534) 1.315 (df = 1534) 2.127 (df = 1315)
F Statistic 76.341*** (df = 3; 1534) 157.050*** (df = 3; 1534) 42.168*** (df = 3; 1534) 36.476*** (df = 3; 1315) 76.403*** (df = 3; 1534) 157.591*** (df = 3; 1534) 42.358*** (df = 3; 1534) 36.471*** (df = 3; 1315)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple: Only those with reform committees

model.proced.2005.committee <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its.committee)
model.proced.2005.committee.se <- robust.clusterify(model.proced.2005.committee, edb.its.committee, edb.its.committee$ccode)

model.days_ln.2005.committee <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.committee)
model.days_ln.2005.committee.se <- robust.clusterify(model.days_ln.2005.committee, edb.its.committee, edb.its.committee$ccode)

model.cost_ln.2005.committee <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.committee)
model.cost_ln.2005.committee.se <- robust.clusterify(model.cost_ln.2005.committee, edb.its.committee, edb.its.committee$ccode)

model.capital_ln.2005.committee <- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.committee.cap.constrained)
model.capital_ln.2005.committee.se <- robust.clusterify(model.capital_ln.2005.committee, edb.its.committee.cap.constrained, edb.its.committee.cap.constrained$ccode)


model.proced.2006.committee <- lm(sb_proced ~ 
                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                   data=edb.its.committee)
model.proced.2006.committee.se <- robust.clusterify(model.proced.2006.committee, edb.its.committee, edb.its.committee$ccode)

model.days_ln.2006.committee <- lm(sb_days_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.committee)
model.days_ln.2006.committee.se <- robust.clusterify(model.days_ln.2006.committee, edb.its.committee, edb.its.committee$ccode)

model.cost_ln.2006.committee <- lm(sb_cost_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.committee)
model.cost_ln.2006.committee.se <- robust.clusterify(model.cost_ln.2006.committee, edb.its.committee, edb.its.committee$ccode)

model.capital_ln.2006.committee <- lm(sb_capital_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.committee.cap.constrained)
model.capital_ln.2006.committee.se <- robust.clusterify(model.capital_ln.2006.committee, edb.its.committee.cap.constrained, edb.its.committee.cap.constrained$ccode)
stargazer(model.proced.2005.committee, model.days_ln.2005.committee,
          model.cost_ln.2005.committee, model.capital_ln.2005.committee,
          model.proced.2006.committee, model.days_ln.2006.committee,
          model.cost_ln.2006.committee, model.capital_ln.2006.committee,
          se=list(model.proced.2005.committee.se$coefs[,2], model.days_ln.2005.committee.se$coefs[,2],
                  model.cost_ln.2005.committee.se$coefs[,2], model.capital_ln.2005.committee.se$coefs[,2],
                  model.proced.2006.committee.se$coefs[,2], model.days_ln.2006.committee.se$coefs[,2],
                  model.cost_ln.2006.committee.se$coefs[,2], model.capital_ln.2006.committee.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes, only countries with EDB committees",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes, only countries with EDB committees
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 10.399*** 3.566*** 3.820*** 2.519*** 10.275*** 3.538*** 3.686*** 2.438***
(0.478) (0.104) (0.275) (0.373) (0.489) (0.104) (0.263) (0.366)
year.centered.2005 -0.253 -0.112*** 0.090 -0.036***
(0.188) (0.026) (0.059) (0.009)
ranked.2005 0.205 0.088* -0.247*** -0.114
(0.268) (0.051) (0.086) (0.112)
year.centered.2005:ranked.2005 -0.184 0.0003 -0.213*** -0.084**
(0.202) (0.031) (0.066) (0.037)
year.centered.2006 -0.220 -0.090*** 0.033 -0.052*
(0.144) (0.019) (0.040) (0.029)
ranked.2006 -0.087 -0.003 -0.223*** -0.189
(0.299) (0.068) (0.074) (0.152)
year.centered.2006:ranked.2006 -0.221 -0.020 -0.158*** -0.061
(0.160) (0.025) (0.048) (0.046)
Year fixed effects No No No No No No No No
Observations 617 617 617 540 617 617 617 540
R2 0.229 0.274 0.080 0.032 0.228 0.274 0.079 0.032
Adjusted R2 0.225 0.270 0.076 0.026 0.225 0.270 0.075 0.026
Residual Std. Error 2.784 (df = 613) 0.676 (df = 613) 1.361 (df = 613) 2.275 (df = 536) 2.784 (df = 613) 0.677 (df = 613) 1.362 (df = 613) 2.274 (df = 536)
F Statistic 60.525*** (df = 3; 613) 77.126*** (df = 3; 613) 17.843*** (df = 3; 613) 5.844*** (df = 3; 536) 60.509*** (df = 3; 613) 76.956*** (df = 3; 613) 17.595*** (df = 3; 613) 5.873*** (df = 3; 536)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple: In since 2001 and with reform committees

model.proced.2005.2001.committee <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its.2001.committee)
model.proced.2005.2001.committee.se <- robust.clusterify(model.proced.2005.2001.committee, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.days_ln.2005.2001.committee <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001.committee)
model.days_ln.2005.2001.committee.se <- robust.clusterify(model.days_ln.2005.2001.committee, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.cost_ln.2005.2001.committee <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001.committee)
model.cost_ln.2005.2001.committee.se <- robust.clusterify(model.cost_ln.2005.2001.committee, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.capital_ln.2005.2001.committee <- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001.committee.cap.constrained)
model.capital_ln.2005.2001.committee.se <- robust.clusterify(model.capital_ln.2005.2001.committee, edb.its.2001.committee.cap.constrained, edb.its.2001.committee.cap.constrained$ccode)


model.proced.2006.2001.committee <- lm(sb_proced ~ 
                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                   data=edb.its.2001.committee)
model.proced.2006.2001.committee.se <- robust.clusterify(model.proced.2006.2001.committee, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.days_ln.2006.2001.committee <- lm(sb_days_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.2001.committee)
model.days_ln.2006.2001.committee.se <- robust.clusterify(model.days_ln.2006.2001.committee, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.cost_ln.2006.2001.committee <- lm(sb_cost_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.2001.committee)
model.cost_ln.2006.2001.committee.se <- robust.clusterify(model.cost_ln.2006.2001.committee, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.capital_ln.2006.2001.committee <- lm(sb_capital_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006, 
                    data=edb.its.2001.committee.cap.constrained)
model.capital_ln.2006.2001.committee.se <- robust.clusterify(model.capital_ln.2006.2001.committee, edb.its.2001.committee.cap.constrained, edb.its.2001.committee.cap.constrained$ccode)
stargazer(model.proced.2005.2001.committee, model.days_ln.2005.2001.committee,
          model.cost_ln.2005.2001.committee, model.capital_ln.2005.2001.committee,
          model.proced.2006.2001.committee, model.days_ln.2006.2001.committee,
          model.cost_ln.2006.2001.committee, model.capital_ln.2006.2001.committee,
          se=list(model.proced.2005.2001.committee.se$coefs[,2], model.days_ln.2005.2001.committee.se$coefs[,2],
                  model.cost_ln.2005.2001.committee.se$coefs[,2], model.capital_ln.2005.2001.committee.se$coefs[,2],
                  model.proced.2006.2001.committee.se$coefs[,2], model.days_ln.2006.2001.committee.se$coefs[,2],
                  model.cost_ln.2006.2001.committee.se$coefs[,2], model.capital_ln.2006.2001.committee.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes, only countries in 2001 report with EDB committees",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes, only countries in 2001 report with EDB committees
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 10.200*** 3.612*** 3.252*** 2.280*** 10.031*** 3.580*** 3.152*** 2.149***
(0.543) (0.109) (0.179) (0.398) (0.564) (0.113) (0.183) (0.377)
year.centered.2005 -0.306 -0.096*** -0.020 -0.048***
(0.194) (0.023) (0.035) (0.010)
ranked.2005 0.162 0.028 -0.094 -0.075
(0.280) (0.051) (0.057) (0.132)
year.centered.2005:ranked.2005 -0.103 -0.019 -0.084** -0.098**
(0.212) (0.029) (0.036) (0.042)
year.centered.2006 -0.271* -0.080*** -0.040 -0.079**
(0.156) (0.018) (0.026) (0.035)
ranked.2006 -0.083 -0.078 -0.096* -0.096
(0.320) (0.070) (0.058) (0.165)
year.centered.2006:ranked.2006 -0.137 -0.031 -0.065** -0.066
(0.174) (0.025) (0.028) (0.051)
Year fixed effects No No No No No No No No
Observations 490 490 490 420 490 490 490 420
R2 0.222 0.337 0.120 0.057 0.222 0.337 0.120 0.057
Adjusted R2 0.218 0.333 0.115 0.050 0.217 0.333 0.114 0.050
Residual Std. Error 2.810 (df = 486) 0.612 (df = 486) 1.020 (df = 486) 1.986 (df = 416) 2.810 (df = 486) 0.612 (df = 486) 1.020 (df = 486) 1.986 (df = 416)
F Statistic 46.308*** (df = 3; 486) 82.245*** (df = 3; 486) 22.103*** (df = 3; 486) 8.384*** (df = 3; 416) 46.285*** (df = 3; 486) 82.317*** (df = 3; 486) 22.053*** (df = 3; 486) 8.383*** (df = 3; 416)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple ITS controlling for lags

model.proced.2005_lag <- lm(sb_proced ~ sb_proced_lag +
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its)
model.proced.2005_lag.se <- robust.clusterify(model.proced.2005_lag, edb.its, edb.its$ccode)

model.days_ln.2005_lag <- lm(sb_days_ln ~ sb_days_ln_lag +
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its)
model.days_ln.2005_lag.se <- robust.clusterify(model.days_ln.2005_lag, edb.its, edb.its$ccode)

model.cost_ln.2005_lag <- lm(sb_cost_ln ~ sb_cost_ln_lag +
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its)
model.cost_ln.2005_lag.se <- robust.clusterify(model.cost_ln.2005_lag, edb.its, edb.its$ccode)

model.capital_ln.2005_lag <- lm(sb_capital_ln ~ sb_capital_ln_lag +
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.cap.constrained)
model.capital_ln.2005_lag.se <- robust.clusterify(model.capital_ln.2005_lag, edb.its.cap.constrained, edb.its.cap.constrained$ccode)

Simple ITS models included as models 1, 3, 5, and 7 for comparison with versions that control for lagged DV.

stargazer(model.proced.2005, model.proced.2005_lag,
          model.days_ln.2005, model.days_ln.2005_lag,
          model.cost_ln.2005, model.cost_ln.2005_lag,
          model.capital_ln.2005, model.capital_ln.2005_lag,
          se=list(model.proced.2005.se$coefs[,2], model.proced.2005_lag.se$coefs[,2],
                  model.days_ln.2005.se$coefs[,2], model.days_ln.2005_lag.se$coefs[,2],
                  model.cost_ln.2005.se$coefs[,2], model.cost_ln.2005_lag.se$coefs[,2],
                  model.capital_ln.2005.se$coefs[,2], model.capital_ln.2005_lag.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes with lagged DV as control",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes with lagged DV as control
sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 9.274*** 0.367* 3.527*** 0.153*** 3.502*** -0.025 2.594*** 0.370***
(0.302) (0.193) (0.073) (0.047) (0.143) (0.041) (0.217) (0.128)
sb_proced_lag 0.934***
(0.012)
sb_days_ln_lag 0.941***
(0.009)
sb_cost_ln_lag 0.975***
(0.004)
sb_capital_ln_lag 0.921***
(0.010)
year.centered.2005 -0.304*** -0.031 -0.090*** 0.019 0.045 -0.044* -0.156** 0.264**
(0.095) (0.087) (0.022) (0.022) (0.031) (0.025) (0.069) (0.104)
ranked.2005 0.118 -0.029 -0.021 -0.048 -0.220*** -0.010 0.058 -0.291**
(0.146) (0.168) (0.043) (0.043) (0.053) (0.045) (0.087) (0.127)
year.centered.2005:ranked.2005 -0.020 0.012 -0.005 -0.021 -0.150*** 0.045* 0.004 -0.276***
(0.100) (0.088) (0.024) (0.023) (0.034) (0.025) (0.072) (0.104)
Year fixed effects No No No No No No No No
Observations 2,075 1,920 2,075 1,920 2,075 1,920 1,836 1,811
R2 0.123 0.908 0.173 0.899 0.061 0.959 0.050 0.900
Adjusted R2 0.122 0.908 0.171 0.898 0.060 0.959 0.049 0.899
Residual Std. Error 3.262 (df = 2071) 1.038 (df = 1915) 0.825 (df = 2071) 0.285 (df = 1915) 1.434 (df = 2071) 0.299 (df = 1915) 2.229 (df = 1832) 0.725 (df = 1806)
F Statistic 96.756*** (df = 3; 2071) 4,724.921*** (df = 4; 1915) 144.085*** (df = 3; 2071) 4,247.043*** (df = 4; 1915) 45.031*** (df = 3; 2071) 11,245.700*** (df = 4; 1915) 32.236*** (df = 3; 1832) 4,043.473*** (df = 4; 1806)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple ITS, constrained to original 2001 countries

model.proced.2005.2001 <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its.2001)
model.proced.2005.2001.se <- robust.clusterify(model.proced.2005.2001, edb.its.2001, edb.its.2001$ccode)

model.days_ln.2005.2001 <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001)
model.days_ln.2005.2001.se <- robust.clusterify(model.days_ln.2005.2001, edb.its.2001, edb.its.2001$ccode)

model.cost_ln.2005.2001 <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001)
model.cost_ln.2005.2001.se <- robust.clusterify(model.cost_ln.2005.2001, edb.its.2001, edb.its.2001$ccode)

model.capital_ln.2005.2001 <- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.2001.cap.constrained)
model.capital_ln.2005.2001.se <- robust.clusterify(model.capital_ln.2005.2001, edb.its.2001.cap.constrained, edb.its.2001.cap.constrained$ccode)

model.capital_ln_controls.2005.2001 <- lm(sb_capital_ln ~ 
                                            year.centered.2005 + ranked.2005 + 
                                            year.centered.2005 * ranked.2005 + 
                                            gdpcap_ln_lag + gdpgrowth_lag + 
                                            pop_ln_lag + polity_lag +
                                            as.factor(ccode), 
                                          data=edb.its.2001.cap.constrained)
model.capital_ln_controls.2005.2001.se <- robust.clusterify(model.capital_ln_controls.2005.2001, edb.its.2001.cap.constrained, edb.its.2001.cap.constrained$ccode)

Models 2, 4, 6, and 8 are constrained to countries that appeared in the original 2001 EDB report.

stargazer(model.proced.2005, model.proced.2005.2001,
          model.days_ln.2005, model.days_ln.2005.2001,
          model.cost_ln.2005, model.cost_ln.2005.2001,
          model.capital_ln.2005, model.capital_ln.2005.2001,
          model.capital_ln_controls.2005.2001,
          se=list(model.proced.2005.se$coefs[,2], model.proced.2005.2001.se$coefs[,2],
                  model.days_ln.2005.se$coefs[,2], model.days_ln.2005.2001.se$coefs[,2],
                  model.cost_ln.2005.se$coefs[,2], model.cost_ln.2005.2001.se$coefs[,2],
                  model.capital_ln.2005.se$coefs[,2], model.capital_ln.2005.2001.se$coefs[,2],
                  model.capital_ln_controls.2005.2001.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes, limited to countries in 2001 report",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", c(rep("No", 8), "Yes"))),
          notes="Robust standard errors clustered by country")
EDB outcomes, limited to countries in 2001 report
sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8) (9)
Constant 9.274*** 9.350*** 3.527*** 3.419*** 3.502*** 3.101*** 2.594*** 2.701*** 17.755
(0.302) (0.345) (0.073) (0.078) (0.143) (0.140) (0.217) (0.235) (51.978)
year.centered.2005 -0.304*** -0.256*** -0.090*** -0.108*** 0.045 -0.037* -0.156** -0.105*** -0.055
(0.095) (0.085) (0.022) (0.019) (0.031) (0.022) (0.069) (0.037) (0.071)
ranked.2005 0.118 0.010 -0.021 -0.036 -0.220*** -0.135*** 0.058 0.051 0.097
(0.146) (0.142) (0.043) (0.045) (0.053) (0.044) (0.087) (0.074) (0.084)
gdpcap_ln_lag -0.471
(0.375)
gdpgrowth_lag 0.011
(0.013)
pop_ln_lag -0.647
(2.673)
polity_lag 0.031
(0.035)
year.centered.2005:ranked.2005 -0.020 -0.088 -0.005 0.009 -0.150*** -0.059** 0.004 -0.085* -0.074
(0.100) (0.092) (0.024) (0.022) (0.034) (0.024) (0.072) (0.044) (0.057)
Year fixed effects No No No No No No No No Yes
Observations 2,075 1,538 2,075 1,538 2,075 1,538 1,836 1,319 1,210
R2 0.123 0.130 0.173 0.235 0.061 0.076 0.050 0.077 0.783
Adjusted R2 0.122 0.128 0.171 0.233 0.060 0.074 0.049 0.075 0.761
Residual Std. Error 3.262 (df = 2071) 3.366 (df = 1534) 0.825 (df = 2071) 0.758 (df = 1534) 1.434 (df = 2071) 1.315 (df = 1534) 2.229 (df = 1832) 2.127 (df = 1315) 1.062 (df = 1100)
F Statistic 96.756*** (df = 3; 2071) 76.341*** (df = 3; 1534) 144.085*** (df = 3; 2071) 157.050*** (df = 3; 1534) 45.031*** (df = 3; 2071) 42.168*** (df = 3; 1534) 32.236*** (df = 3; 1832) 36.476*** (df = 3; 1315) 36.345*** (df = 109; 1100)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple ITS in countries with reform committees by 2015

model.proced.committee <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                   data=edb.its.committee)
model.proced.committee.se <- robust.clusterify(model.proced.committee, edb.its.committee, edb.its.committee$ccode)

model.days_ln.committee <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.committee)
model.days_ln.committee.se <- robust.clusterify(model.days_ln.committee, edb.its.committee, edb.its.committee$ccode)

model.cost_ln.committee <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.committee)
model.cost_ln.committee.se <- robust.clusterify(model.cost_ln.committee, edb.its.committee, edb.its.committee$ccode)

model.capital_ln.committee <- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005, 
                    data=edb.its.committee.cap.constrained)
model.capital_ln.committee.se <- robust.clusterify(model.capital_ln.committee, edb.its.committee.cap.constrained, edb.its.committee.cap.constrained$ccode)

model.capital_ln_controls.committee <- lm(sb_capital_ln ~ 
                                            year.centered.2005 + ranked.2005 + 
                                            year.centered.2005 * ranked.2005 + 
                                            gdpcap_ln_lag + gdpgrowth_lag + 
                                            pop_ln_lag + polity_lag +
                                            as.factor(ccode), 
                                          data=edb.its.committee.cap.constrained)
model.capital_ln_controls.committee.se <- robust.clusterify(model.capital_ln_controls.committee, edb.its.committee.cap.constrained, edb.its.committee.cap.constrained$ccode)
stargazer(model.proced.committee,
          model.days_ln.committee,
          model.cost_ln.committee,
          model.capital_ln.committee,
          model.capital_ln_controls.committee,
          se=list(model.proced.committee.se$coefs[,2],
                  model.days_ln.committee.se$coefs[,2],
                  model.cost_ln.committee.se$coefs[,2],
                  model.capital_ln.committee.se$coefs[,2],
                  model.capital_ln_controls.committee.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes, limited to countries with EDB reform committees",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", c(rep("No", 4), "Yes"))),
          notes="Robust standard errors clustered by country")
EDB outcomes, limited to countries with EDB reform committees
sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5)
Constant 10.399*** 3.566*** 3.820*** 2.519*** 26.665
(0.478) (0.104) (0.275) (0.373) (53.078)
year.centered.2005 -0.253 -0.112*** 0.090 -0.036*** -0.010
(0.188) (0.026) (0.059) (0.009) (0.079)
ranked.2005 0.205 0.088* -0.247*** -0.114 -0.126
(0.268) (0.051) (0.086) (0.112) (0.131)
gdpcap_ln_lag -0.039
(0.424)
gdpgrowth_lag 0.007
(0.015)
pop_ln_lag -1.532
(3.288)
polity_lag 0.045
(0.057)
year.centered.2005:ranked.2005 -0.184 0.0003 -0.213*** -0.084** -0.078*
(0.202) (0.031) (0.066) (0.037) (0.045)
Year fixed effects No No No No Yes
Observations 617 617 617 540 538
R2 0.229 0.274 0.080 0.032 0.793
Adjusted R2 0.225 0.270 0.076 0.026 0.771
Residual Std. Error 2.784 (df = 613) 0.676 (df = 613) 1.361 (df = 613) 2.275 (df = 536) 1.103 (df = 486)
F Statistic 60.525*** (df = 3; 613) 77.126*** (df = 3; 613) 17.843*** (df = 3; 613) 5.844*** (df = 3; 536) 36.511*** (df = 51; 486)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Simple ITS + loans + country fixed effects

model.proced_loan_fe.2005 <- lm(sb_proced ~ 
                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                     loan_ln + as.factor(ccode), 
                   data=edb.its)
model.proced_loan_fe.2005.se <- robust.clusterify(model.proced_loan_fe.2005, edb.its, edb.its$ccode)

model.days_ln_loan_fe.2005 <- lm(sb_days_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                      loan_ln + as.factor(ccode), 
                    data=edb.its)
model.days_ln_loan_fe.2005.se <- robust.clusterify(model.days_ln_loan_fe.2005, edb.its, edb.its$ccode)

model.cost_ln_loan_fe.2005 <- lm(sb_cost_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                      loan_ln + as.factor(ccode), 
                    data=edb.its)
model.cost_ln_loan_fe.2005.se <- robust.clusterify(model.cost_ln_loan_fe.2005, edb.its, edb.its$ccode)

model.capital_ln_loan_fe.2005<- lm(sb_capital_ln ~ 
                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                      loan_ln + as.factor(ccode), 
                    data=edb.its.cap.constrained)
model.capital_ln_loan_fe.2005.se <- robust.clusterify(model.capital_ln_loan_fe.2005, edb.its.cap.constrained, edb.its.cap.constrained$ccode)


model.proced_loan_fe.2006 <- lm(sb_proced ~ 
                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                     loan_ln + as.factor(ccode), 
                   data=edb.its)
model.proced_loan_fe.2006.se <- robust.clusterify(model.proced_loan_fe.2006, edb.its, edb.its$ccode)

model.days_ln_loan_fe.2006 <- lm(sb_days_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                      loan_ln + as.factor(ccode), 
                    data=edb.its)
model.days_ln_loan_fe.2006.se <- robust.clusterify(model.days_ln_loan_fe.2006, edb.its, edb.its$ccode)

model.cost_ln_loan_fe.2006 <- lm(sb_cost_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                      loan_ln + as.factor(ccode), 
                    data=edb.its)
model.cost_ln_loan_fe.2006.se <- robust.clusterify(model.cost_ln_loan_fe.2006, edb.its, edb.its$ccode)

model.capital_ln_loan_fe.2006 <- lm(sb_capital_ln ~ 
                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                      loan_ln + as.factor(ccode), 
                    data=edb.its.cap.constrained)
model.capital_ln_loan_fe.2006.se <- robust.clusterify(model.capital_ln_loan_fe.2006, edb.its.cap.constrained, edb.its.cap.constrained$ccode)
stargazer(model.proced_loan_fe.2005, model.days_ln_loan_fe.2005,
          model.cost_ln_loan_fe.2005, model.capital_ln_loan_fe.2005,
          model.proced_loan_fe.2006, model.days_ln_loan_fe.2006,
          model.cost_ln_loan_fe.2006, model.capital_ln_loan_fe.2006,
          se=list(model.proced_loan_fe.2005.se$coefs[,2], model.days_ln_loan_fe.2005.se$coefs[,2],
                  model.cost_ln_loan_fe.2005.se$coefs[,2], model.capital_ln_loan_fe.2005.se$coefs[,2],
                  model.proced_loan_fe.2006.se$coefs[,2], model.days_ln_loan_fe.2006.se$coefs[,2],
                  model.cost_ln_loan_fe.2006.se$coefs[,2], model.capital_ln_loan_fe.2006.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes (with loans and country fixed effects)",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("Yes", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes (with loans and country fixed effects)
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 6.570*** 2.050*** 1.037*** 0.475*** 6.433*** 1.977*** 0.951*** 0.461***
(0.181) (0.051) (0.052) (0.103) (0.177) (0.048) (0.049) (0.097)
year.centered.2005 -0.315*** -0.124*** -0.033 -0.167***
(0.090) (0.020) (0.022) (0.048)
ranked.2005 0.137 0.024 -0.117*** 0.058
(0.139) (0.043) (0.041) (0.072)
year.centered.2006 -0.269*** -0.111*** -0.047*** -0.109***
(0.068) (0.015) (0.016) (0.029)
ranked.2006 -0.081 -0.013 -0.158*** -0.103
(0.151) (0.044) (0.045) (0.080)
loan_ln 0.026*** 0.060*** 0.124*** -0.000 0.026*** 0.060*** 0.124*** 0.000
(0.002) (0.0004) (0.0004) (0.000) (0.002) (0.0004) (0.0004) (0.000)
year.centered.2005:ranked.2005 -0.007 0.030 -0.070*** 0.016
(0.095) (0.023) (0.025) (0.053)
year.centered.2006:ranked.2006 -0.046 0.020 -0.052*** -0.037
(0.075) (0.019) (0.019) (0.037)
Year fixed effects Yes Yes Yes Yes Yes Yes Yes Yes
Observations 2,075 2,075 2,075 1,836 2,075 2,075 2,075 1,836
R2 0.791 0.793 0.925 0.809 0.791 0.793 0.925 0.809
Adjusted R2 0.774 0.776 0.918 0.791 0.774 0.777 0.919 0.791
Residual Std. Error 1.654 (df = 1918) 0.428 (df = 1918) 0.423 (df = 1918) 1.044 (df = 1679) 1.654 (df = 1918) 0.428 (df = 1918) 0.422 (df = 1918) 1.044 (df = 1679)
F Statistic 46.592*** (df = 156; 1918) 47.174*** (df = 156; 1918) 150.631*** (df = 156; 1918) 45.636*** (df = 156; 1679) 46.577*** (df = 156; 1918) 47.191*** (df = 156; 1918) 150.833*** (df = 156; 1918) 45.649*** (df = 156; 1679)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

ITS models + basic controls + country fixed effects

model.proced_controls_fe.2005 <- lm(sb_proced ~ 
                                 year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                                 gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                 as.factor(ccode), 
                               data=edb.its)
model.proced_controls_fe.2005.se <- robust.clusterify(model.proced_controls_fe.2005, edb.its, edb.its$ccode)

model.days_ln_controls_fe.2005 <- lm(sb_days_ln ~ 
                                  year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                                  gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                  as.factor(ccode), 
                                data=edb.its)
model.days_ln_controls_fe.2005.se <- robust.clusterify(model.days_ln_controls_fe.2005, edb.its, edb.its$ccode)

model.cost_ln_controls_fe.2005 <- lm(sb_cost_ln ~ 
                                  year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                                  gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                  as.factor(ccode), 
                                data=edb.its)
model.cost_ln_controls_fe.2005.se <- robust.clusterify(model.cost_ln_controls_fe.2005, edb.its, edb.its$ccode)

model.capital_ln_controls_fe.2005 <- lm(sb_capital_ln ~ 
                                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005 +
                                     gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                     as.factor(ccode), 
                                   data=edb.its.cap.constrained)
model.capital_ln_controls_fe.2005.se <- robust.clusterify(model.capital_ln_controls_fe.2005, edb.its.cap.constrained, edb.its.cap.constrained$ccode)


model.proced_controls_fe.2006 <- lm(sb_proced ~ 
                                 year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                                 gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                 as.factor(ccode), 
                               data=edb.its)
model.proced_controls_fe.2006.se <- robust.clusterify(model.proced_controls_fe.2006, edb.its, edb.its$ccode)

model.days_ln_controls_fe.2006 <- lm(sb_days_ln ~ 
                                  year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                                  gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                  as.factor(ccode), 
                                data=edb.its)
model.days_ln_controls_fe.2006.se <- robust.clusterify(model.days_ln_controls_fe.2006, edb.its, edb.its$ccode)

model.cost_ln_controls_fe.2006 <- lm(sb_cost_ln ~ 
                                  year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                                  gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                  as.factor(ccode), 
                                data=edb.its)
model.cost_ln_controls_fe.2006.se <- robust.clusterify(model.cost_ln_controls_fe.2006, edb.its, edb.its$ccode)

model.capital_ln_controls_fe.2006 <- lm(sb_capital_ln ~ 
                                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006 +
                                     gdpcap_ln_lag + gdpgrowth_lag + pop_ln_lag + polity_lag +
                                     as.factor(ccode), 
                                   data=edb.its.cap.constrained)
model.capital_ln_controls_fe.2006.se <- robust.clusterify(model.capital_ln_controls_fe.2006, edb.its.cap.constrained, edb.its.cap.constrained$ccode)
stargazer(model.proced_controls_fe.2005, model.days_ln_controls_fe.2005,
          model.cost_ln_controls_fe.2005, model.capital_ln_controls_fe.2005,
          model.proced_controls_fe.2006, model.days_ln_controls_fe.2006,
          model.cost_ln_controls_fe.2006, model.capital_ln_controls_fe.2006,
          se=list(model.proced_controls_fe.2005.se$coefs[,2], model.days_ln_controls_fe.2005.se$coefs[,2],
                  model.cost_ln_controls_fe.2005.se$coefs[,2], model.capital_ln_controls_fe.2005.se$coefs[,2],
                  model.proced_controls_fe.2006.se$coefs[,2], model.days_ln_controls_fe.2006.se$coefs[,2],
                  model.cost_ln_controls_fe.2006.se$coefs[,2], model.capital_ln_controls_fe.2006.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes (with controls and country fixed effects)",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("Yes", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes (with controls and country fixed effects)
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 26.433 -9.626 15.169* -6.750 25.640 -10.103 15.094* -6.936
(34.183) (9.738) (7.829) (48.810) (34.144) (9.751) (7.845) (48.763)
year.centered.2005 -0.212** -0.114*** 0.014 -0.086
(0.096) (0.025) (0.024) (0.059)
ranked.2005 0.261 0.037 -0.032 0.037
(0.180) (0.054) (0.050) (0.073)
year.centered.2006 -0.156* -0.100*** 0.010 -0.056
(0.082) (0.022) (0.020) (0.053)
ranked.2006 0.011 -0.023 -0.097* -0.099
(0.182) (0.054) (0.053) (0.084)
gdpcap_ln_lag -1.335** -0.179 -0.573*** -0.384 -1.306** -0.162 -0.569*** -0.375
(0.523) (0.140) (0.097) (0.319) (0.524) (0.143) (0.100) (0.326)
gdpgrowth_lag 0.024* -0.001 0.001 0.010 0.025* -0.001 0.001 0.010
(0.013) (0.004) (0.003) (0.009) (0.013) (0.004) (0.003) (0.009)
pop_ln_lag -0.292 0.698 -0.411 0.566 -0.266 0.711 -0.409 0.570
(1.748) (0.486) (0.385) (2.549) (1.746) (0.485) (0.385) (2.546)
polity_lag -0.024 -0.003 -0.015 0.024 -0.024 -0.003 -0.015 0.024
(0.059) (0.012) (0.011) (0.030) (0.059) (0.012) (0.011) (0.030)
year.centered.2005:ranked.2005 -0.007 0.022 -0.068*** -0.043
(0.102) (0.024) (0.024) (0.048)
year.centered.2006:ranked.2006 -0.063 0.010 -0.064*** -0.071*
(0.081) (0.020) (0.018) (0.041)
Year fixed effects Yes Yes Yes Yes Yes Yes Yes Yes
Observations 1,794 1,794 1,794 1,571 1,794 1,794 1,794 1,571
R2 0.797 0.800 0.935 0.822 0.797 0.800 0.935 0.822
Adjusted R2 0.780 0.783 0.930 0.804 0.780 0.783 0.930 0.804
Residual Std. Error 1.665 (df = 1652) 0.427 (df = 1652) 0.401 (df = 1652) 1.017 (df = 1429) 1.666 (df = 1652) 0.427 (df = 1652) 0.401 (df = 1652) 1.017 (df = 1429)
F Statistic 46.022*** (df = 141; 1652) 46.864*** (df = 141; 1652) 169.556*** (df = 141; 1652) 46.671*** (df = 141; 1429) 45.974*** (df = 141; 1652) 46.870*** (df = 141; 1652) 169.593*** (df = 141; 1652) 46.672*** (df = 141; 1429)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Seth’s ideas: difference-ish models

\[ y_t = \beta_0 + \beta_1 y_{t-1} + \beta_2 T + \epsilon \]

Models for all countries in 2001 report

model.proced.lag.2005.all <- lm(sb_proced ~ sb_proced_lag + ranked.2005, 
                                data=edb.its.2001)
model.proced.lag.2005.all.se <- robust.clusterify(model.proced.lag.2005.all, edb.its.2001, edb.its.2001$ccode)

model.days_ln.lag.2005.all <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2005, 
                                 data=edb.its.2001)
model.days_ln.lag.2005.all.se <- robust.clusterify(model.days_ln.lag.2005.all, edb.its.2001, edb.its.2001$ccode)

model.cost_ln.lag.2005.all <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2005, 
                                 data=edb.its.2001)
model.cost_ln.lag.2005.all.se <- robust.clusterify(model.cost_ln.lag.2005.all, edb.its.2001, edb.its.2001$ccode)

model.capital_ln.lag.2005.all <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2005, 
                                    data=edb.its.2001.cap.constrained)
model.capital_ln.lag.2005.all.se <- robust.clusterify(model.capital_ln.lag.2005.all, edb.its.2001.cap.constrained, edb.its.2001.cap.constrained$ccode)


model.proced.lag.2006.all <- lm(sb_proced ~ sb_proced_lag + ranked.2006, 
                                data=edb.its.2001)
model.proced.lag.2006.all.se <- robust.clusterify(model.proced.lag.2006.all, edb.its.2001, edb.its.2001$ccode)

model.days_ln.lag.2006.all <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2006, 
                                 data=edb.its.2001)
model.days_ln.lag.2006.all.se <- robust.clusterify(model.days_ln.lag.2006.all, edb.its.2001, edb.its.2001$ccode)

model.cost_ln.lag.2006.all <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2006, 
                                 data=edb.its.2001)
model.cost_ln.lag.2006.all.se <- robust.clusterify(model.cost_ln.lag.2006.all, edb.its.2001, edb.its.2001$ccode)

model.capital_ln.lag.2006.all <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2006, 
                                    data=edb.its.2001.cap.constrained)
model.capital_ln.lag.2006.all.se <- robust.clusterify(model.capital_ln.lag.2006.all, edb.its.2001.cap.constrained, edb.its.2001.cap.constrained$ccode)


#
stargazer(model.proced.lag.2005.all, model.days_ln.lag.2005.all,
          model.cost_ln.lag.2005.all, model.capital_ln.lag.2005.all,
          model.proced.lag.2006.all, model.days_ln.lag.2006.all,
          model.cost_ln.lag.2006.all, model.capital_ln.lag.2006.all,
          se=list(model.proced.lag.2005.all.se$coefs[,2], model.days_ln.lag.2005.all.se$coefs[,2],
                  model.cost_ln.lag.2005.all.se$coefs[,2], model.capital_ln.lag.2005.all.se$coefs[,2],
                  model.proced.lag.2006.all.se$coefs[,2], model.days_ln.lag.2006.all.se$coefs[,2],
                  model.cost_ln.lag.2006.all.se$coefs[,2], model.capital_ln.lag.2006.all.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes (all countries from 2001 report)",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8))),
          notes="Robust standard errors clustered by country")
EDB outcomes (all countries from 2001 report)
sb_proced sb_days_ln sb_cost_ln sb_capital_ln sb_proced sb_days_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 0.365*** 0.180*** 0.053** 0.032 0.424*** 0.193*** 0.041* 0.087*
(0.110) (0.048) (0.025) (0.057) (0.113) (0.048) (0.022) (0.049)
sb_proced_lag 0.939*** 0.935***
(0.013) (0.013)
sb_days_ln_lag 0.922*** 0.919***
(0.012) (0.012)
sb_cost_ln_lag 0.973*** 0.973***
(0.004) (0.004)
sb_capital_ln_lag 0.915*** 0.913***
(0.011) (0.011)
ranked.2005 -0.176** -0.040* -0.081*** -0.030
(0.078) (0.024) (0.022) (0.058)
ranked.2006 -0.240*** -0.049** -0.071*** -0.097*
(0.068) (0.022) (0.019) (0.052)
Year fixed effects No No No No No No No No
Observations 1,427 1,427 1,427 1,318 1,427 1,427 1,427 1,318
R2 0.909 0.887 0.953 0.895 0.910 0.887 0.952 0.895
Adjusted R2 0.909 0.887 0.952 0.895 0.909 0.887 0.952 0.895
Residual Std. Error 1.067 (df = 1424) 0.284 (df = 1424) 0.298 (df = 1424) 0.718 (df = 1315) 1.064 (df = 1424) 0.284 (df = 1424) 0.298 (df = 1424) 0.717 (df = 1315)
F Statistic 7,119.196*** (df = 2; 1424) 5,573.003*** (df = 2; 1424) 14,277.920*** (df = 2; 1424) 5,586.313*** (df = 2; 1315) 7,162.367*** (df = 2; 1424) 5,587.572*** (df = 2; 1424) 14,261.280*** (df = 2; 1424) 5,605.466*** (df = 2; 1315)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Models for countries with/without reform committees

model.proced.lag.2005.nocom <- lm(sb_proced ~ sb_proced_lag + ranked.2005, 
                        data=edb.its.2001.nocommittee)
model.proced.lag.2005.nocom.se <- robust.clusterify(model.proced.lag.2005.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.days_ln.lag.2005.nocom <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2005, 
                         data=edb.its.2001.nocommittee)
model.days_ln.lag.2005.nocom.se <- robust.clusterify(model.days_ln.lag.2005.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.cost_ln.lag.2005.nocom <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2005, 
                         data=edb.its.2001.nocommittee)
model.cost_ln.lag.2005.nocom.se <- robust.clusterify(model.cost_ln.lag.2005.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.capital_ln.lag.2005.nocom <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2005, 
                            data=edb.its.2001.nocommittee.cap.constrained)
model.capital_ln.lag.2005.nocom.se <- robust.clusterify(model.capital_ln.lag.2005.nocom, edb.its.2001.nocommittee.cap.constrained, edb.its.2001.nocommittee.cap.constrained$ccode)


model.proced.lag.2006.nocom <- lm(sb_proced ~ sb_proced_lag + ranked.2006, 
                        data=edb.its.2001.nocommittee)
model.proced.lag.2006.nocom.se <- robust.clusterify(model.proced.lag.2006.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.days_ln.lag.2006.nocom <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2006, 
                         data=edb.its.2001.nocommittee)
model.days_ln.lag.2006.nocom.se <- robust.clusterify(model.days_ln.lag.2006.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.cost_ln.lag.2006.nocom <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2006, 
                         data=edb.its.2001.nocommittee)
model.cost_ln.lag.2006.nocom.se <- robust.clusterify(model.cost_ln.lag.2006.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.capital_ln.lag.2006.nocom <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2006, 
                            data=edb.its.2001.nocommittee.cap.constrained)
model.capital_ln.lag.2006.nocom.se <- robust.clusterify(model.capital_ln.lag.2006.nocom, edb.its.2001.nocommittee.cap.constrained, edb.its.2001.nocommittee.cap.constrained$ccode)


model.proced.lag.2005.com <- lm(sb_proced ~ sb_proced_lag + ranked.2005, 
                        data=edb.its.2001.committee)
model.proced.lag.2005.com.se <- robust.clusterify(model.proced.lag.2005.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.days_ln.lag.2005.com <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2005, 
                         data=edb.its.2001.committee)
model.days_ln.lag.2005.com.se <- robust.clusterify(model.days_ln.lag.2005.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.cost_ln.lag.2005.com <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2005, 
                         data=edb.its.2001.committee)
model.cost_ln.lag.2005.com.se <- robust.clusterify(model.cost_ln.lag.2005.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.capital_ln.lag.2005.com <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2005, 
                            data=edb.its.2001.committee.cap.constrained)
model.capital_ln.lag.2005.com.se <- robust.clusterify(model.capital_ln.lag.2005.com, edb.its.2001.committee.cap.constrained, edb.its.2001.committee.cap.constrained$ccode)


model.proced.lag.2006.com <- lm(sb_proced ~ sb_proced_lag + ranked.2006, 
                        data=edb.its.2001.committee)
model.proced.lag.2006.com.se <- robust.clusterify(model.proced.lag.2006.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.days_ln.lag.2006.com <- lm(sb_days_ln ~ sb_days_ln_lag + ranked.2006, 
                         data=edb.its.2001.committee)
model.days_ln.lag.2006.com.se <- robust.clusterify(model.days_ln.lag.2006.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.cost_ln.lag.2006.com <- lm(sb_cost_ln ~ sb_cost_ln_lag + ranked.2006, 
                         data=edb.its.2001.committee)
model.cost_ln.lag.2006.com.se <- robust.clusterify(model.cost_ln.lag.2006.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.capital_ln.lag.2006.com <- lm(sb_capital_ln ~ sb_capital_ln_lag + ranked.2006, 
                            data=edb.its.2001.committee.cap.constrained)
model.capital_ln.lag.2006.com.se <- robust.clusterify(model.capital_ln.lag.2006.com, edb.its.2001.committee.cap.constrained, edb.its.2001.committee.cap.constrained$ccode)
stargazer(model.proced.lag.2005.nocom, model.proced.lag.2005.com,
          model.days_ln.lag.2005.nocom, model.days_ln.lag.2005.com,
          model.proced.lag.2006.nocom, model.proced.lag.2006.com,
          model.days_ln.lag.2006.nocom, model.days_ln.lag.2006.com,
          se=list(model.proced.lag.2005.nocom$coefs[,2], model.proced.lag.2005.com$coefs[,2],
                  model.days_ln.lag.2005.nocom$coefs[,2], model.days_ln.lag.2005.com$coefs[,2],
                  model.proced.lag.2006.nocom$coefs[,2], model.proced.lag.2006.com$coefs[,2],
                  model.days_ln.lag.2006.nocom$coefs[,2], model.days_ln.lag.2006.com$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8)),
                         c("EDB reform committee", rep(c("No", "Yes"), 4))),
          notes="Robust standard errors clustered by country")
EDB outcomes
sb_proced sb_days_ln sb_proced sb_days_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 0.229** 0.866*** 0.194*** 0.134* 0.262*** 1.004*** 0.192*** 0.193***
(0.105) (0.249) (0.047) (0.071) (0.100) (0.240) (0.045) (0.070)
sb_proced_lag 0.955*** 0.890*** 0.953*** 0.882***
(0.009) (0.020) (0.009) (0.020)
sb_days_ln_lag 0.915*** 0.941*** 0.914*** 0.929***
(0.011) (0.017) (0.012) (0.017)
ranked.2005 -0.161** -0.254* -0.036 -0.049
(0.076) (0.145) (0.024) (0.029)
ranked.2006 -0.201*** -0.373*** -0.034 -0.082***
(0.070) (0.133) (0.023) (0.027)
Year fixed effects No No No No No No No No
EDB reform committee No Yes No Yes No Yes No Yes
Observations 972 455 972 455 972 455 972 455
R2 0.931 0.838 0.883 0.890 0.931 0.839 0.883 0.892
Adjusted R2 0.930 0.837 0.882 0.890 0.931 0.839 0.882 0.891
Residual Std. Error 0.972 (df = 969) 1.239 (df = 452) 0.301 (df = 969) 0.244 (df = 452) 0.970 (df = 969) 1.233 (df = 452) 0.301 (df = 969) 0.242 (df = 452)
F Statistic 6,497.481*** (df = 2; 969) 1,165.519*** (df = 2; 452) 3,642.762*** (df = 2; 969) 1,828.536*** (df = 2; 452) 6,525.349*** (df = 2; 969) 1,180.211*** (df = 2; 452) 3,643.106*** (df = 2; 969) 1,857.591*** (df = 2; 452)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country
stargazer(model.cost_ln.lag.2005.nocom, model.cost_ln.lag.2005.com,
          model.capital_ln.lag.2005.nocom, model.capital_ln.lag.2005.com,
          model.cost_ln.lag.2006.nocom, model.cost_ln.lag.2006.com,
          model.capital_ln.lag.2006.nocom, model.capital_ln.lag.2006.com,
          se=list(model.cost_ln.lag.2005.nocom$coefs[,2], model.cost_ln.lag.2005.com$coefs[,2],
                  model.capital_ln.lag.2005.nocom$coefs[,2], model.capital_ln.lag.2005.com$coefs[,2],
                  model.cost_ln.lag.2006.nocom$coefs[,2], model.cost_ln.lag.2006.com$coefs[,2],
                  model.capital_ln.lag.2006.nocom$coefs[,2], model.capital_ln.lag.2006.com$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8)),
                         c("EDB reform committee", rep(c("No", "Yes"), 4))),
          notes="Robust standard errors clustered by country")
EDB outcomes
sb_cost_ln sb_capital_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 0.052* 0.044 0.093 -0.084 0.041 0.031 0.137** -0.007
(0.030) (0.049) (0.067) (0.099) (0.028) (0.048) (0.058) (0.084)
sb_cost_ln_lag 0.972*** 0.980*** 0.971*** 0.979***
(0.007) (0.012) (0.007) (0.013)
sb_capital_ln_lag 0.920*** 0.898*** 0.917*** 0.896***
(0.010) (0.017) (0.010) (0.017)
ranked.2005 -0.077*** -0.089*** -0.096 0.105
(0.024) (0.032) (0.064) (0.098)
ranked.2006 -0.068*** -0.078*** -0.155*** 0.020
(0.022) (0.029) (0.056) (0.084)
Year fixed effects No No No No No No No No
EDB reform committee No Yes No Yes No Yes No Yes
Observations 972 455 898 420 972 455 898 420
R2 0.956 0.936 0.902 0.871 0.956 0.936 0.903 0.870
Adjusted R2 0.956 0.936 0.902 0.870 0.956 0.935 0.903 0.870
Residual Std. Error 0.308 (df = 969) 0.277 (df = 452) 0.709 (df = 895) 0.734 (df = 417) 0.308 (df = 969) 0.277 (df = 452) 0.707 (df = 895) 0.735 (df = 417)
F Statistic 10,646.780*** (df = 2; 969) 3,293.692*** (df = 2; 452) 4,141.166*** (df = 2; 895) 1,404.478*** (df = 2; 417) 10,637.210*** (df = 2; 969) 3,287.103*** (df = 2; 452) 4,169.469*** (df = 2; 895) 1,400.255*** (df = 2; 417)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

ITS for countries in 2001 report, with and without reform committees

model.proced.lag.2005.its.nocom <- lm(sb_proced ~
                                      year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                        data=edb.its.2001.nocommittee)
model.proced.lag.2005.its.nocom.se <- robust.clusterify(model.proced.lag.2005.its.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.days_ln.lag.2005.its.nocom <- lm(sb_days_ln ~
                                       year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                         data=edb.its.2001.nocommittee)
model.days_ln.lag.2005.its.nocom.se <- robust.clusterify(model.days_ln.lag.2005.its.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.cost_ln.lag.2005.its.nocom <- lm(sb_cost_ln ~
                                       year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                         data=edb.its.2001.nocommittee)
model.cost_ln.lag.2005.its.nocom.se <- robust.clusterify(model.cost_ln.lag.2005.its.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.capital_ln.lag.2005.its.nocom <- lm(sb_capital_ln ~
                                          year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                            data=edb.its.2001.nocommittee.cap.constrained)
model.capital_ln.lag.2005.its.nocom.se <- robust.clusterify(model.capital_ln.lag.2005.its.nocom, edb.its.2001.nocommittee.cap.constrained, edb.its.2001.nocommittee.cap.constrained$ccode)


model.proced.lag.2006.its.nocom <- lm(sb_proced ~
                                      year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                        data=edb.its.2001.nocommittee)
model.proced.lag.2006.its.nocom.se <- robust.clusterify(model.proced.lag.2006.its.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.days_ln.lag.2006.its.nocom <- lm(sb_days_ln ~
                                       year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                         data=edb.its.2001.nocommittee)
model.days_ln.lag.2006.its.nocom.se <- robust.clusterify(model.days_ln.lag.2006.its.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.cost_ln.lag.2006.its.nocom <- lm(sb_cost_ln ~
                                       year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                         data=edb.its.2001.nocommittee)
model.cost_ln.lag.2006.its.nocom.se <- robust.clusterify(model.cost_ln.lag.2006.its.nocom, edb.its.2001.nocommittee, edb.its.2001.nocommittee$ccode)

model.capital_ln.lag.2006.its.nocom <- lm(sb_capital_ln ~
                                          year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                            data=edb.its.2001.nocommittee.cap.constrained)
model.capital_ln.lag.2006.its.nocom.se <- robust.clusterify(model.capital_ln.lag.2006.its.nocom, edb.its.2001.nocommittee.cap.constrained, edb.its.2001.nocommittee.cap.constrained$ccode)


model.proced.lag.2005.its.com <- lm(sb_proced ~
                                    year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                        data=edb.its.2001.committee)
model.proced.lag.2005.its.com.se <- robust.clusterify(model.proced.lag.2005.its.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.days_ln.lag.2005.its.com <- lm(sb_days_ln ~
                                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                         data=edb.its.2001.committee)
model.days_ln.lag.2005.its.com.se <- robust.clusterify(model.days_ln.lag.2005.its.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.cost_ln.lag.2005.its.com <- lm(sb_cost_ln ~
                                     year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                         data=edb.its.2001.committee)
model.cost_ln.lag.2005.its.com.se <- robust.clusterify(model.cost_ln.lag.2005.its.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.capital_ln.lag.2005.its.com <- lm(sb_capital_ln ~
                                        year.centered.2005 + ranked.2005 + year.centered.2005 * ranked.2005,
                            data=edb.its.2001.committee.cap.constrained)
model.capital_ln.lag.2005.its.com.se <- robust.clusterify(model.capital_ln.lag.2005.its.com, edb.its.2001.committee.cap.constrained, edb.its.2001.committee.cap.constrained$ccode)


model.proced.lag.2006.its.com <- lm(sb_proced ~ 
                                    year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                        data=edb.its.2001.committee)
model.proced.lag.2006.its.com.se <- robust.clusterify(model.proced.lag.2006.its.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.days_ln.lag.2006.its.com <- lm(sb_days_ln ~ 
                                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                         data=edb.its.2001.committee)
model.days_ln.lag.2006.its.com.se <- robust.clusterify(model.days_ln.lag.2006.its.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.cost_ln.lag.2006.its.com <- lm(sb_cost_ln ~ 
                                     year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                         data=edb.its.2001.committee)
model.cost_ln.lag.2006.its.com.se <- robust.clusterify(model.cost_ln.lag.2006.its.com, edb.its.2001.committee, edb.its.2001.committee$ccode)

model.capital_ln.lag.2006.its.com <- lm(sb_capital_ln ~ 
                                        year.centered.2006 + ranked.2006 + year.centered.2006 * ranked.2006,
                            data=edb.its.2001.committee.cap.constrained)
model.capital_ln.lag.2006.its.com.se <- robust.clusterify(model.capital_ln.lag.2006.its.com, edb.its.2001.committee.cap.constrained, edb.its.2001.committee.cap.constrained$ccode)
stargazer(model.proced.lag.2005.its.nocom, model.proced.lag.2005.its.com,
          model.days_ln.lag.2005.its.nocom, model.days_ln.lag.2005.its.com,
          model.proced.lag.2006.its.nocom, model.proced.lag.2006.its.com,
          model.days_ln.lag.2006.its.nocom, model.days_ln.lag.2006.its.com,
          se=list(model.proced.lag.2005.its.nocom.se$coefs[,2], model.proced.lag.2005.its.com.se$coefs[,2],
                  model.days_ln.lag.2005.its.nocom.se$coefs[,2], model.days_ln.lag.2005.its.com.se$coefs[,2],
                  model.proced.lag.2006.its.nocom.se$coefs[,2], model.proced.lag.2006.its.com.se$coefs[,2],
                  model.days_ln.lag.2006.its.nocom.se$coefs[,2], model.days_ln.lag.2006.its.com.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes (ITS, with/without reform committees)",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8)),
                         c("EDB reform committee", rep(c("No", "Yes"), 4))),
          notes="Robust standard errors clustered by country")
EDB outcomes (ITS, with/without reform committees)
sb_proced sb_days_ln sb_proced sb_days_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 8.953*** 10.200*** 3.329*** 3.612*** 8.813*** 10.031*** 3.222*** 3.580***
(0.433) (0.543) (0.101) (0.109) (0.434) (0.564) (0.102) (0.113)
year.centered.2005 -0.232*** -0.306 -0.113*** -0.096***
(0.086) (0.194) (0.026) (0.023)
ranked.2005 -0.062 0.162 -0.066 0.028
(0.163) (0.280) (0.061) (0.051)
year.centered.2005:ranked.2005 -0.082 -0.103 0.022 -0.019
(0.092) (0.212) (0.029) (0.029)
year.centered.2006 -0.209*** -0.271* -0.112*** -0.080***
(0.069) (0.156) (0.021) (0.018)
ranked.2006 -0.312* -0.083 -0.083 -0.078
(0.184) (0.320) (0.062) (0.070)
year.centered.2006:ranked.2006 -0.090 -0.137 0.027 -0.031
(0.079) (0.174) (0.026) (0.025)
Year fixed effects No No No No No No No No
EDB reform committee No Yes No Yes No Yes No Yes
Observations 1,048 490 1,048 490 1,048 490 1,048 490
R2 0.104 0.222 0.210 0.337 0.105 0.222 0.210 0.337
Adjusted R2 0.102 0.218 0.207 0.333 0.102 0.217 0.208 0.333
Residual Std. Error 3.538 (df = 1044) 2.810 (df = 486) 0.804 (df = 1044) 0.612 (df = 486) 3.537 (df = 1044) 2.810 (df = 486) 0.803 (df = 1044) 0.612 (df = 486)
F Statistic 40.604*** (df = 3; 1044) 46.308*** (df = 3; 486) 92.371*** (df = 3; 1044) 82.245*** (df = 3; 486) 40.697*** (df = 3; 1044) 46.285*** (df = 3; 486) 92.771*** (df = 3; 1044) 82.317*** (df = 3; 486)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country
stargazer(model.cost_ln.lag.2005.its.nocom, model.cost_ln.lag.2005.its.com,
          model.capital_ln.lag.2005.its.nocom, model.capital_ln.lag.2005.its.com,
          model.cost_ln.lag.2006.its.nocom, model.cost_ln.lag.2006.its.com,
          model.capital_ln.lag.2006.its.nocom, model.capital_ln.lag.2006.its.com,
          se=list(model.cost_ln.lag.2005.its.nocom.se$coefs[,2], model.cost_ln.lag.2005.its.com.se$coefs[,2],
                  model.capital_ln.lag.2005.its.nocom.se$coefs[,2], model.capital_ln.lag.2005.its.com.se$coefs[,2],
                  model.cost_ln.lag.2006.its.nocom.se$coefs[,2], model.cost_ln.lag.2006.its.com.se$coefs[,2],
                  model.capital_ln.lag.2006.its.nocom.se$coefs[,2], model.capital_ln.lag.2006.its.com.se$coefs[,2]),
          type="html", dep.var.caption="EDB outcomes (ITS, with/without reform committees)",
          intercept.bottom=FALSE,
          omit="\\.factor",
          add.lines=list(c("Year fixed effects", rep("No", 8)),
                         c("EDB reform committee", rep(c("No", "Yes"), 4))),
          notes="Robust standard errors clustered by country")
EDB outcomes (ITS, with/without reform committees)
sb_cost_ln sb_capital_ln sb_cost_ln sb_capital_ln
(1) (2) (3) (4) (5) (6) (7) (8)
Constant 3.031*** 3.252*** 2.897*** 2.280*** 2.958*** 3.152*** 2.929*** 2.149***
(0.187) (0.179) (0.290) (0.398) (0.184) (0.183) (0.289) (0.377)
year.centered.2005 -0.044 -0.020 -0.131** -0.048***
(0.027) (0.035) (0.054) (0.010)
ranked.2005 -0.155*** -0.094 0.111 -0.075
(0.058) (0.057) (0.089) (0.132)
year.centered.2005:ranked.2005 -0.047 -0.084** -0.079 -0.098**
(0.031) (0.036) (0.062) (0.042)
year.centered.2006 -0.051** -0.040 -0.070* -0.079**
(0.021) (0.026) (0.041) (0.035)
ranked.2006 -0.225*** -0.096* -0.136 -0.096
(0.069) (0.058) (0.110) (0.165)
year.centered.2006:ranked.2006 -0.030 -0.065** -0.139*** -0.066
(0.025) (0.028) (0.052) (0.051)
Year fixed effects No No No No No No No No
EDB reform committee No Yes No Yes No Yes No Yes
Observations 1,048 490 899 420 1,048 490 899 420
R2 0.066 0.120 0.088 0.057 0.067 0.120 0.088 0.057
Adjusted R2 0.063 0.115 0.085 0.050 0.064 0.114 0.085 0.050
Residual Std. Error 1.430 (df = 1044) 1.020 (df = 486) 2.169 (df = 895) 1.986 (df = 416) 1.429 (df = 1044) 1.020 (df = 486) 2.169 (df = 895) 1.986 (df = 416)
F Statistic 24.541*** (df = 3; 1044) 22.103*** (df = 3; 486) 28.789*** (df = 3; 895) 8.384*** (df = 3; 416) 24.811*** (df = 3; 1044) 22.053*** (df = 3; 486) 28.775*** (df = 3; 895) 8.383*** (df = 3; 416)
Note: p<0.1; p<0.05; p<0.01
Robust standard errors clustered by country

Flexible ITS (with year²)

# make t more flexible in ITS by squaring it

List of countries in initial 2001 report

* indicates country has an EDB reform committee by 2015

country.names <- edb.its.2001 %>%
  group_by(ccode) %>%
  summarise(cow = unique(ccode)) %>%
  ungroup() %>%
  mutate(has.committee = ifelse(ccode %in% countries.with.edb.bureau$cowcode, "\\*", ""),
         Country = countrycode(cow, "cown", "country.name")) %>%
  mutate(Country = case_when(
           .$cow == 1001 ~ "Serbia",
           .$cow == 1005 ~ "Hong Kong",
           TRUE ~ .$Country
         )) %>%
  arrange(Country) %>%
  mutate(Country = paste0(Country, has.committee)) %>%
  select(Country)
pandoc.table(matrix(c(country.names$Country, rep("", 2)), ncol=4),
             split.tables=Inf)
Albania Ecuador Lithuania Serbia
Algeria* Egypt Madagascar Singapore
Argentina Ethiopia Malawi* Slovakia
Armenia Finland Malaysia* Slovenia
Australia France Mali* South Africa
Austria Georgia* Mexico* Spain
Azerbaijan* Germany Moldova, Republic of* Sri Lanka*
Bangladesh Ghana Mongolia Sweden
Belarus Greece Morocco* Switzerland
Belgium Guatemala* Mozambique Syrian Arab Republic
Benin Honduras Nepal Taiwan, Province of China
Bhutan Hong Kong Netherlands Tanzania, United Republic of
Bolivia, Plurinational State of Hungary New Zealand Thailand
Bosnia and Herzegovina India Nicaragua Tunisia
Botswana* Indonesia* Niger Turkey
Bulgaria Iran, Islamic Republic of Nigeria* Uganda
Burkina Faso Ireland Norway Ukraine*
Cameroon Israel Pakistan United Arab Emirates*
Canada Italy Panama* United Kingdom*
Chile* Jamaica Peru* United States
China Japan Philippines* Uruguay
Colombia* Jordan Poland* Uzbekistan*
Costa Rica* Kazakhstan* Portugal Venezuela, Bolivarian Republic of
Cote d’Ivoire* Kenya* Republic of Vietnam Yemen
Croatia* Korea Romania Zambia*
Czech Republic* Kyrgyzstan* Russian Federation* Zimbabwe
Denmark Latvia Saudi Arabia*
Dominican Republic* Lebanon Senegal

Figures

# #' ### Coefficient plots
# all.coefs <- bind_rows(mutate(tidy(model.proced, conf.int=TRUE), model="Simple", variable="sb_proced"),
#                        mutate(tidy(model.days, conf.int=TRUE), model="Simple", variable="sb_days"),
#                        mutate(tidy(model.days_ln, conf.int=TRUE), model="Simple", variable="sb_days_ln"),
#                        mutate(tidy(model.cost_ln, conf.int=TRUE), model="Simple", variable="sb_cost_ln"),
#                        mutate(tidy(model.capital_ln, conf.int=TRUE), model="Simple", variable="sb_capital_ln"),
#                        mutate(tidy(model.proced_con, conf.int=TRUE), model="Simple", variable="con_proced"),
#                        mutate(tidy(model.days_con, conf.int=TRUE), model="Simple", variable="con_days"),
#                        mutate(tidy(model.proced_con_ln, conf.int=TRUE), model="Simple", variable="con_proced_ln"),
#                        mutate(tidy(model.days_con_ln, conf.int=TRUE), model="Simple", variable="con_days_ln"),
#                        mutate(tidy(model.proced_fe, conf.int=TRUE), model="Simple + FE", variable="sb_proced"),
#                        mutate(tidy(model.days_fe, conf.int=TRUE), model="Simple + FE", variable="sb_days"),
#                        mutate(tidy(model.days_ln_fe, conf.int=TRUE), model="Simple + FE", variable="sb_days_ln"),
#                        mutate(tidy(model.cost_ln_fe, conf.int=TRUE), model="Simple + FE", variable="sb_cost_ln"),
#                        mutate(tidy(model.capital_ln_fe, conf.int=TRUE), model="Simple + FE", variable="sb_capital_ln"),
#                        mutate(tidy(model.proced_con_fe, conf.int=TRUE), model="Simple + FE", variable="con_proced"),
#                        mutate(tidy(model.days_con_fe, conf.int=TRUE), model="Simple + FE", variable="con_days"),
#                        mutate(tidy(model.proced_con_ln_fe, conf.int=TRUE), model="Simple + FE", variable="con_proced_ln"),
#                        mutate(tidy(model.days_con_ln_fe, conf.int=TRUE), model="Simple + FE", variable="con_days_ln"),
#                        mutate(tidy(model.proced_loan, conf.int=TRUE), model="Simple + loans", variable="sb_proced"),
#                        mutate(tidy(model.days_loan, conf.int=TRUE), model="Simple + loans", variable="sb_days"),
#                        mutate(tidy(model.days_ln_loan, conf.int=TRUE), model="Simple + loans", variable="sb_days_ln"),
#                        mutate(tidy(model.cost_ln_loan, conf.int=TRUE), model="Simple + loans", variable="sb_cost_ln"),
#                        mutate(tidy(model.capital_ln_loan, conf.int=TRUE), model="Simple + loans", variable="sb_capital_ln"),
#                        mutate(tidy(model.proced_con_loan, conf.int=TRUE), model="Simple + loans", variable="con_proced"),
#                        mutate(tidy(model.days_con_loan, conf.int=TRUE), model="Simple + loans", variable="con_days"),
#                        mutate(tidy(model.proced_con_ln_loan, conf.int=TRUE), model="Simple + loans", variable="con_proced_ln"),
#                        mutate(tidy(model.days_con_ln_loan, conf.int=TRUE), model="Simple + loans", variable="con_days_ln"),
#                        mutate(tidy(model.proced_controls, conf.int=TRUE), model="Controls", variable="sb_proced"),
#                        mutate(tidy(model.days_controls, conf.int=TRUE), model="Controls", variable="sb_days"),
#                        mutate(tidy(model.days_ln_controls, conf.int=TRUE), model="Controls", variable="sb_days_ln"),
#                        mutate(tidy(model.cost_ln_controls, conf.int=TRUE), model="Controls", variable="sb_cost_ln"),
#                        mutate(tidy(model.capital_ln_controls, conf.int=TRUE), model="Controls", variable="sb_capital_ln"),
#                        mutate(tidy(model.proced_con_controls, conf.int=TRUE), model="Controls", variable="con_proced"),
#                        mutate(tidy(model.days_con_controls, conf.int=TRUE), model="Controls", variable="con_days"),
#                        mutate(tidy(model.proced_con_ln_controls, conf.int=TRUE), model="Controls", variable="con_proced_ln"),
#                        mutate(tidy(model.days_con_ln_controls, conf.int=TRUE), model="Controls", variable="con_days_ln"),
#                        mutate(tidy(model.proced_controls_fe, conf.int=TRUE), model="Controls + FE", variable="sb_proced"),
#                        mutate(tidy(model.days_controls_fe, conf.int=TRUE), model="Controls + FE", variable="sb_days"),
#                        mutate(tidy(model.days_ln_controls_fe, conf.int=TRUE), model="Controls + FE", variable="sb_days_ln"),
#                        mutate(tidy(model.cost_ln_controls_fe, conf.int=TRUE), model="Controls + FE", variable="sb_cost_ln"),
#                        mutate(tidy(model.capital_ln_controls_fe, conf.int=TRUE), model="Controls + FE", variable="sb_capital_ln"),
#                        mutate(tidy(model.proced_con_controls_fe, conf.int=TRUE), model="Controls + FE", variable="con_proced"),
#                        mutate(tidy(model.days_con_controls_fe, conf.int=TRUE), model="Controls + FE", variable="con_days"),
#                        mutate(tidy(model.proced_con_ln_controls_fe, conf.int=TRUE), model="Controls + FE", variable="con_proced_ln"),
#                        mutate(tidy(model.days_con_ln_controls_fe, conf.int=TRUE), model="Controls + FE", variable="con_days_ln")) %>%
#   mutate(low = estimate - std.error,
#          high = estimate + std.error) %>%
#   mutate(model = factor(model, levels=rev(c("Simple", "Simple + FE", "Simple + loans", "Controls", "Controls + FE")), ordered=TRUE))

# plot.data <- all.coefs %>%
#   filter(term == "year.centered:rankedTRUE")

# #+ fig.width=6.5, fig.height=5
# ggplot(plot.data, aes(x=estimate, y=model, xmin=low, xmax=high, colour=model)) +
#   geom_vline(xintercept=0, colour="#8C2318", alpha=0.6, size=1) + 
#   geom_pointrangeh(position=position_dodge(width=.7)) + 
#   # scale_color_manual(values=c("#FF851C", "#85144A", "#001F40", "#2ECC40", "#ABABAB")) +
#   guides(colour="none") +
#   facet_wrap(~ variable, scales="free_x") + 
#   theme_edb() + theme(panel.background = element_rect(fill="grey95", colour=NA))

Simple models

plot.its(model=model.proced.2005, var.name="sb_proced",
         var.title="Procedures to open a business (2005)",
         y.title="Number of procedures", plot.year=2005)

plot.its(model=model.proced.2006, var.name="sb_proced",
         var.title="Procedures to open a business (2006)",
         y.title="Number of procedures", plot.year=2006)

plot.its(model=model.days_ln.2005, var.name="sb_days_ln",
         var.title="Days to open a business (logged) (2005)",
         y.title="Days (logged)", plot.year=2005)

plot.its(model=model.days_ln.2006, var.name="sb_days_ln",
         var.title="Days to open a business (logged) (2006)",
         y.title="Days (logged)", plot.year=2006)

plot.its(model=model.cost_ln.2005, var.name="sb_cost_ln",
         var.title="Cost to open a business (logged) (2005)",
         y.title="Dollars (logged)", plot.year=2005)

plot.its(model=model.cost_ln.2006, var.name="sb_cost_ln",
         var.title="Cost to open a business (logged) (2006)",
         y.title="Dollars (logged)", plot.year=2006)

plot.its(model=model.capital_ln.2005, var.name="sb_capital_ln",
         var.title="Capital to open a business (logged) (2005)",
         y.title="Dollars (logged)", plot.year=2005)

plot.its(model=model.capital_ln.2006, var.name="sb_capital_ln",
         var.title="Capital to open a business (logged) (2006)",
         y.title="Dollars (logged)", plot.year=2006)