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.
EconStatsCraft › 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.
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.
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.
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.
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]
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.
| If you see this | It means | Do this |
|---|---|---|
| TWFE far below the ATT | Effects grow and already-treated units are controls | Report Callaway-Sant'Anna; the decomposition shows the weight |
| Large weight on "later vs ALREADY-treated" | Many cohorts, long post periods | The naive estimate is mostly forbidden comparisons |
| Pre-treatment coefficients trending | Parallel trends is in doubt, or anticipation | Look for what changed before the policy; consider never-treated only |
| Very wide bands at long event times | Few cohorts are observed that long after treatment | Truncate the event window rather than reporting noise |
| A cohort treated in the first period | It has no pre-period | It is dropped - there is nothing to difference against |
| Effect vanishes with never-treated controls only | The not-yet-treated were driving it | Worth understanding before reporting either |
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.
Spatial autocorrelation · Spatial regression · Heckman selection · Instrumental variables (2SLS) · Difference-in-differences · Regression discontinuity · Matching & weighting · Oaxaca–Blinder decomposition
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
World map · Bivariate map · Flow map · India - state map · India - district map
Descriptive statistics · Summary by group · Two-way table · Classical statistical tests
Multiple regression (OLS) · Logit / Probit · Tobit (censored) · Truncated regression · Multinomial logit · Ordered logit / probit · Quantile regression · Poisson / Negative binomial
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
Yield curve (Nelson–Siegel / Svensson) · Dynamic factor model · Dynamic regression (ARIMAX) · Structural VAR · VAR · Granger causality · Cointegration · VECM · ARDL & bounds test
Panel regression · Panel cointegration tests · Heterogeneous panel: Mean Group & PMG · Gravity model of trade · Dynamic panel GMM · Panel diagnostics · Panel unit-root tests
Principal components (PCA) · Factor analysis · Cluster analysis
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
Spatial autocorrelation · Spatial regression · Heckman selection · Instrumental variables (2SLS) · Difference-in-differences · Staggered difference-in-differences · Regression discontinuity · Matching & weighting · Oaxaca–Blinder decomposition
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)
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
Monte Carlo experiment · F-test, Wald & Chow · Structural breaks & stability
Regression vs machine learning · Ridge / Lasso / Elastic Net · Random forest · Gradient boosting
EconStatsCraft rigorous, plain-spoken econometrics
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.
Pick the example closest to your question. You get a spreadsheet with the right columns and a few rows showing the expected format - replace the numbers with your own, then paste or upload it back.
Copy the header row from the table above (or from the downloaded template), put your own rows underneath, and paste the whole thing here. It is checked against the layout before anything is imported.
Or click a row in the preview below.
For a units or notes row.
Search every source at once. World Bank indicators need countries and years; everything else loads in one click.
Loading the catalogue…
The engine stays loaded, so this is quick - and it leaves your open tab and panel layout alone.
⌘/Ctrl+Enter runs the current analysis. ⌘/Ctrl+P exports the session as a PDF. Esc closes this.
In the Notebook: Enter starts a new block and
Shift+Enter a new line inside one; Backspace at the start
joins back into the paragraph above; / on an empty line inserts anything.
⌘/Ctrl+B, I, E, H and
M apply bold, italic, code, highlight and maths.
#, ##, -, 1., > and
``` at the start of a line convert it.
Sign in to run unlimited analyses.
Scroll to pan · Esc to close