Regression Discontinuity Design in Stata

Did a rule-based tutoring program raise exit exam scores?

+10.80parametric OLS · full sample
−8.58rdrobust LATE at the cutoff
0.58density-test p · no manipulation

Carlos Mendez

Nagoya University (GSID)

June 11, 2026

The Tension

Act I

You can’t randomize tutoring — so how do you prove it works?

A school enrolled every student scoring 70 or below on an entrance exam into free tutoring. Above 70, nothing.

The students who got help also started behind. Compare raw outcomes and you measure the program plus the gap.

A sharp rule turns a threshold into a natural experiment

A deterministic assignment rule, drawn as a flow:

The dial

  • Running variable: entrance exam score
  • Cutoff: \(c = 70\)
  • Score \(\le 70\) \(\rightarrow\) tutoring
  • Score \(> 70\) \(\rightarrow\) no tutoring

Why it identifies

  • A student at 69 vs one at 71 is nearly identical
  • They differ only by which side of the line they landed
  • The jump in exit scores at the cutoff is the causal effect

Students just below and just above 70 are comparable by construction — only treatment differs.

The spoiler: a clean downward jump in exit scores at 70

Binned averages with local-linear fits each side of the cutoff. Moving left to right (tutored → not), exit scores drop ~8–10 points at 70.

Where we’re going

  • The lab: 1,000 students, a single 70-point cutoff
  • Verify the design is sharp before estimating anything
  • Estimate the LATE two ways — parametric OLS and nonparametric rdrobust
  • Stress-test it: bandwidth, kernel, density, placebo cutoffs

The Investigation

Act II

The lab: 1,000 students, one threshold, 24% treated

  • Running variable — entrance exam score (range 28.8–99.8, mean 78.1)
  • Outcome — exit exam score (range 42.8–84.5, mean 66.2)
  • Treatment — 241 students (24.1%) scoring \(\le 70\) were tutored

The entrance distribution is right-skewed — most students cleared 70, so only about a quarter received tutoring.

The estimand is the LATE — the jump in the CEF at the cutoff

\[\tau_{RD}=\lim_{x\downarrow c}E[Y\mid X=x]-\lim_{x\uparrow c}E[Y\mid X=x]\]

The difference between the expected exit score just above the cutoff and just below it.

Identification rests on continuity: absent tutoring, outcomes pass smoothly through 70.

Before estimating, prove the gate has no leaks: 100% compliance

Position Not tutored Tutored Total
Above cutoff (\(>70\)) 759 0 759
At or below (\(\le 70\)) 0 241 241

Zero crossovers in either direction — treatment is a deterministic function of the score. This is a sharp RDD, the strongest form.

See it before you estimate it: tutored students sit above the trend

Exit vs entrance scores. Blue = tutored (≤70), orange = not tutored. Dashed line marks the cutoff at 70.

Parametric OLS: regress exit on the score plus a treatment dummy

\[\text{exit}_i = \beta_0 + \beta_1\,\text{entrance}_i + \tau\,\text{treat}_i + \varepsilon_i\]

The coefficient \(\tau\) is the jump at the cutoff — the treatment effect under a common linear trend.

gen centered = entrance_exam - 70
reg exit_exam entrance_exam treat, robust

Parametric OLS says tutoring adds 10.80 points

+10.80

\(\hat\tau\) on treatment, full-sample OLS (SE 0.81, 95% CI 9.22–12.38, \(p<0.001\))

More flexible specifications barely move the estimate: 9.2–10.8

Model Specification \(\hat\tau\) SE \(R^2\)
1 Linear, same slope 10.800 0.806 0.268
2 Linear, different slopes 10.797 0.816 0.268
3 Quadratic 9.223 1.198 0.271

The interaction term is essentially zero (−0.001), and R² is flat across all three — added flexibility buys nothing.

Nonparametric rdrobust: drop the functional form, keep only the locals

\[\hat\tau_{RD} = \lim_{x\downarrow c} E[Y_i\mid X_i=x] - \lim_{x\uparrow c} E[Y_i\mid X_i=x]\]

Instead of one regression through 1,000 points, fit local polynomials inside a data-driven bandwidth around the cutoff.

ssc install rdrobust, replace
rdrobust exit_exam entrance_exam, c(70)

Smaller bandwidth → less bias (more comparable units) but more variance (fewer observations). rdrobust picks the MSE-optimal \(h\) automatically.

With an MSE-optimal bandwidth of 9.98, the LATE is −8.58

−8.58

rdrobust RD effect (robust 95% CI −12.14 to −4.54, \(p<0.001\)); only the 400 students within ±10 of the cutoff are used

Same finding, two conventions — both say tutoring helps by ~9–11

Parametric OLS

  • Sign: \(+10.80\)
  • Sample: all 1,000 students
  • Imposes a global linear trend
  • “Effect of being tutored”

Nonparametric rdrobust

  • Sign: \(-8.58\)
  • Sample: ~400 near the cutoff
  • No functional-form assumption
  • “Jump left→right across 70”

Opposite signs, identical message: tutoring raises exit scores by roughly 9–11 points at the cutoff.

The Resolution

Act III

The estimate barely moves from BW 5 to 20: −8.20 to −9.16

Bandwidth \(\hat\tau\) SE \(p\)
5 −8.202 2.337 <0.001
10 −8.581 1.615 <0.001
15 −8.842 1.312 <0.001
20 −9.157 1.131 <0.001

Less than one point across a 4× change in window — not a bandwidth artifact.

The McCrary test finds no manipulation: density p = 0.58

Kernel densities of the running variable, each side of the cutoff. Similar heights at 70 → no bunching.

The histogram confirms it: no spike or heaping at the cutoff

Distribution of entrance exam scores; vertical line at 70. The mass transitions smoothly through the threshold.

The discontinuity is unique to 70 — every placebo cutoff is null

rdrobust at 9 cutoffs with 95% CIs. Only the true cutoff at 70 (orange) excludes zero; placebos straddle zero.

Does machine-picking the bandwidth make this causal? No.

Objection. A data-driven bandwidth and a clever package can’t manufacture identification.

Response. Correct — and we never claim they do. Identification rests on continuity at 70; rdrobust just estimates the jump. The density and placebo tests defend that assumption — they don’t replace it.

Both methods agree: rule-based tutoring lifts exit scores 9–11 points

Approach Estimate 95% CI \(p\)
Parametric OLS (linear) +10.80 9.22 – 12.38 <0.001
Parametric OLS (quadratic) +9.22 6.87 – 11.57 <0.001
Nonparametric rdrobust 8.58 4.54 – 12.14 <0.001

9–11 points is ~13–16% of the mean exit score (66.2) — passing vs failing for a borderline student.

Let the cutoff, not your model, do the identifying.