Answer

Interrupted time series vs event study vs difference-in-differences

A frequently asked statistics question ·

causal inferencetime seriesstudy design

The short answer

They all ask what changed after an intervention, but they answer with different comparisons. Interrupted time series compares a single series with its own projected trend. Difference-in-differences compares a treated group with an untreated group. An event study is either a short-window test around a dated event or a difference-in-differences model that reports effects period by period.

Why they look alike

Each method tries to answer the same question: what would have happened without the intervention, and how far did reality depart from that? Every one of them measures an outcome before and after something changed. The real difference is how each method constructs the counterfactual, the picture of the world where nothing happened. That choice decides what assumption you must defend.

Interrupted time series (ITS)

ITS uses one series, such as monthly hospital admissions for a single region, observed many times before and after the intervention. You fit the pre-intervention trend, project it forward, and read the effect as a change in level and/or a change in slope at the intervention date. This is usually done with segmented regression, and because neighboring time points are correlated, the model should allow for autocorrelation.

The counterfactual is the past trend continuing unchanged. The main threat is anything else that changed at about the same time, since nothing in the data can separate it from your intervention.

Difference-in-differences (DiD)

DiD needs a group that received the intervention and a comparison group that did not, each measured before and after. The effect is the treated group's before-to-after change minus the comparison group's change. Whatever moved both groups alike is subtracted out.

The counterfactual is that the treated group would have moved in parallel with the comparison group. This is the parallel trends assumption. It cannot be proven, but you can look at whether the groups moved together before the intervention.

Event study: two meanings

The term is used in two ways, which is a common source of confusion.

So the second kind is best seen as a DiD that keeps the time dimension instead of averaging it into one number. When treatment starts at different dates for different units, simple two-way fixed effects can mislead if effects vary across units or time, and newer estimators were built for that case.

Which one should you use?

You can also combine them. A comparison group added to an ITS design gives a controlled ITS, which guards against a shared shock. That matters, because the same shock can fool one method and not the other.

See the difference in R

The simulation below has a shared upward trend, a shock of +2 that hits both groups at period 21, and a true intervention effect of +3 for the treated group only. Run with this seed, the ITS on the treated group alone reports a level change of 5.42, because it credits the shock to the intervention (the combined jump is 5). The DiD estimate is 3.16. The event study measures the treated-versus-comparison gap in each period against the period just before the intervention. Because every gap shares that one noisy reference period, the gaps before period 21 average 0.71 rather than exactly zero, and after it they average 3.84, a jump of about 3.1. These numbers come from one seeded run, so they will shift with a different seed.

set.seed(1)
T0 <- 21                                   # first period after the intervention
df <- expand.grid(t = 1:40, group = 0:1)   # group 1 = treated, group 0 = comparison
df$post  <- as.integer(df$t >= T0)
df$since <- pmax(0, df$t - T0)
df$y <- 10 + 5 * df$group + 0.5 * df$t +   # shared trend; treated group starts higher
        2 * df$post +                      # shock that hits BOTH groups at T0
        3 * df$post * df$group +           # true effect of the intervention
        rnorm(nrow(df), 0, 1)

# 1. Interrupted time series: treated group only, level and slope change
its <- lm(y ~ t + post + since, data = subset(df, group == 1))
cat("ITS level change:", round(coef(its)["post"], 2), "\n")

# 2. Difference-in-differences: treated vs comparison, before vs after
did <- lm(y ~ group * post, data = df)
cat("DiD effect:      ", round(coef(did)["group:post"], 2), "\n")

# 3. Event study: treated-vs-comparison gap by period, measured against T0 - 1
df$rel <- relevel(factor(df$t - T0), ref = "-1")
es  <- lm(y ~ factor(t) + group + group:rel, data = df)
gap <- coef(es)[grepl("^group:rel", names(coef(es)))]
rel <- as.integer(sub("^group:rel", "", names(gap)))
before <- mean(gap[rel < -1])
after  <- mean(gap[rel >= 0])
cat("Event study, mean gap before T0:", round(before, 2), "\n")
cat("Event study, mean gap after T0: ", round(after, 2), "\n")
cat("Event study, jump:              ", round(after - before, 2), "\n")

Real analyses need more: standard errors that respect autocorrelation or clustering, a look at the pre-trends, and a check on whether the comparison group is credible.

Related tools and guides

Working with your own data?

General answers only go so far. Send us your situation and we'll reply by email within two business days.

Ask your question

Written by AskStats with AI assistance. This is general information, not advice for your specific data or study. When the results matter, check your approach with a qualified statistician.