lenatriestounderstand

Chapter 36 of 57

Regression Discontinuity: A Causal Effect at a Threshold

Created Jul 5, 2026 Updated Oct 25, 2026

Bureaucracies love thresholds. Score 60 and you pass; 59 and you don't. Earn a dollar under the line and the subsidy kicks in. Turn 18 and the rule changes. Regression discontinuity (RD) turns those arbitrary cutoffs into causal estimates.

The logic is disarmingly simple. A student who scored just under 60 and one who scored just over it are likely to be alike in everything that drives the outcome — ability, effort, circumstances — but only one of them got treated. If those other factors vary smoothly across the threshold while treatment jumps at it, then a jump in outcomes at the same place is the treatment's doing, not the running variable's. (A test score is discrete, which is a complication of its own; the clean statement is about a running variable that varies continuously.)

Formally: y depends smoothly on the running variable X, plus a jump β for being over the cutoff c:

y=f(X)+β⋅1[X≥c]+εy = f(X) + \beta \cdot \mathbf{1}[X \geq c] + \varepsilon

Fit the trend f(X) separately on each side — locally, using the observations near the cutoff — extend both to the threshold, and the vertical gap between them is β̂. Everything smooth is subtracted away; only the discontinuity survives.

The whole method lives in one picture. Fit a line to the points just below the cutoff and another to the points just above, extend both to the threshold, and the vertical gap where they meet is the RD estimate β̂ — the part of the discontinuity that the smooth trend f(X) can't explain. Push the trend slope hard in either direction: a steeply sloped f(X) doesn't fool the estimate, because RD only ever compares the two sides at the cutoff. Curvature is a different story, and that is what the bandwidth slider is for: the true trend bends, so a wide window makes the straight fits chase the curve and drags β̂ off (about −3.5 at the widest setting, averaged over resamples), while a narrow one is unbiased and jumpy. The bold dots are binned means, the standard rdplot visual.

The assumption everything rests on is continuity: without the treatment switching on, expected outcomes — both what the treated would have had and what the untreated would have had — vary smoothly through the cutoff. If some other programme also changes at exactly that threshold, the jump cannot be credited to this treatment alone.

A few essentials:

  • Sharp vs fuzzy. Sharp RD: crossing the cutoff flips treatment on with certainty. Fuzzy RD: crossing only changes the probability of treatment (many people ignore the nudge), so you rescale the jump by the jump in take-up — RD-flavoured instrumental variables.
  • The manipulation check. If units can precisely sort themselves across the line — nudging a 59 up to a 60 — the comparison can stop being credible, because who ends up on which side is no longer incidental. A density (McCrary) test looks for a suspicious pile-up on the lucky side: it can flag sorting, not certify its absence.
  • Bandwidth is the real knob. How far from the cutoff the fits are allowed to look decides the answer: a wide window buys points and borrows bias from the curve of f(X), a narrow one is honest and noisy. The widget's slider walks that trade.
  • It's local. RD identifies the effect at the cutoff, for units near it. It says nothing about what the treatment would do to someone far from the threshold.

RD is one of the most credible quasi-experimental designs, and not because of who set the threshold: it is credible because, under continuity, the units immediately on either side of it make a compelling local comparison without anyone having randomised anything. The full version — bandwidth choice, polynomial order, sharp vs fuzzy, the diagnostics that defend a design — is in the Regression Discontinuity note.