Module 4: Synthetic Control

The estimator, its inference, and the two variants that fix its weaknesses. The experimentation-refresher's Module 8 introduced synthetic control (SC) as a convex combination of donors fit by solve.QP. This module gives the formal Abadie-Diamond-Hainmueller (ADH) estimator with its nested V-matrix optimization, the placebo-based inference that replaces standard errors, and the augmented (Ben-Michael, Feller and Rothstein 2021) and generalized (Xu 2017) estimators that relax SC's convex-hull and perfect-pre-fit assumptions.

The one-treated-unit problem

One unit adopts a policy; there is no randomized control and no single comparable unit. California raised cigarette taxes and funded anti-smoking programs in 1989 (Proposition 99); no other state did the same thing at the same time. The idea of SC is to build a counterfactual California as a weighted average of the states that did not pass such a law, with weights chosen so the synthetic unit reproduces California's pre-1989 trajectory. The post-1989 gap between real and synthetic California is the estimated effect.

The running canonical data set is california_prop99 (39 states, 1970-2000, outcome PacksPerCapita). California is treated from 1989: 19 pre-treatment years, 12 post years, 38 donor states.

The Abadie-Diamond-Hainmueller estimator

Let unit 1 be treated and units $2, \dots, J+1$ be donors. Stack $k$ pre-treatment predictors of the outcome into $X_1$ ($k \times 1$, the treated unit) and $X_0$ ($k \times J$, the donors). The synthetic control is the weight vector $W = (w_2, \dots, w_{J+1})'$ solving

$$W^*(V) = \arg\min_{W}\; (X_1 - X_0 W)'\, V\, (X_1 - X_0 W) \quad \text{s.t.} \quad w_j \ge 0,\; \sum_{j} w_j = 1.$$

Two constraints define SC and separate it from regression:

The V-matrix and the nested optimization

$V$ is a $k \times k$ symmetric positive-semidefinite matrix (in practice diagonal) of predictor importances: it decides how much each predictor's imbalance counts toward the fit. ADH choose $V$ by an outer optimization that minimizes the pre-treatment prediction error of the outcome:

$$V^ = \arg\min_{V}\; \big(Z_1 - Z_0\, W^(V)\big)'\big(Z_1 - Z_0\, W^*(V)\big),$$

where $Z_1, Z_0$ are the pre-treatment outcome paths of the treated unit and donors. This is a bilevel (nested) program: each candidate $V$ requires solving the inner quadratic program for $W^*(V)$, then the outer loop scores that $W$ by how well it tracks the pre-period outcome. Synth::synth() runs this nested search; a hand-rolled solve.QP fixes $V = I$ (equal weight on every predictor) and solves only the inner problem.

When the predictors are just the pre-period outcome lags, all on the same scale, the optimal $V^*$ is close to a scaled identity and the nested search barely moves the weights: on Prop 99 the from-scratch $V = I$ solution and Synth::synth() produce essentially identical weights and a gap-series correlation of $1.00$. The V-matrix earns its keep when predictors are heterogeneous (income, price, demographics, plus a few outcome lags on very different scales); there, equal weighting is arbitrary and the nested search matters.

Interpolation versus extrapolation

Because the weights lie on the simplex, the synthetic control interpolates: it can only reach outcome levels inside the convex hull of the donor pool. If the treated unit is extreme (California smoked less per capita than most donors even before 1989), no convex combination reaches it and the pre-fit is imperfect by construction. That imperfection is honest: SC refuses to extrapolate. The cost is bias when the treated unit sits outside the hull; the augmented estimator below trades some of the no-extrapolation guarantee for a bias correction.

Donor pool selection

The donor pool is an assumption, not a convenience sample. Guidelines:

The pre-fit / RMSPE diagnostic

The pre-treatment root mean squared prediction error,

$$\text{RMSPE}{\text{pre}} = \sqrt{\frac{1}{T_0}\sum \Big(Y_{1t} - \sum_j \hat w_j Y_{jt}\Big)^2},$$

is exactly the objective the weights minimize, so it is the best the donor pool can do. Abadie's rule of thumb: if $\text{RMSPE}_{\text{pre}}$ is large relative to the treated unit's pre-period outcome scale, the synthetic control is not tracking the treated unit and post-period gaps are uninterpretable. Do not report an SC estimate off a poor pre-fit; expand the pool, lengthen the pre-period, or switch designs. On Prop 99 the pre-RMSPE is $1.66$ packs against a California pre-period mean near $110$ packs, an excellent fit.

Inference

With one treated unit there is no sampling distribution to build a standard error from. Inference is by permutation.

Placebo-in-space

Re-run the entire SC procedure pretending each donor is the treated unit, against the remaining donors. Each placebo produces a gap series and, crucially, a ratio

$$r_i = \frac{\text{RMSPE}{\text{post},i}}{\text{RMSPE},i}},$$

which normalizes the post-period divergence by how well that unit could be fit pre-period. Rank the treated unit's ratio among all $J+1$ ratios; the exact permutation $p$-value is

$$p = \frac{\text{rank of the treated unit's } r}{J+1} = \frac{#{i : r_i \ge r_{\text{treated}}}}{J+1}.$$

On Prop 99 with $V = I$, California's ratio is $12.4$, the third-largest of the 39 states, giving $p = 3/39 = 0.077$. Two never-treated states (Missouri, Virginia) show larger ratios: both are fit almost perfectly pre-period and then drift post-period by chance, a reminder that with a moderate donor pool the permutation test has limited power and that the ratio (not the raw gap) is the right statistic precisely because it penalizes overfit placebos. Screening donors on pre-fit does not rescue California to rank one here because the two higher-ratio states are themselves well fit; ADH's published rank-one result uses economic covariates and an optimized $V$, not outcome lags alone.

Placebo-in-time (backdating)

Assign a fake treatment date strictly inside the pre-period, refit SC using only data before the fake date, and check the gap over the interval between the fake and real dates. A large pseudo-effect before the real intervention undermines the design. Backdating California to 1980 (fitting on 1970-1979) produces an average 1980-1988 pseudo-effect of $-3.4$ packs, roughly one-sixth of the real $-20.8$ post-1989 effect and partly an artifact of discarding half the pre-period. The real effect is an order of magnitude larger and appears only after the true 1989 date.

Conformal inference (conceptual)

Chernozhukov, Wuthrich and Zhu (2021) give a model-free alternative to placebo permutation. The idea: under a sharp null of no effect, the post-period residuals from the SC fit should be exchangeable with the pre-period residuals. They construct a test by permuting (or block-permuting) residuals across time and inverting it to a confidence interval for the effect path. Unlike placebo-in-space it does not need a large donor pool, and unlike a naive permutation it delivers pointwise and joint confidence bands with finite-sample validity under an exchangeability assumption. In practice it is the inference method to reach for when the donor pool is too small for a credible placebo-in-space distribution. This module describes it; the scinference package implements it.

Augmented synthetic control

Ben-Michael, Feller and Rothstein (2021) target SC's residual pre-treatment imbalance directly. When SC cannot fit the treated unit perfectly (the common case when the unit is near or outside the hull), the leftover imbalance $X_1 - X_0 \hat W^{\text{scm}}$ biases the estimate. Augmented SC (ASCM) corrects it with an outcome model. The counterfactual becomes

$$\hat Y_{1T}(0) = \sum_j \hat w_j^{\text{scm}} Y_{jT} + \big(X_1 - X_0 \hat W^{\text{scm}}\big)'\, \hat\eta,$$

where $\hat\eta$ is the coefficient of a (ridge-penalized) regression of donor post-period outcomes on donor pre-period predictors. The first term is ordinary SC; the second is a bias correction proportional to the residual imbalance, scaled by how that imbalance maps to the outcome. Two properties matter:

ASCM is the practical default when SC pre-fit is good but imperfect: it keeps SC's interpretability while removing first-order bias. The augsynth package fits it with progfunc = "Ridge".

Generalized synthetic control (interactive fixed effects)

Xu (2017) embeds SC in a factor (interactive fixed effects, IFE) model:

$$Y_{it} = x_{it}'\beta + \lambda_i' f_t + \alpha_i + \xi_t + \varepsilon_{it},$$

where $f_t$ is a vector of $r$ latent time factors and $\lambda_i$ the unit's loadings on them. Ordinary two-way fixed effects assume the only time structure is a common shock $\xi_t$; the interactive term $\lambda_i' f_t$ lets different units respond differently to common factors (a demand shock that hits dense cities harder). The estimator (gsynth):

  1. Estimates $\beta$, the factors $F = (f_1, \dots, f_T)$, and control-unit loadings on the control units only, via the Bai (2009) IFE estimator.
  2. For each treated unit, estimates its loadings $\hat\lambda_i$ by regressing its pre-treatment residuals on the estimated factors.
  3. Imputes the untreated potential outcome $\hat Y_{it}(0) = x_{it}'\hat\beta + \hat\lambda_i' \hat f_t$ for post-periods, and averages $Y_{it} - \hat Y_{it}(0)$ over treated post cells for the ATT.
  4. Chooses the factor count $r$ by cross-validation (leave-out pre-period MSPE), and does inference by a parametric bootstrap.

gsynth generalizes SC: SC's convex-combination weights are one way to match factor loadings; the IFE model estimates the loadings directly and can extrapolate, handle multiple treated units, and accommodate covariates. It is the estimator to reach for when the donor pool shares a low-rank factor structure with the treated unit and the pre-period is long enough to estimate the factors.

Applications

Proposition 99 (from scratch versus package). A hand-coded solve.QP with $V = I$ on the 19 pre-period outcome lags gives weights Utah $0.39$, Montana $0.23$, Nevada $0.20$, Connecticut $0.11$, New Hampshire $0.05$, Colorado $0.02$; pre-RMSPE $1.66$; an average post-1989 effect of $-19.5$ packs per capita. Synth::synth() with the same outcome lags as special.predictors returns weights within $0.003$ of these and a gap series correlated $1.00$ with the hand-coded one: with outcome-lag predictors the optimized $V$ lands near the identity. Placebo-in-space puts California third of 39 ($p = 0.077$).

Ride-share single-city policy (factor panel). A simulated panel of one treated city and 20 donor cities over 48 months, generated from two latent factors with city-specific loadings, gets an airport-pickup policy at month 36 with a true effect of $1.5$. The treated city's loadings sit near the edge of the donor hull, so plain SC cannot fit it well and overshoots: SC estimates $3.22$ against a truth of $1.5$. Augmented SC (Ridge) corrects most of the bias to $1.72$. gsynth cross-validates to the correct $r = 2$ factors and estimates $1.59$ with a 95% interval $[1.11, 2.07]$ that covers the truth. The ordering (gsynth best, ASCM next, plain SC worst) is the general lesson: when the panel is low-rank and the treated unit is near the hull edge, model the factors.

The same problem at an online retailer

A single flagship metro receives same-day delivery as a pilot before any other markets. All remaining metros, still on two-day delivery, form the donor pool for a synthetic control. Pre-period fit minimizes the distance between the flagship's orders-per-capita series and a convex combination of donors on the same metric, anchoring the synthetic counterfactual to observed pre-launch behavior. The synthetic control then predicts what the flagship's orders would have been in the post-launch period if it had remained on two-day; the gap between actual and synthetic orders is the estimated delivery effect. Inference uses placebo-in-space: same-day status is assigned to each donor metro in turn, and the flagship's gap is judged significant if it lies outside the distribution of placebo gaps. The convex-hull constraint is a genuine concern in this setting because the flagship metro may be the largest market by order volume; if no convex combination of smaller donor metros can match its pre-period scale, the estimator extrapolates rather than interpolates, and the pre-period fit will be poor. Donor selection should exclude metros that are too dissimilar in baseline order levels to contribute usefully to the synthetic combination.

References