Skip to contents

Builds a synthetic version of the treated unit as a convex combination of donor units, chosen so the synthetic unit tracks the treated unit's pre-treatment outcomes (and optional predictors). The donor-weight problem is the constrained QP of Abadie & Gardeazabal (2003), solved by accelerated projected gradient on the simplex; the predictor-weight matrix V is optimized by nested minimization of pre-period MSPE. In-space placebo inference reassigns treatment to every donor and compares post/pre RMSPE ratios (Abadie, Diamond & Hainmueller 2010).

Usage

morie_synth_control(
  data,
  outcome,
  unit,
  time,
  treated_unit,
  treatment_time,
  predictors = NULL,
  optimize_v = TRUE
)

Arguments

data

Long panel data frame (balanced).

outcome, unit, time

Column names.

treated_unit

The identifier of the treated unit.

treatment_time

First treated period.

predictors

Optional character vector of predictor columns (averaged over the pre-period). Pre-period outcomes are always included as predictors.

optimize_v

Optimize the predictor-weight matrix V (default TRUE); FALSE uses equal weights on standardized predictors.

Value

An object of class morie_synth: a list with weights (named donor weights), donor_pool, treated_unit, time_series (data frame with observed, synthetic, and gap paths), att (mean post-period gap), pre_rmspe, post_rmspe, rmspe_ratio, placebo_pvalue and placebo_ratios, v_weights, method.

References

Abadie, A., Diamond, A., & Hainmueller, J. (2010). Synthetic control methods for comparative case studies. JASA, 105(490), 493–505.

Examples

pan <- expand.grid(unit = letters[1:6], time = 1:10)
pan$y <- rnorm(nrow(pan)) + as.integer(pan$time) * 0.2 +
  ifelse(pan$unit == "a" & pan$time >= 7, 2, 0)
fit <- morie_synth_control(pan, "y", "unit", "time",
                           treated_unit = "a", treatment_time = 7)
fit$att
#> [1] 2.185351