EconStatsCraft Open the tool

EconStatsCraft › Staggered difference-in-differences

Staggered difference-in-differences

When units are treated at different dates, the usual two-way fixed-effects regression quietly uses ALREADY-TREATED units as controls, subtracting out their own effect. This estimator does not: it compares each cohort only with units not yet treated, and shows you the decomposition of what the naive regression was actually averaging.

What it needs

The intuition

For thirty years the standard way to handle a policy that rolled out in waves was to regress the outcome on a treatment dummy with unit and period fixed effects, and read off the coefficient. Goodman-Bacon asked what that coefficient actually IS, and the answer was uncomfortable: a weighted average of every two-by-two comparison available in the data - including ones in which a unit treated in 2012 serves as the CONTROL for a unit treated in 2016. In those comparisons the control group is already being treated, so its own effect is subtracted from the treated group's. If effects grow over time, the subtracted amount is growing too, and the estimate is pulled towards zero. With enough of these comparisons the weights on some of them turn negative and the sign of the estimate can flip while every unit gained from the policy.

When to use it

Any policy that rolled out in waves: states adopting a law in different years, firms upgrading on their own schedule, schools joining a programme over a decade. If every unit is treated on the same date, ordinary DiD is fine and this adds only the event study.

Where the estimator comes from

Callaway and Sant'Anna build up from the smallest well-defined object, the group-time effect ATT(g,t)=\mathbb{E}\left[Y_t(g)-Y_t(0)\mid G=g\right], identified under parallel trends and no anticipation as \mathbb{E}[Y_t-Y_{g-1}\mid G=g]-\mathbb{E}[Y_t-Y_{g-1}\mid \text{not yet treated}] - a clean two-period, two-group comparison with no already-treated unit anywhere in it. Aggregation is then a choice you make explicitly: \theta^{es}(e)=\sum_g P(G=g\mid G+e\le T)\,ATT(g,g+e) for the event study, or a cohort-size weighted average of all ATT(g,t) with t\ge g for a single number. Goodman-Bacon's result runs the other way, showing the TWFE coefficient equals \hat\beta^{DD}=\sum_{k\ne U}s_{kU}\hat\beta_{kU}^{2\times2}+\sum_{k\ne l}\left[s_{kl}^k\hat\beta_{kl}^{2\times2,k}+s_{kl}^l\hat\beta_{kl}^{2\times2,l}\right] with weights proportional to group sizes and to the variance of treatment within each pair - and the \hat\beta^{2\times2,l}_{kl} terms are the forbidden ones.

The model

ATT(g,t)=\mathbb{E}\!\left[Y_t-Y_{g-1}\mid G=g\right]-\mathbb{E}\!\left[Y_t-Y_{g-1}\mid \text{not yet treated at }t\right]

What it assumes

Statistical properties

How to read the output

A worked reading

A programme reaching 24 states in four waves, with five never covered and an effect of 2.0 points on adoption growing 0.8 a year. Two-way fixed effects returns 2.72. The true average effect on the treated is 3.9, and the group-time estimator returns 3.86 with a bootstrap standard error of 0.68 - so the naive regression understates the effect by 30%. The decomposition says precisely where it went: 49% of the weight is on clean comparisons against never-treated states, 25% on earlier-versus-later cohorts, and 26% on later cohorts compared against states that were ALREADY treated - and that last group averages 1.27, less than a third of the true effect, because the control group was itself improving. The event study recovers the built-in path, rising from 1.6 on impact to 4.9 six years later, with the pre-treatment coefficients flat and a joint test at p = 0.24.

Symptom → diagnosis → what to do

If you see thisIt meansDo this
TWFE far below the ATTEffects grow and already-treated units are controlsReport Callaway-Sant'Anna; the decomposition shows the weight
Large weight on "later vs ALREADY-treated"Many cohorts, long post periodsThe naive estimate is mostly forbidden comparisons
Pre-treatment coefficients trendingParallel trends is in doubt, or anticipationLook for what changed before the policy; consider never-treated only
Very wide bands at long event timesFew cohorts are observed that long after treatmentTruncate the event window rather than reporting noise
A cohort treated in the first periodIt has no pre-periodIt is dropped - there is nothing to difference against
Effect vanishes with never-treated controls onlyThe not-yet-treated were driving itWorth understanding before reporting either

Common mistakes

Where to read this properly

See also

Difference-in-differences, for the two-group two-period case where none of this arises. Panel regression, for the fixed-effects machinery underneath. Event-study reading carries over to both.

Related Causal

Spatial autocorrelation · Spatial regression · Heckman selection · Instrumental variables (2SLS) · Difference-in-differences · Regression discontinuity · Matching & weighting · Oaxaca–Blinder decomposition

All analyses

Charts

Line chart · Area chart · Bar chart · Stacked bar · Scatter plot · Bubble chart · Histogram · Box plot · Pie chart · Heat map · Rebased to 100 · Lorenz curve and Gini

Maps

World map · Bivariate map · Flow map · India - state map · India - district map

Explore

Descriptive statistics · Summary by group · Two-way table · Classical statistical tests

Regression

Multiple regression (OLS) · Logit / Probit · Tobit (censored) · Truncated regression · Multinomial logit · Ordered logit / probit · Quantile regression · Poisson / Negative binomial

Time series - one series

Time-varying coefficients (Kalman) · Unit root tests · Correlogram (ACF / PACF) · ARIMA / SARIMA · Rolling-origin cross-validation · Theta method · Unobserved components · STL forecasting · Forecast combination · Markov regime switching · Change frequency (resample) · ARCH / GARCH volatility · Decompose & filter · Spectral analysis · Exponential smoothing · Forecast accuracy

Time series - several series

Yield curve (Nelson–Siegel / Svensson) · Dynamic factor model · Dynamic regression (ARIMAX) · Structural VAR · VAR · Granger causality · Cointegration · VECM · ARDL & bounds test

Panel data

Panel regression · Panel cointegration tests · Heterogeneous panel: Mean Group & PMG · Gravity model of trade · Dynamic panel GMM · Panel diagnostics · Panel unit-root tests

Multivariate statistics

Principal components (PCA) · Factor analysis · Cluster analysis

Marketing research

Conjoint analysis · MaxDiff (best–worst scaling) · TURF - reach of a product line · Price sensitivity (Van Westendorp) · Market basket analysis · Perceptual map · Scale reliability (Cronbach’s alpha) · Key driver analysis

Causal

Spatial autocorrelation · Spatial regression · Heckman selection · Instrumental variables (2SLS) · Difference-in-differences · Staggered difference-in-differences · Regression discontinuity · Matching & weighting · Oaxaca–Blinder decomposition

Finance & risk

Black–Scholes option pricing · Bond price, duration & convexity · Merton distance to default · EMI / home loan planner · CAPM / beta estimation · Multi-factor model · Portfolio optimization · Value at Risk & Expected Shortfall · Performance & drawdown · Time value of money & NPV/IRR · Equity valuation (DDM, FCF, residual income) · Cost of capital (WACC) · Binomial option pricing · Option strategies (payoff & profit) · Forwards, futures & swaps · Credit risk & Basel capital · Extreme value theory (tail risk)

Actuarial

Life table · Life annuity · Life insurance pricing · Chain ladder reserving · Buhlmann credibility · Survival analysis · Mortality graduation · Aggregate loss model · Ruin probability · Multi-state Markov model · Loss severity fitting

Tests & breaks

Monte Carlo experiment · F-test, Wald & Chow · Structural breaks & stability

Machine learning

Regression vs machine learning · Ridge / Lasso / Elastic Net · Random forest · Gradient boosting

Open the workspace →

Starting engine…

EconStatsCraft rigorous, plain-spoken econometrics

Econometrics that explains itself.

Regression, panel data, time series and the whole battery of tests. Every result is followed by a verdict you can defend.

Load a dataset to see it here.