*! rdstagger_spillover v1.0.0 Subir Hait 2026

Title

rdstagger_spillover -- Decompose staggered RD ATT(g,t) into direct and spillover effects

Syntax

rdstagger_spillover [,
alpha(#)
verbose]

Description

rdstagger_spillover decomposes each ATT(g,t) cell estimated by rdstagger
into a spillover component and a direct component.

Identification strategy.
Under network interference, control units close to the cutoff (x near 0) may have
elevated outcomes due to spillovers from treated units. This contaminates the
control group and causes rdstagger to underestimate the direct treatment effect.

Spillover ATT(g,t) is identified by a DiD between two groups of never-treated units:

o Near controls: x in [-bw, 0) — exposed to spillovers

o Far controls: x in [-2*bw, -bw) — clean comparison group

The bias-corrected direct ATT(g,t) = Total ATT(g,t) + Spillover ATT(g,t).

Options

alpha(#) sets the significance level. Default: 0.05.

verbose displays additional diagnostic output.

Stored results

e(spillover) matrix with columns: cohort, period, total_att,
spill_att, direct_att, spill_se, spill_pval, direct_se, direct_pval

e(bandwidth) bandwidth used

Remarks

Must be run immediately after rdstagger. Requires at least 5 observations
in each control zone per cohort-period cell.

Example

rdstagger_sim, n(400) periods(8) cohorts(3) spill(0.1) seed(42)

rdstagger y x, cutoff(0) gvar(g) tvar(period) idvar(id) bw(1.5)

rdstagger_spillover

Author

Subir Hait, Michigan State University

Also see

rdstagger, rdstagger_agg, rdstagger_pretest