Written and maintained by CASRAI Editorial Board
Last updated
In sharp regression discontinuity design, crossing the cutoff moves treatment status from 0 to 1 with certainty. In fuzzy regression discontinuity (fuzzy RDD), crossing the cutoff only changes the probability of treatment — some units above the cutoff never actually take up the treatment, some units below it get it anyway. That single difference changes the whole analysis: fuzzy RD can no longer be estimated as a simple jump in the outcome at the cutoff, because part of that jump is really a jump in who gets treated, not in the treatment’s effect. It has to be estimated as an instrumental-variables (IV) problem instead.
This guide assumes you already understand the shared mechanics of RDD — running-variable validity, bandwidth choice, the McCrary manipulation test — covered in depth in Regression Discontinuity Design: Bandwidth, Running Variable, and the McCrary Test. Everything below is specific to what changes when compliance with the cutoff is imperfect: the IV interpretation, what parameter the estimate actually identifies, how to check whether the first stage is strong enough to trust, and a fully worked example.
Why the cutoff doesn’t sort treatment perfectly
Fuzziness at the cutoff is the normal case in most real administrative settings, not an edge case. It shows up in a few recurring patterns:
- Eligibility isn’t enrollment. Crossing an income or score threshold makes a unit eligible for a program, but eligible people don’t all enroll — they miss the application window, don’t know the program exists, or decide the benefit isn’t worth the paperwork.
- Exceptions and appeals. A discretionary override lets some units just below the cutoff receive treatment anyway — a reviewer grants an appeal, a program has a small reserved allocation for near-miss cases.
- Imperfect enforcement or targeting. The rule that is supposed to assign treatment at the cutoff is administered with some slippage — a screening threshold that frontline staff don’t apply with perfect consistency.
In every case, treatment probability still jumps at the cutoff — that jump is what makes the design usable at all — it just doesn’t jump all the way from 0 to 1.
The instrumental-variables interpretation
Let Z be the eligibility indicator: Z = 1 if the running variable is at or above the cutoff, 0 otherwise. Let D be actual treatment receipt, which can differ from Z. Fuzzy RD treats Z as an instrument for D, in exactly the structure covered in Instrumental Variables: The Three Assumptions and the Weak-Instrument F-Test — with the specific advantage that, near the cutoff, Z is plausibly as good as randomly assigned, which is the hard part of finding a valid instrument in most other settings.
Two regressions of the running variable X around the cutoff do the work:
- First stage — the jump in
D(actual treatment) at the cutoff: how much does crossing the threshold raise the probability of being treated? - Reduced form — the jump in the outcome
Yat the cutoff: how much does crossing the threshold change the outcome, treatment status aside?
Both jumps are estimated the same way a sharp RD jump is — local-linear regression within a bandwidth on each side of the cutoff, exactly as described in the bandwidth section of the sharp RDD guide — just run twice, once with D as the dependent variable and once with Y.
The standard reference for this identification result is Hahn, Todd, and van der Klaauw (2001, Econometrica 69(1), 201–209), which formalized fuzzy RD as a local Wald/IV estimator and established the conditions under which it recovers a well-defined causal parameter.
The fuzzy RD estimator: a local Wald ratio
The fuzzy RD estimate is the reduced-form jump divided by the first-stage jump:
τfuzzy = (jump in Y at the cutoff) ÷ (jump in D at the cutoff)
This is a local Wald estimator — the same ratio that identifies a treatment effect in any just-identified IV setup, applied locally at the cutoff instead of across the whole sample. In practice it’s computed either directly as that ratio, or equivalently via local two-stage least squares (2SLS) using observations within the bandwidth, with Z instrumenting for D and the running variable entered linearly (or with its interaction with Z) as a control. The rdrobust family (R, Stata, Python) implements the fuzzy case directly — it is the same software already standard for sharp RD bandwidth selection and bias-corrected inference, with a fuzzy argument that switches on the IV version of the estimator.
Reporting the first-stage and reduced-form jumps separately, not just the final ratio, is what lets a reader judge whether the division is dividing by something meaningfully different from zero — see the weak-instrument section below.
What the fuzzy RD estimate actually identifies
The fuzzy RD estimator identifies a local average treatment effect (LATE) — and it is local in two separate senses at once, which is the single most common misinterpretation to guard against:
- Local to the cutoff. Like any RD estimate, it applies to units near the threshold, not the full running-variable range — the same caveat that applies to sharp RD.
- Local to compliers. Under the fuzzy design, the estimate is only informative about compliers — units whose treatment status is actually determined by which side of the cutoff they fall on. It says nothing directly about always-takers (treated regardless of eligibility) or never-takers (untreated regardless of eligibility), because their treatment status doesn’t respond to the instrument at all.
This “complier” language comes from the same local-average-treatment-effect framework used for standard IV (Imbens and Angrist, 1994) and depends on a monotonicity assumption: no defiers — no unit that would be treated if ineligible but untreated if eligible. Monotonicity is usually plausible by construction in an RD setting (crossing the cutoff can only make treatment more likely, not less, for any given unit) but it is an assumption, not something the data can directly rule out, and it’s worth stating explicitly when reporting results.
Because the identified parameter is a LATE for cutoff-compliers specifically, a fuzzy RD result is a weaker basis for claims about the full eligible population than a sharp RD result is — a caveat referees increasingly expect to see stated plainly rather than glossed over. See Imbens and Lemieux (2008, Journal of Econometrics 142(2), 615–635) and Lee and Lemieux (2010, Journal of Economic Literature 48(2), 281–355) for the fuller treatment of this identification result and its practical implications.
Checking the first stage: fuzzy RD has its own weak-instrument problem
Everything the weak-instrument diagnostics guide says about a weak first stage applies here, in a specifically local form. If the jump in treatment probability at the cutoff is small or estimated imprecisely, the fuzzy RD ratio — dividing the reduced-form jump by a first-stage jump close to zero — becomes unstable and the resulting LATE estimate can be badly biased even in large samples, exactly as with any weak instrument.
Practical checks that matter specifically for fuzzy RD:
- Report the first-stage jump itself, with its own confidence interval, before reporting the ratio — not just the final fuzzy RD estimate. A first-stage jump indistinguishable from zero means the design isn’t usable at that cutoff, regardless of what the ratio happens to compute to.
- Report an F-statistic (or equivalent) for the first-stage discontinuity at the cutoff, the same threshold logic (conventionally an F around 10, treated as a rule of thumb rather than a hard cutoff) used for standard weak-instrument screening.
- Check take-up visually. A binned-scatter plot of treatment probability against the running variable, exactly like the RD plot recommended for the outcome variable in sharp RD, makes a weak or noisy first stage visible before it shows up as an unstable ratio.
Worked example: a research-supplement program with imperfect take-up
Illustrative simulated data, not a real study. Applicants are scored 0–100 on proposal quality; a score of 70 is the threshold for eligibility for a supplemental research grant. Eligibility isn’t automatic enrollment — roughly 18% of eligible applicants never complete the required supplemental paperwork and so never actually receive the funds, while a small number of near-miss applicants below 70 get a discretionary exception. Treatment probability therefore jumps at the cutoff but doesn’t go from 0 to 1: about 28% of applicants just below the cutoff are treated (exceptions), rising to about 80% just above it.
The numbers below come from a seeded simulation (6,000 simulated applicants, fixed random seed, local-linear regression with a uniform-kernel bandwidth of 15 points on each side of the cutoff) built specifically for this page and independently reproducible — not a real dataset and not a claim about any actual program:
- First-stage jump (probability of treatment at the cutoff): from 0.300 just below to 0.799 just above — a jump of 0.499.
- Reduced-form jump (publications over the following two years, at the cutoff): from 3.445 just below to 4.094 just above — a jump of 0.649.
- Fuzzy RD estimate = 0.649 ÷ 0.499 = 1.30 publications for compliers at the cutoff.
The naive alternative — treating mere eligibility as if it were treatment, and just reporting the 0.649 reduced-form jump as “the effect” — understates the effect by about half here, because it’s diluted by the roughly 20% of eligible applicants who were never actually treated and the roughly 28% of ineligible applicants who were. Dividing by the first-stage jump corrects for that dilution. (The simulation’s underlying true per-complier effect was set to 1.4; the 1.30 estimate is close, with the remaining gap attributable to finite-sample noise at this bandwidth and sample size — exactly the kind of check a simulation, and only a simulation, lets you make, because the true effect is otherwise unknowable.)
Sharp vs. fuzzy RDD at a glance
| Sharp RDD | Fuzzy RDD | |
|---|---|---|
| Treatment at the cutoff | Jumps from 0 to 1 exactly | Jumps, but not to 0/1 — imperfect compliance |
| Estimator | Direct jump in the outcome (local-linear regression) | Ratio of reduced-form jump to first-stage jump (local Wald / local 2SLS) |
| Parameter identified | Average treatment effect for units at the cutoff | Local average treatment effect (LATE) for compliers at the cutoff |
| Extra assumption needed | None beyond standard RD continuity | Monotonicity (no defiers) |
| Extra diagnostic to run | — | First-stage strength / weak-instrument check |
| Shared diagnostics | McCrary density test, bandwidth sensitivity, covariate balance, placebo cutoffs, donut-hole check — see the sharp RDD guide | |
Reporting a fuzzy RDD analysis
Beyond everything the sharp RDD guide’s reporting checklist covers (bandwidth procedure, McCrary test, covariate balance, placebo cutoffs), a fuzzy RD write-up should state, explicitly:
- That the design is fuzzy, and why — the specific source of imperfect compliance (non-take-up, exceptions, enforcement slippage).
- The first-stage jump itself, with its confidence interval and F-statistic, not just the final ratio.
- The fuzzy RD estimate, computed as the local Wald ratio or via local 2SLS, with bias-corrected confidence intervals (the same
rdrobust-family correction used for sharp RD, applied to the IV version). - The LATE interpretation explicitly — that the estimate applies to compliers at the cutoff, not the full eligible population — and the monotonicity assumption it rests on.
Frequently asked questions
What is fuzzy regression discontinuity?
Fuzzy regression discontinuity is a version of RDD where crossing the cutoff changes the probability of treatment rather than assigning it with certainty. Because treatment isn’t perfectly determined by the cutoff, the design is estimated as an instrumental-variables problem: the cutoff instruments for actual treatment receipt, and the resulting estimate is a local average treatment effect (LATE) rather than a direct jump in the outcome.
How is fuzzy RDD different from sharp RDD?
In sharp RDD, every unit above the cutoff is treated and every unit below it isn’t, so the treatment effect is just the jump in the outcome at the cutoff. In fuzzy RDD, treatment probability jumps but not all the way to 0/1, so the estimate has to be scaled by how much the jump in treatment status itself is — the reduced-form outcome jump divided by the first-stage treatment jump.
What does the fuzzy RD estimate actually identify?
A local average treatment effect (LATE) for compliers at the cutoff — units whose treatment status is actually determined by which side of the threshold they land on. It does not identify an effect for always-takers or never-takers, whose treatment status doesn’t respond to the cutoff at all, and it relies on a monotonicity assumption (no defiers).
Can a fuzzy RD analysis have a weak-instrument problem?
Yes. If the jump in treatment probability at the cutoff (the first stage) is small or imprecisely estimated, dividing by it produces an unstable, potentially badly biased estimate — the same weak-instrument problem that affects standard IV, applied locally at the cutoff. Reporting the first-stage jump and its F-statistic separately from the final ratio is the standard way to check for this before trusting the result.
What software estimates fuzzy RDD?
The rdrobust family (available in R, Stata, and Python) is the standard tool, with an option that switches the estimator from sharp to fuzzy — it handles bandwidth selection, the local Wald/2SLS calculation, and bias-corrected confidence intervals for both cases within the same framework.








