# Run placebo tests for each control region
control_ids <- c(2:16, 18)
placebo_gaps <- list()
for (ctrl_id in control_ids) {
donor_ids <- setdiff(c(2:16, 18), ctrl_id)
tryCatch({
dp <- dataprep(
foo = basque,
predictors = c("school.illit", "school.prim", "school.med",
"school.high", "school.post.high", "invest"),
predictors.op = "mean",
time.predictors.prior = 1964:1969,
special.predictors = list(
list("gdpcap", 1960:1969, "mean"),
list("sec.agriculture", seq(1961, 1969, 2), "mean"),
list("sec.energy", seq(1961, 1969, 2), "mean"),
list("sec.industry", seq(1961, 1969, 2), "mean"),
list("sec.construction", seq(1961, 1969, 2), "mean"),
list("sec.services.venta", seq(1961, 1969, 2), "mean"),
list("sec.services.nonventa", seq(1961, 1969, 2), "mean"),
list("popdens", 1969, "mean")
),
dependent = "gdpcap",
unit.variable = "regionno",
unit.names.variable = "regionname",
time.variable = "year",
treatment.identifier = ctrl_id,
controls.identifier = donor_ids,
time.optimize.ssr = 1960:1969,
time.plot = 1955:1997
)
so <- synth(data.prep.obj = dp, method = "BFGS")
y1 <- as.numeric(dp$Y1plot)
y0 <- as.numeric(dp$Y0plot %*% so$solution.w)
placebo_gaps[[as.character(ctrl_id)]] <- data.frame(
year = 1955:1997, gap = y1 - y0, unit = ctrl_id
)
}, error = function(e) {
# Skip units where optimization fails
})
}