28.2 Interrupted Time Series

Interrupted Time Series (ITS) is a powerful quasi-experimental method used to assess how an intervention affects the level and/or trend of an outcome over time. By analyzing long-term pre- and post-intervention data, ITS estimates what would have happened in the absence of the intervention—assuming the pre-existing trend would have continued unchanged.

ITS is particularly useful when a policy, treatment, or intervention is implemented at a distinct point in time, affecting an entire population or group simultaneously. It differs from RDiT in that it typically models both abrupt and gradual changes over time rather than exploiting a sharp discontinuity.

A well-specified ITS model should account for:

  • Seasonal trends: Some outcomes exhibit cyclical patterns (e.g., sales, disease prevalence), which must be adjusted for.

  • Concurrent events: Other changes occurring around the same time as the intervention may confound estimates, making it difficult to attribute observed changes solely to the intervention.

ITS is appropriate when:

  1. Longitudinal data is available: The outcome must be observed over time, with multiple data points before and after the intervention.
  2. A population-wide intervention occurs at a specific time: The intervention should affect all units simultaneously or be structured in a way that allows stacking based on intervention timing.

Notes

Possible Threats to the Validity of ITS Analysis (Baicker and Svoronos 2019)

  • Delayed effects (Rodgers, John, and Coleman 2005)
    The impact of an intervention may manifest some time after its introduction. If only the immediate post-intervention period is assessed, key effects could be missed.

  • Other confounding events (Linden and Yarnold 2016; Linden 2017)
    Concurrent policy changes or external shocks that overlap with the intervention period can obscure or inflate the apparent intervention effect.

  • Intervention is introduced but later withdrawn (Linden 2015)
    When an intervention does not remain in place, the time series may reflect multiple shifts in trends or levels, complicating the interpretation of a single “interrupted” period.

  • Autocorrelation
    Time series data often exhibit autocorrelation, which can lead to underestimated standard errors if not properly accounted for, thus overstating the statistical significance of the intervention effect.

  • Regression to the mean
    After a short-term shock, outcomes may revert toward prior or average levels. Interpreting this natural reversion as an intervention effect can be misleading.

  • Selection bias
    If only certain individuals or settings receive the intervention, pre-existing differences may confound the results. Designs with multiple groups or comparison series can help mitigate this bias.

After an intervention, an outcome can exhibit four distinct patterns:

Key assumptions for ITS:
Scenario Description
No effect The intervention does not change the level or trend of the outcome.
Immediate effect A sharp, immediate change in the outcome following the intervention.
Sustained effect A gradual, long-term shift in the outcome that smooths over time.
Both immediate & sustained effects A combination of a sudden change and a long-term trend shift.
  • The pre-intervention trend would remain stable if the intervention never occurred (i.e., no major time-varying confounders coinciding with the intervention).
  • Data is available for multiple time points before and after the intervention to estimate trends.

The following model integrates both immediate and sustained intervention effects (i.e., segmented regression):

Yt=β0+β1Tt+β2Dt+β3(Tt×Dt)+β4Pt+ϵt

where:

  • Yt: Outcome variable at time t.
  • Tt: Time index (continuous).
    • β1: Baseline slope (trend before intervention).
  • Dt: Intervention dummy (Dt=1 if tT, otherwise 0).
    • β2: Immediate effect (level change at intervention).
  • (Tt×Dt): Interaction term capturing a change in slope post-intervention.
    • β3: Difference in slope after intervention compared to before.
  • Pt: Time since the intervention (0 before intervention, increments after).
    • β4: Sustained effect over time.
  • ϵt: Error term (assumed to be normally distributed).

This model allows us to:

  1. Measure the pre-intervention trend (β1).
  2. Capture the immediate effect of the intervention (β2).
  3. Identify if the slope changes post-intervention (β3).
  4. Examine long-term effects using Pt (β4).

ITS does not require a purely immediate or discontinuous effect; the effect can be gradual or delayed, which can be captured with additional terms (e.g., lags or non-linear structures).

28.2.1 Advantages of ITS

ITS offers several benefits, particularly in public policy, health research, and economics. According to (Penfold and Zhang 2013), key advantages include:

  • Controls for long-term trends: Unlike simple pre/post comparisons, ITS explicitly models pre-existing trajectories, reducing bias from underlying trends.

  • Applicable to population-wide interventions: When an entire group or region is affected simultaneously, ITS provides a strong alternative to traditional experimental methods.

28.2.2 Limitations of ITS

While ITS is a valuable tool, it has some key limitations:

  • Requires a sufficient number of observations: At least 8 data points before and 8 after the intervention are typically recommended for reliable estimation.

  • Challenging with multiple overlapping events: When several interventions occur close together in time, it can be difficult to isolate their individual effects.

28.2.3 Empirical Example

  1. Generating synthetic time-series data with a known intervention time T_star
  2. Modeling an Interrupted Time Series (ITS) with both immediate and sustained effects
  3. Accounting for pre-intervention trend, immediate jump, slope change, and post-intervention time
  4. Demonstrating robust (sandwich) standard errors to handle possible autocorrelation
  5. Visualizing the data and fitted ITS lines
  6. Brief interpretation of coefficients
# -------------------------------------------------------------------
# 0. Libraries
# -------------------------------------------------------------------
if(!require("sandwich")) install.packages("sandwich", quiet=TRUE)
if(!require("lmtest"))   install.packages("lmtest",   quiet=TRUE)
library(sandwich)
library(lmtest)

# -------------------------------------------------------------------
# 1. Generate Synthetic Data
# -------------------------------------------------------------------
set.seed(456)
n       <- 50               # total number of time points
T_star  <- 25               # intervention time
t_vals  <- seq_len(n)       # time index: 1, 2, ..., n

We’ll simulate a time-series with:

  • A baseline slope pre-intervention

  • An immediate jump at T

  • A change in slope after T

  • A mild seasonal pattern

  • Random noise

Y <- 1.0 * t_vals +                      # baseline slope
  ifelse(t_vals >= T_star, 10, 0) +   # immediate jump of +10 at T_star
  
  # additional slope post-intervention
  ifelse(t_vals >= T_star, 0.5 * (t_vals - T_star), 0) +
  5 * sin(t_vals / 6) +                # mild seasonal pattern
  rnorm(n, sd = 3)                   # random noise

# Combine into a data frame
df_its <- data.frame(time = t_vals, Y = Y)

# -------------------------------------------------------------------
# 2. Define Key ITS Variables
# -------------------------------------------------------------------
  • Tt: the time index (we’ll just use ‘time’ for that)

  • Dt: an indicator for post-intervention (1 if t>=T, else 0)

  • Pt: time since intervention (0 before T, increments after)

df_its$D  <- ifelse(df_its$time >= T_star, 1, 0)
df_its$T  <- df_its$time
df_its$P  <- ifelse(df_its$time >= T_star, df_its$time - T_star, 0)

# -------------------------------------------------------------------
# 3. Plot the Entire Dataset & Highlight the Intervention
# -------------------------------------------------------------------
plot(
    df_its$T,
    df_its$Y,
    pch = 16,
    xlab = "Time (T)",
    ylab = "Outcome (Y)",
    main = "Full Series with Intervention at T_star"
)
abline(v = T_star, lwd = 2)  # vertical line for the intervention

Model: Yt=β0+β1T+β2D+β3(TD)+β4P+ϵt where:

  • β0: baseline level

  • β1: pre-intervention slope

  • β2: immediate jump at T_star

  • β3: change in slope post-intervention

  • β4: sustained effect over time since intervention

  • ϵt: error term

# -------------------------------------------------------------------
# 4. Fit the Comprehensive ITS Model (Segmented Regression)
# -------------------------------------------------------------------
mod_its <- lm(Y ~ T + D + I(T*D) + P, data = df_its)

# Use robust standard errors to account for potential autocorrelation
res_its <- coeftest(mod_its, vcov = vcovHC(mod_its, type="HC1"))

# -------------------------------------------------------------------
# 5. Create Fitted Values for Plotting
# -------------------------------------------------------------------
df_its$pred_its <- predict(mod_its)

# -------------------------------------------------------------------
# 6. Plot the Observed Data & Fitted ITS Lines
# -------------------------------------------------------------------
plot(df_its$T, df_its$Y, pch=16,
     xlab="Time (T)", ylab="Outcome (Y)",
     main="ITS: Observed vs. Fitted")
abline(v=T_star, lwd=2)
lines(df_its$T, df_its$pred_its, lwd=2)


# -------------------------------------------------------------------
# 7. Summaries & Brief Interpretation
# -------------------------------------------------------------------

print(res_its)
#> 
#> t test of coefficients:
#> 
#>              Estimate Std. Error t value  Pr(>|t|)    
#> (Intercept)   5.42261    2.06039  2.6318   0.01152 *  
#> T             0.78737    0.16204  4.8589 1.409e-05 ***
#> D           -28.27162    3.95530 -7.1478 5.472e-09 ***
#> I(T * D)      1.25703    0.18351  6.8498 1.531e-08 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • (Intercept) = β0: Baseline level at T=0.
  • T = β1: Baseline slope (pre-intervention trend).
  • D = β2: Immediate jump (level change) at T_star.
  • T:D = β3: Slope change post-intervention.
  • P = β4: Sustained (additional) effect over time since T.

We compare the observed data with a counterfactual (assuming no treatment) (Lee Rodgers, Beasley, and Schuelke 2014).

plot(
    df_its$T,
    df_its$Y,
    pch = 16,
    col = "gray",
    xlab = "Time (T)",
    ylab = "Outcome (Y)",
    main = "ITS: Observed vs. Fitted vs. Counterfactual"
)

# Add vertical line indicating intervention point
abline(v = T_star, lwd = 2, col = "black")

# Add fitted ITS model trend
lines(df_its$T,
      df_its$pred_its,
      lwd = 2,
      col = "blue")

# Add counterfactual trend (what would have happened without intervention)
lines(
    df_its$T,
    df_its$pred_counterfactual,
    lwd = 2,
    col = "red",
    lty = 2
)

# Add legend
legend(
    "topleft",
    legend = c("Observed Data", "Fitted ITS", "Counterfactual"),
    col = c("gray", "blue", "red"),
    lty = c(NA, 1, 2),
    pch = c(16, NA, NA),
    lwd = c(NA, 2, 2)
)

Notes on Real-World Usage:

  • Consider checking for seasonality more explicitly (e.g., Fourier terms), or other covariates that might confound the outcome.

  • Assess autocorrelation further (e.g., Durbin-Watson test, Box-Jenkins approach).

  • In practice, also run diagnostics or conduct robustness checks, e.g., removing overlapping interventions or investigating delayed effects.

References

Baicker, Katherine, and Theodore Svoronos. 2019. “Testing the Validity of the Single Interrupted Time Series Design.” National Bureau of Economic Research.
Bottomley, Christian, J Anthony G Scott, and Valerie Isham. 2019. “Analysing Interrupted Time Series with a Control.” Epidemiologic Methods 8 (1): 20180010.
Harper, Sam, and Tim A Bruckner. 2017. “Did the Great Recession Increase Suicides in the USA? Evidence from an Interrupted Time-Series Analysis.” Annals of Epidemiology 27 (7): 409–14.
Lee Rodgers, Joseph, William Howard Beasley, and Matthew Schuelke. 2014. “Graphical Data Analysis on the Circle: Wrap-Around Time Series Plots for (Interrupted) Time Series Designs.” Multivariate Behavioral Research 49 (6): 571–80.
Linden, Ariel. 2015. “Conducting Interrupted Time-Series Analysis for Single-and Multiple-Group Comparisons.” The Stata Journal 15 (2): 480–500.
———. 2017. “A Comprehensive Set of Postestimation Measures to Enrich Interrupted Time-Series Analysis.” The Stata Journal 17 (1): 73–88.
Linden, Ariel, and Paul R Yarnold. 2016. “Using Machine Learning to Identify Structural Breaks in Single-Group Interrupted Time Series Designs.” Journal of Evaluation in Clinical Practice 22 (6): 855–59.
Penfold, Robert B, and Fang Zhang. 2013. “Use of Interrupted Time Series Analysis in Evaluating Health Care Quality Improvements.” Academic Pediatrics 13 (6): S38–44.
Rodgers, Joseph Lee, Craig A St John, and Ronnie Coleman. 2005. “Did Fertility Go up After the Oklahoma City Bombing? An Analysis of Births in Metropolitan Counties in Oklahoma, 1990–1999.” Demography 42: 675–92.