Regression discontinuity
An opinionated RD workflow grounded in a read canon (references/canon.md, current as of
2026-07-28): the Cattaneo-Titiunik Annual Review of Economics survey and its applied companion,
the Cattaneo-Keele-Titiunik guide, which includes a real failed design this skill uses as its
refusal template. Deliverable: the recommendation with its citation, the R estimation and
diagnostics code, and a methods paragraph.
Refresh path: run litreview on the method since the canon date, then propose additions to
references/canon.md as flagged addenda.
Design shapes and the case that anchors each
Each canonical case is a precedent a methods section can cite; details.md says what each teaches.
| Design shape |
Canonical case |
Marketing analogue |
What kills it |
| Age or tenure eligibility rule |
Card, Dobkin, Maestas 2008 |
trial expiry, anniversary status rolloff |
something else switches at the same threshold |
| Agency-measured score, sharp |
Hansen 2015 |
churn-score retention offers |
reps or managers override the rule off-cutoff |
| Heaped or rounded score |
Almond et al. 2010; Barreca et al. 2011, 2016 |
spend thresholds recorded in whole dollars |
excess mass at round values that the density test misses |
| Share crossing a fixed bar |
Lee, Moretti, Butler 2004 |
seller badge above an on-time-delivery rate |
predetermined covariates already jump in the smallest window |
| Admission cutoff, fuzzy first stage |
Hoekstra 2009 |
lead-score outreach with rep discretion |
a first stage too weak to carry the ratio |
| Boundary or geographic RD |
Black 1999 |
DMA advertising borders |
the border sorts households, or ads spill across it |
The design gate: is this an RD at all?
An RD requires a score, a known cutoff, and a treatment rule that existed ex ante and is
verifiable. Before any estimation, write the qualitative account: who computes the score, was
the cutoff public, can agents precisely control their score near it. Precise manipulation is the
most important threat. Lab-measured or third-party-computed scores resist it; self-influenced
scores (customer spend near a tier threshold, follower counts near a monetization bar) invite
exactly the sorting the density test detects, so the falsification battery carries more weight
in marketing settings than in the medical originals.
One more gate question, and the one sharp designs skip: list every rule, benefit, message, and
flag that changes at this exact threshold, and say which of them is the treatment. Medicare
starts at 65 and so does retirement, so Card, Dobkin, and Maestas (2008) went to a third dataset
on the same running variable (the March CPS 1996-2004) and showed employment does not jump. When
the confounder is not in your data, find a dataset on the same score where it is.
Two red flags, the first disqualifying on its own (from the failed Oncotype-DX application in
Cattaneo-Keele-Titiunik 2023):
- Treatment take-up jumps at score values away from the official cutoff (the rule was soft:
reps contact leads below the threshold, managers grant status matches early). Plot take-up
against the score before anything else.
- Covariate imbalance already in the smallest window around the cutoff: disqualifying when
the imbalanced covariate plausibly drives the outcome (the balance battery's standard,
below), otherwise a serious flag that demands an explanation before proceeding.
When a design fails, say so and decline to report an effect; the guide's own verdict on its
failed application ("the evidence does not support an RD analysis") is the template. Route the
question back to causal-design for another identification strategy.
Triage: two frameworks, and which one leads
Sharp vs fuzzy is a fact of the institution, not a choice: sharp when the rule binds
mechanically (a trial expires, a discount ends at an anniversary), fuzzy whenever anyone can
cross their assignment (overrides, opt-ins). Under fuzziness always report both ITT effects (on
take-up and on the outcome) alongside the fuzzy ratio.
Continuity vs local randomization is decided by the score:
- Continuous score, many observations near the cutoff: continuity framework with local
polynomials leads; local randomization is the robustness complement.
- Discrete score (rule of thumb: roughly 30 or fewer distinct values) or very few observations
near the cutoff: local randomization leads. Continuity methods there extrapolate from the
nearest mass points and their effective sample size is the number of mass points, not the
number of observations. Discrete running variables (weeks of tenure, order counts, months
since signup) are the norm in marketing data, which makes this branch more common than the
econ literature suggests.
- Local randomization needs a strictly stronger assumption (potential outcomes unrelated to the
score inside the window), which must be argued, not assumed.
When both frameworks apply, run both; agreement is a robustness result, and the local
randomization CIs covering the continuity point estimate counts as consistency. Expect the
window to be far narrower than the bandwidth (in the guide's HIV application, 121 patients vs
2,593), so a local-randomization null alongside a significant continuity estimate can be a power
difference, not a contradiction.
The consensus recipe (continuity framework)
Local linear regression, triangular kernel, MSE-optimal bandwidth, robust bias-corrected
confidence intervals (Calonico-Cattaneo-Titiunik). Report both the conventional and the robust
interval. The one-line justification: conventional 95 percent intervals at the MSE-optimal
bandwidth cover only about 80 percent, and bias correction with the matching variance adjustment
restores coverage at the same bandwidth. Two things get called robust: the Mixtape (Cunningham,
Causal Inference: The Remix, ch. 6) moves between heteroskedasticity-robust OLS standard errors
and rdrobust's Robust row without flagging the difference, and this skill keeps them apart
because HC-robust errors leave the point estimate alone while rdrobust's Robust row recenters on
the bias-corrected estimate and widens the interval by the variance of the bias estimate.
Hard rules from the review, stated as prohibitions because that is how it states them:
- Bandwidths must be data-driven and criterion-optimal; choosing one by hand "is discouraged."
MSE-optimal for the point estimate, CE-optimal when the interval is the object. Distinct
left/right bandwidths are available when curvature differs by side. The Mixtape (ch. 6)
replicates Hansen 2015 with hand-picked bandwidths and a rectangular kernel, which is how RD
was done before 2014; this skill refuses that as a primary specification and keeps it only
for reproducing a paper that predates the criterion-optimal machinery.
- Never cluster standard errors on the running variable. The Mixtape (ch. 6) reports the practice
as history, recommended by Lee 2008 and Lee and Card 2008 and then discouraged; this skill
states it as a prohibition because Kolesar and Rothe 2018 show it inflates Type I error. Use
heteroskedasticity-robust variance, honest intervals for a discrete score, and cluster only on
a real assignment unit that is not the score. Replicating or refereeing an older RD, expect to
find this and fix it.
- Global polynomial fits are visualization only, never estimation (Gelman-Imbens): boundary
behavior, counterintuitive weighting, overfitting.
- Polynomial order: p = 1 default, p = 2 as the robustness check, never high order. Underfitting
biases in the other direction, and the Mixtape's cubic simulation with a true zero effect makes
it vivid: -176,368.30 from a linear fit and 61,866.33 from a quadratic against 1.14 from the
cubic. Curvature is handled by narrowing the window, since the MSE-optimal bandwidth shrinks as
curvature rises. h_MSE also grows with p, so the p = 2 check runs on a wider window and a
different effective sample. In the Mixtape's Table 6.8 the left bandwidth goes 0.020, 0.033,
0.038 and the effective N 13,794, 16,774, 17,545 as the fit goes from no polynomial term to BAC
to BAC and BAC-squared. When p = 2 moves the estimate, check the window.
- Covariates are for precision only; they cannot restore identification of the canonical RD
parameter, and adjusting an invalid design changes the parameter rather than rescuing it. The
point estimate should barely move when covariates enter; a large move signals imbalance.
The local-randomization recipe
Select the window by nested covariate-balance tests, then difference in means inside it, with
Fisherian randomization inference when the window holds few observations (exact under the sharp
null) and Neyman or super-population inference when it is well populated. Window-selection
mechanics, thresholds, and what a narrow window does to power: references/details.md.
Fuzzy designs: the IV discipline applies
The fuzzy estimand is a complier average effect at the cutoff under relevance, exclusion, and
monotonicity, so the iv skill's habits transfer:
- Test the first stage inside the bandwidth or window, never on the full sample; the full-sample
F overstates strength. The guide's contrast is the anchor: F around 698 in the valid design
against F = 1.51 in the failed one, where the first-stage effect is 0.15 with a Fisherian
p-value of 0.32. An in-bandwidth first-stage F that is neither the strong nor the hopeless
extreme goes to the iv skill's ladder: read it against the F targets there and report
Anderson-Rubin/CLR intervals rather than the 2SLS t.
- Argue exclusion qualitatively and concretely: it fails if crossing the cutoff changes behavior
through anything other than treatment (a low churn score triggering a retention call AND a
flag another team acts on).
- Monotonicity: safe when crossing the threshold moves treatment in one direction only; suspect
when overrides run in both directions (the failed-design pattern above, reps contacting
below-threshold leads while managers grant early crossings, is exactly the defiers case);
one-sided noncompliance buys it for free.
- Run fuzzy-ratio balance tests: instrument strength amplifies covariate bias, so imbalance
invisible to ITT balance can surface in the ratio.
- Use one MSE-optimal bandwidth for the ratio, not separate ones for numerator and denominator.
Falsification battery
Run them in this order. Each check's bandwidth convention and what its failure means are in
references/details.md.
- Qualitative manipulation account, written before estimation (who computes the score, who
knows the cutoff).
- Density continuity test (rddensity, robust bias-corrected) plus the exact binomial count test
in small windows. A discontinuous density demands an explanation, and the sorting behind it
can be administrative rather than strategic.
- Heaping: plot the raw histogram of the score at its finest granularity before any formal
test. The density test can pass while heaping biases the estimate, so run the donut whatever
the density test says (Almond et al. 2010; Barreca et al. 2011, 2016).
- Covariate and placebo-outcome balance: the full RD machinery with each predetermined
covariate as the outcome, a fresh MSE-optimal bandwidth per covariate, robust p-values. A
failure on a covariate that plausibly drives the outcome invalidates the design, and the
verdict is to walk away rather than to adjust.
- Placebo cutoffs, one side of the true cutoff at a time so treatment effects do not
contaminate the placebo.
- Donut hole: drop the observations at and immediately adjacent to the cutoff, keep the
original bandwidth, re-estimate. The donut estimate is a different parameter, local to a
wider neighborhood, and the write-up should describe it as one.
- Bandwidth and window sensitivity: instability at or below the chosen bandwidth is the warning
sign, failure far above it is expected by construction.
When a null matters, report minimum detectable effects (rdpower), never ex-post power from the
observed effect.
The live dispute, carried honestly
Robust bias correction (this canon's school) vs honest uniform-in-bias inference
(Armstrong-Kolesar, Imbens-Wager; R package RDHonest). The honest school bounds the second
derivative by a constant M and gets uniformly valid intervals; the canon's objection is that a
data-driven M destroys the uniformity that motivates the method, and a manual M is equivalent to
choosing the bandwidth by hand. Default here: RBC. When a referee or coauthor asks for honest
intervals, report RDHonest alongside with the M choice justified in text, and cite both sides.
Extensions, briefly
- Kink designs: same machinery on first derivatives; identification is more delicate.
- Multiple cutoffs or scores (tiered loyalty programs; geographic borders such as DMA
boundaries): cutoff-specific effects or normalize-and-pool (rdmulti), with the pooled
estimand's interpretation checked.
- RD in time: hard to justify as standard RD; the local-randomization framework is the
adaptation when it works at all. Prefer did or synthetic-control for policy-date designs.
- Extrapolation beyond the cutoff LATE needs added assumptions, and the menu is in
references/details.md. Say which one when claiming anything away from the cutoff. Absent one,
the methods paragraph says the estimate is local to the cutoff, full stop.
R implementation
The complete runnable pipeline is scripts/rdd_template.R (estimation in both frameworks, fuzzy
diagnostics, the full falsification battery, power/MDE), with every call verified against the
rdpackages suite. The core:
library(rdrobust); library(rddensity); library(rdlocrand)
rdplot(y, x, c = cutoff) # anatomy first
summary(rdrobust(y, x, c = cutoff)) # sharp: local linear, triangular, MSE-h, RBC
summary(rdrobust(d, x, c = cutoff)) # first stage / ITT on take-up
summary(rdrobust(y, x, c = cutoff, fuzzy = d))# fuzzy ratio
summary(rddensity(x, c = cutoff)) # manipulation
w <- rdwinselect(x, Z, c = cutoff) # local-randomization window
rdrandinf(y, x, cutoff = cutoff, wl = w$w_left, wr = w$w_right)
Four figures carry a credible RD: the density of the score, take-up against the score, covariate
balance, and the outcome in bin means. If you cannot see the effect in the bin means you are
underpowered or it is not there. Report the estimate against the mean of the dependent variable,
so a small coefficient on a large base reads as a precise null (0.6 points on an 84.6 percent
base, in the Mixtape's balance table).
Package index with versions and links in references/details.md. Stata and Python mirrors of the
whole suite live at rdpackages.github.io; the guide ships full replication code in all three.
Methods paragraph template
Treatment assignment changes discontinuously at [cutoff] in [score], a rule set by
[institution] before the outcomes we study, and units [cannot / can only imprecisely] control
their score near it. We estimate the RD effect with local linear regression, a triangular
kernel, and an MSE-optimal bandwidth, and report robust bias-corrected confidence intervals
(Calonico, Cattaneo, and Titiunik 2014; Cattaneo and Titiunik 2022). We validate the design
with the Cattaneo-Jansson-Ma density test and an exact binomial test, covariate balance at the
cutoff with per-covariate bandwidths, placebo cutoffs, donut-hole estimates, and bandwidth
sensitivity [and, for the fuzzy design, verify first-stage strength within the estimation
bandwidth and report intention-to-treat effects alongside the complier estimate]. The estimate
is local to the cutoff; a limitation of this design is that it does not identify effects for
[units far from the threshold], and I extrapolate only [not at all / under the stated
assumption], which costs [generalizability across the score distribution].
Every claim traces to references/canon.md; keys live in ../causal-design/references/causal.bib.
Handoffs
- causal-design: whether an RD exists at all; where to go when the design gate fails.
- iv: the fuzzy branch's in-bandwidth first stage and exclusion argument live here;
weak-instrument inference (the F ladder, AR/CLR intervals) lives in iv, along with
many-instrument and shift-share logic.
- did / synthetic-control: policy-date designs masquerading as RD in time.
- preregister: pre-specifying an RD on an upcoming threshold change.
1---2name: rdd3description: Design, estimate, validate, and write up a regression discontinuity analysis, in both the continuity and local-randomization frameworks, with the full falsification battery and a refusal rule for designs that fail validation. TRIGGER on "regression discontinuity", "RDD", "running variable", "cutoff", "rdrobust", "bandwidth", "McCrary test", "density test", "fuzzy RD", "regression kink", or any setting where treatment switches at a known score threshold (loyalty tiers, spend thresholds, ranking cutoffs, algorithmic triggers, eligibility scores, age or tenure rules).4---56# Regression discontinuity78An opinionated RD workflow grounded in a read canon (references/canon.md, current as of92026-07-28): the Cattaneo-Titiunik Annual Review of Economics survey and its applied companion,10the Cattaneo-Keele-Titiunik guide, which includes a real failed design this skill uses as its11refusal template. Deliverable: the recommendation with its citation, the R estimation and12diagnostics code, and a methods paragraph.1314Refresh path: run litreview on the method since the canon date, then propose additions to15references/canon.md as flagged addenda.1617## Design shapes and the case that anchors each1819Each canonical case is a precedent a methods section can cite; details.md says what each teaches.2021| Design shape | Canonical case | Marketing analogue | What kills it |22|---|---|---|---|23| Age or tenure eligibility rule | Card, Dobkin, Maestas 2008 | trial expiry, anniversary status rolloff | something else switches at the same threshold |24| Agency-measured score, sharp | Hansen 2015 | churn-score retention offers | reps or managers override the rule off-cutoff |25| Heaped or rounded score | Almond et al. 2010; Barreca et al. 2011, 2016 | spend thresholds recorded in whole dollars | excess mass at round values that the density test misses |26| Share crossing a fixed bar | Lee, Moretti, Butler 2004 | seller badge above an on-time-delivery rate | predetermined covariates already jump in the smallest window |27| Admission cutoff, fuzzy first stage | Hoekstra 2009 | lead-score outreach with rep discretion | a first stage too weak to carry the ratio |28| Boundary or geographic RD | Black 1999 | DMA advertising borders | the border sorts households, or ads spill across it |2930## The design gate: is this an RD at all?3132An RD requires a score, a known cutoff, and a treatment rule that existed ex ante and is33verifiable. Before any estimation, write the qualitative account: who computes the score, was34the cutoff public, can agents precisely control their score near it. Precise manipulation is the35most important threat. Lab-measured or third-party-computed scores resist it; self-influenced36scores (customer spend near a tier threshold, follower counts near a monetization bar) invite37exactly the sorting the density test detects, so the falsification battery carries more weight38in marketing settings than in the medical originals.3940One more gate question, and the one sharp designs skip: list every rule, benefit, message, and41flag that changes at this exact threshold, and say which of them is the treatment. Medicare42starts at 65 and so does retirement, so Card, Dobkin, and Maestas (2008) went to a third dataset43on the same running variable (the March CPS 1996-2004) and showed employment does not jump. When44the confounder is not in your data, find a dataset on the same score where it is.4546Two red flags, the first disqualifying on its own (from the failed Oncotype-DX application in47Cattaneo-Keele-Titiunik 2023):48491. Treatment take-up jumps at score values away from the official cutoff (the rule was soft:50 reps contact leads below the threshold, managers grant status matches early). Plot take-up51 against the score before anything else.522. Covariate imbalance already in the smallest window around the cutoff: disqualifying when53 the imbalanced covariate plausibly drives the outcome (the balance battery's standard,54 below), otherwise a serious flag that demands an explanation before proceeding.5556When a design fails, say so and decline to report an effect; the guide's own verdict on its57failed application ("the evidence does not support an RD analysis") is the template. Route the58question back to causal-design for another identification strategy.5960## Triage: two frameworks, and which one leads6162Sharp vs fuzzy is a fact of the institution, not a choice: sharp when the rule binds63mechanically (a trial expires, a discount ends at an anniversary), fuzzy whenever anyone can64cross their assignment (overrides, opt-ins). Under fuzziness always report both ITT effects (on65take-up and on the outcome) alongside the fuzzy ratio.6667Continuity vs local randomization is decided by the score:6869- Continuous score, many observations near the cutoff: continuity framework with local70 polynomials leads; local randomization is the robustness complement.71- Discrete score (rule of thumb: roughly 30 or fewer distinct values) or very few observations72 near the cutoff: local randomization leads. Continuity methods there extrapolate from the73 nearest mass points and their effective sample size is the number of mass points, not the74 number of observations. Discrete running variables (weeks of tenure, order counts, months75 since signup) are the norm in marketing data, which makes this branch more common than the76 econ literature suggests.77- Local randomization needs a strictly stronger assumption (potential outcomes unrelated to the78 score inside the window), which must be argued, not assumed.7980When both frameworks apply, run both; agreement is a robustness result, and the local81randomization CIs covering the continuity point estimate counts as consistency. Expect the82window to be far narrower than the bandwidth (in the guide's HIV application, 121 patients vs832,593), so a local-randomization null alongside a significant continuity estimate can be a power84difference, not a contradiction.8586## The consensus recipe (continuity framework)8788Local linear regression, triangular kernel, MSE-optimal bandwidth, robust bias-corrected89confidence intervals (Calonico-Cattaneo-Titiunik). Report both the conventional and the robust90interval. The one-line justification: conventional 95 percent intervals at the MSE-optimal91bandwidth cover only about 80 percent, and bias correction with the matching variance adjustment92restores coverage at the same bandwidth. Two things get called robust: the Mixtape (Cunningham,93Causal Inference: The Remix, ch. 6) moves between heteroskedasticity-robust OLS standard errors94and rdrobust's Robust row without flagging the difference, and this skill keeps them apart95because HC-robust errors leave the point estimate alone while rdrobust's Robust row recenters on96the bias-corrected estimate and widens the interval by the variance of the bias estimate.9798Hard rules from the review, stated as prohibitions because that is how it states them:99100- Bandwidths must be data-driven and criterion-optimal; choosing one by hand "is discouraged."101 MSE-optimal for the point estimate, CE-optimal when the interval is the object. Distinct102 left/right bandwidths are available when curvature differs by side. The Mixtape (ch. 6)103 replicates Hansen 2015 with hand-picked bandwidths and a rectangular kernel, which is how RD104 was done before 2014; this skill refuses that as a primary specification and keeps it only105 for reproducing a paper that predates the criterion-optimal machinery.106- Never cluster standard errors on the running variable. The Mixtape (ch. 6) reports the practice107 as history, recommended by Lee 2008 and Lee and Card 2008 and then discouraged; this skill108 states it as a prohibition because Kolesar and Rothe 2018 show it inflates Type I error. Use109 heteroskedasticity-robust variance, honest intervals for a discrete score, and cluster only on110 a real assignment unit that is not the score. Replicating or refereeing an older RD, expect to111 find this and fix it.112- Global polynomial fits are visualization only, never estimation (Gelman-Imbens): boundary113 behavior, counterintuitive weighting, overfitting.114- Polynomial order: p = 1 default, p = 2 as the robustness check, never high order. Underfitting115 biases in the other direction, and the Mixtape's cubic simulation with a true zero effect makes116 it vivid: -176,368.30 from a linear fit and 61,866.33 from a quadratic against 1.14 from the117 cubic. Curvature is handled by narrowing the window, since the MSE-optimal bandwidth shrinks as118 curvature rises. h_MSE also grows with p, so the p = 2 check runs on a wider window and a119 different effective sample. In the Mixtape's Table 6.8 the left bandwidth goes 0.020, 0.033,120 0.038 and the effective N 13,794, 16,774, 17,545 as the fit goes from no polynomial term to BAC121 to BAC and BAC-squared. When p = 2 moves the estimate, check the window.122- Covariates are for precision only; they cannot restore identification of the canonical RD123 parameter, and adjusting an invalid design changes the parameter rather than rescuing it. The124 point estimate should barely move when covariates enter; a large move signals imbalance.125126## The local-randomization recipe127128Select the window by nested covariate-balance tests, then difference in means inside it, with129Fisherian randomization inference when the window holds few observations (exact under the sharp130null) and Neyman or super-population inference when it is well populated. Window-selection131mechanics, thresholds, and what a narrow window does to power: references/details.md.132133## Fuzzy designs: the IV discipline applies134135The fuzzy estimand is a complier average effect at the cutoff under relevance, exclusion, and136monotonicity, so the iv skill's habits transfer:137138- Test the first stage inside the bandwidth or window, never on the full sample; the full-sample139 F overstates strength. The guide's contrast is the anchor: F around 698 in the valid design140 against F = 1.51 in the failed one, where the first-stage effect is 0.15 with a Fisherian141 p-value of 0.32. An in-bandwidth first-stage F that is neither the strong nor the hopeless142 extreme goes to the iv skill's ladder: read it against the F targets there and report143 Anderson-Rubin/CLR intervals rather than the 2SLS t.144- Argue exclusion qualitatively and concretely: it fails if crossing the cutoff changes behavior145 through anything other than treatment (a low churn score triggering a retention call AND a146 flag another team acts on).147- Monotonicity: safe when crossing the threshold moves treatment in one direction only; suspect148 when overrides run in both directions (the failed-design pattern above, reps contacting149 below-threshold leads while managers grant early crossings, is exactly the defiers case);150 one-sided noncompliance buys it for free.151- Run fuzzy-ratio balance tests: instrument strength amplifies covariate bias, so imbalance152 invisible to ITT balance can surface in the ratio.153- Use one MSE-optimal bandwidth for the ratio, not separate ones for numerator and denominator.154155## Falsification battery156157Run them in this order. Each check's bandwidth convention and what its failure means are in158references/details.md.1591601. Qualitative manipulation account, written before estimation (who computes the score, who161 knows the cutoff).1622. Density continuity test (rddensity, robust bias-corrected) plus the exact binomial count test163 in small windows. A discontinuous density demands an explanation, and the sorting behind it164 can be administrative rather than strategic.1653. Heaping: plot the raw histogram of the score at its finest granularity before any formal166 test. The density test can pass while heaping biases the estimate, so run the donut whatever167 the density test says (Almond et al. 2010; Barreca et al. 2011, 2016).1684. Covariate and placebo-outcome balance: the full RD machinery with each predetermined169 covariate as the outcome, a fresh MSE-optimal bandwidth per covariate, robust p-values. A170 failure on a covariate that plausibly drives the outcome invalidates the design, and the171 verdict is to walk away rather than to adjust.1725. Placebo cutoffs, one side of the true cutoff at a time so treatment effects do not173 contaminate the placebo.1746. Donut hole: drop the observations at and immediately adjacent to the cutoff, keep the175 original bandwidth, re-estimate. The donut estimate is a different parameter, local to a176 wider neighborhood, and the write-up should describe it as one.1777. Bandwidth and window sensitivity: instability at or below the chosen bandwidth is the warning178 sign, failure far above it is expected by construction.179180When a null matters, report minimum detectable effects (rdpower), never ex-post power from the181observed effect.182183## The live dispute, carried honestly184185Robust bias correction (this canon's school) vs honest uniform-in-bias inference186(Armstrong-Kolesar, Imbens-Wager; R package RDHonest). The honest school bounds the second187derivative by a constant M and gets uniformly valid intervals; the canon's objection is that a188data-driven M destroys the uniformity that motivates the method, and a manual M is equivalent to189choosing the bandwidth by hand. Default here: RBC. When a referee or coauthor asks for honest190intervals, report RDHonest alongside with the M choice justified in text, and cite both sides.191192## Extensions, briefly193194- Kink designs: same machinery on first derivatives; identification is more delicate.195- Multiple cutoffs or scores (tiered loyalty programs; geographic borders such as DMA196 boundaries): cutoff-specific effects or normalize-and-pool (rdmulti), with the pooled197 estimand's interpretation checked.198- RD in time: hard to justify as standard RD; the local-randomization framework is the199 adaptation when it works at all. Prefer did or synthetic-control for policy-date designs.200- Extrapolation beyond the cutoff LATE needs added assumptions, and the menu is in201 references/details.md. Say which one when claiming anything away from the cutoff. Absent one,202 the methods paragraph says the estimate is local to the cutoff, full stop.203204## R implementation205206The complete runnable pipeline is scripts/rdd_template.R (estimation in both frameworks, fuzzy207diagnostics, the full falsification battery, power/MDE), with every call verified against the208rdpackages suite. The core:209210```r211library(rdrobust); library(rddensity); library(rdlocrand)212rdplot(y, x, c = cutoff) # anatomy first213summary(rdrobust(y, x, c = cutoff)) # sharp: local linear, triangular, MSE-h, RBC214summary(rdrobust(d, x, c = cutoff)) # first stage / ITT on take-up215summary(rdrobust(y, x, c = cutoff, fuzzy = d))# fuzzy ratio216summary(rddensity(x, c = cutoff)) # manipulation217w <- rdwinselect(x, Z, c = cutoff) # local-randomization window218rdrandinf(y, x, cutoff = cutoff, wl = w$w_left, wr = w$w_right)219```220221Four figures carry a credible RD: the density of the score, take-up against the score, covariate222balance, and the outcome in bin means. If you cannot see the effect in the bin means you are223underpowered or it is not there. Report the estimate against the mean of the dependent variable,224so a small coefficient on a large base reads as a precise null (0.6 points on an 84.6 percent225base, in the Mixtape's balance table).226227Package index with versions and links in references/details.md. Stata and Python mirrors of the228whole suite live at rdpackages.github.io; the guide ships full replication code in all three.229230## Methods paragraph template231232> Treatment assignment changes discontinuously at [cutoff] in [score], a rule set by233> [institution] before the outcomes we study, and units [cannot / can only imprecisely] control234> their score near it. We estimate the RD effect with local linear regression, a triangular235> kernel, and an MSE-optimal bandwidth, and report robust bias-corrected confidence intervals236> (Calonico, Cattaneo, and Titiunik 2014; Cattaneo and Titiunik 2022). We validate the design237> with the Cattaneo-Jansson-Ma density test and an exact binomial test, covariate balance at the238> cutoff with per-covariate bandwidths, placebo cutoffs, donut-hole estimates, and bandwidth239> sensitivity [and, for the fuzzy design, verify first-stage strength within the estimation240> bandwidth and report intention-to-treat effects alongside the complier estimate]. The estimate241> is local to the cutoff; a limitation of this design is that it does not identify effects for242> [units far from the threshold], and I extrapolate only [not at all / under the stated243> assumption], which costs [generalizability across the score distribution].244245Every claim traces to references/canon.md; keys live in ../causal-design/references/causal.bib.246247## Handoffs248249- causal-design: whether an RD exists at all; where to go when the design gate fails.250- iv: the fuzzy branch's in-bandwidth first stage and exclusion argument live here;251 weak-instrument inference (the F ladder, AR/CLR intervals) lives in iv, along with252 many-instrument and shift-share logic.253- did / synthetic-control: policy-date designs masquerading as RD in time.254- preregister: pre-specifying an RD on an upcoming threshold change.