RD Lecture Slides
RD Lecture Slides
Trinh Pham
KDI School of Public Policy and Management
September 2025
Roadmap
Introductions and expectations
2 / 101
About me
Name: Trinh Pham
3 / 101
Quick review: What do we mean by a causal effect?
4 / 101
Correlation vs. Causality
In the summer, we see increases in both ice cream sales and sunburn rates.
Does it mean ice cream sales cause sunburn? Why or why not?
The underlying omitted factor is the hot weather, leading to increased ice cream consumption and more people going to the
beach, thus increasing the risk of sunburn.
Our challenge is to find methodologies that could help us establish true causality.
5 / 101
Let us consider another example.
6 / 101
Working example: loan and business profit
The following figure shows how the outcome evolves over time, before the program starts
7 / 101
Working example: loan and business profit
The following figure shows how the outcome evolves over time, after the program starts
Based on this figure, does the program have: positive impact? negative impact? zero impact?
8 / 101
Working example: loan and business profit
The following figure shows how the outcome evolves over time, after the program starts
We do not have enough information to make any statement about the program impact!
9 / 101
What would have happened had the program not started?
10 / 101
Working example: loan and business profit
What would have happened had the program not started? Would it be like this?
11 / 101
Working example: loan and business profit
What would have happened had the program not started? Would it be like this? or this?
12 / 101
Working example: loan and business profit
Impact = Factual − Counterfactual
the outcome some time after the program has started (factual)
the outcome at the same time point had the program not started (counterfactual)
13 / 101
Counterfactual
Getting the factual is easy.
Typically by selecting a group of individuals who did not participate in the program.
How to select/construct the comparison group is the key decision in impact evaluation design.
14 / 101
Throughout this program, you have encountered different econometric approaches to measure causal effects.
Randomized Controlled Trials (RCT): gold standard, but not always feasible or ethical.
Difference-in-Differences: comparing the change in before vs. after outcomes for treated units with the change in before vs.
after outcomes for non-treated units.
Key identification assumption: the two groups in parallel trends (even absent treatment).
when participation is endogenous, instrument it with an exogenous factor that influences that program take-up (but
otherwise not correlated with the outcome).
15 / 101
Regression Discontinuity (RD): Introduction
16 / 101
Regression discontinuity (RD)
Regression discontinuity (RD) works in very specific circumstances.
When RD works, it is one of the most credible non-experimental methods for causal inference and program evaluation.
Suppose we are interested in studying the effect of selective college enrollment on labor market outcomes.
Can we just compare people who are enrolled in selective colleges with people who are not? Why?
If there is a cutoff in college entrance exam score (e.g., 80) that determines admission:
then people who fall just on either side of the cutoff should not be so different,
17 / 101
RD components
RD requires three components: a score, a cutoff, and a discontinuous treatment assignment rule.
all the units in the study are assigned a value of the score (a.k.a a running or forcing variable),
and the treatment is assigned only to units whose score value exceeds a known cutoff (also called threshold).
There are two types of RD: sharp (treatment jumps from 0 to 1) vs. fuzzy (probability of treatment jumps).
18 / 101
Example: Exam ranking - college admission/enrollment
19 / 101
Example: distance to border and irrigation (spatial RD)
20 / 101
Example: distance to border and deforestation (spatial
RD)
21 / 101
Regression Discontinuity (RD): Formal Framework
22 / 101
RD estimation: sharp RD
Let Xi be the running variable, normalized to be 0 at the cutoff.
Fuzzy RD can be estimated with the "first" and "second" stage IV model:
^ ^
Yi = βf uzzy Di + f (Xi ) + f (Xi ) × Di + ηi
23 / 101
RD assumptions
RD requires that being on either side of the cutoff is as good as random.
e.g., if people know their exam score and the cutoff, they can find ways to change their scores to get on the other side
(retake the exam).
24 / 101
Checklist for RD paper
RD jump visualization
Balance test
Bunching test
25 / 101
Checklist for RD paper
RD jump visualization
Balance test
Bunching test
26 / 101
Checklist: RD jump visualization
Lee (2008) studies the effect of Democrat winning on subsequent victory:
27 / 101
Checklist: RD jump visualization
Lee (2008) studies the effect of Democrat winning on subsequent victory
28 / 101
Checklist: RD jump visualization
Lee (2008) studies the effect of Democrat winning on subsequent victory
29 / 101
Checklist: RD jump visualization
Lee (2008) studies the effect of Democrat winning on subsequent victory
30 / 101
A quick aside on graphical presentation
One of the most powerful aspects of regression discontinuity is the ability to present the results graphically.
We would plot a version of the scatter plot but focusing on means within binned areas.
31 / 101
Graphical presentation: Lee (2008)
This is the raw data. There seems to be a little jump across the cutoff but not really informative.
32 / 101
Graphical presentation: Lee (2008)
This is also the raw data but are averaged by 0.1 percent bin.
33 / 101
Graphical presentation: Lee (2008)
This is also the raw data but are averaged by 0.5 percent bin.
34 / 101
Graphical presentation: Lee (2008)
This is also the raw data but are averaged by 4 percent bin.
35 / 101
Checklist for RD paper
RD jump visualization
Balance test
Bunching test
36 / 101
Checklist: balance test
Lee (2008) studies the effect of Democrat winning on subsequent victory
37 / 101
Checklist: balance test
Lee (2008) studies the effect of Democrat winning on subsequent victory.
38 / 101
Checklist: balance test
Lee (2008) studies the effect of Democrat winning on subsequent victory.
39 / 101
Checklist: balance test
Lee (2008) studies the effect of Democrat winning on subsequent victory.
See Canay and Kamat (2018) for a more complete permutation test (\scriptsize checking whether covariates are approximately
identically distributed on each side of the cutoff).
40 / 101
Checklist for RD paper
RD jump visualization
Balance test
Bunching test
41 / 101
Checklist: Bunching test
There are two reasons RD might fail:
The cutoff is set systematically, such that confounding factors change discontinuously
e.g., people can retake exam to get scores above their passing grade
While both of these can be likely to show up as not meet the balance test, manipulation can also be detected by bunching of
the running variable.
McCrary (2008) checks whether the density of the running variable changes discontinuously.
42 / 101
# Checklist: Bunching test
43 / 101
Checklist for RD paper
RD jump visualization
Balance test
Bunching test
44 / 101
Checklist: Robustness
The actual estimation is subject to many tuning parameters:
In practice, use defaults unless you have very good reason not to:
Triangular (highest weights at the cutoff, linearly lower further away) or uniform kernel (same weights to all)
Optimized bandwidth from estimation procedures in packages (e.g., Cattaneo et al.'s rdrobust)
45 / 101
Checklist: Robustness
46 / 101
Example of robustness
47 / 101
RD in practice: The Effects of “Girl-Friendly” Schools: Evidence from the BRIGHT School Construction
Program in Burkina Faso
by Kazianga et al. (2013)
48 / 101
Background: Education in Burkina Faso
Primary education is officially free for ages 6–12, but families often bear some direct costs (e.g., school supplies).
Enrollment rates remained among the world’s lowest, with significant gender gap.
In 2003, net enrollment was 42% for boys and 29% for girls.
The Burkinabé Response to Improve Girls’ Chances to Succeed (BRIGHT) program, was introduced to improve education
outcomes of children in rural villages.
The program started in 2005 and implemented an integrated package of education interventions in 132 rural villages.
placed relatively well-resourced schools with a number of amenities directed at encouraging the enrollment of girls.
Interestingly, to allocate these schools, the Ministry of Education scored each of the 293 villages that requested a school by
the villages’ claims of the number of primary school-aged girls that would be likely to attend a school in their village.
49 / 101
Allocation of BRIGHT Schools
The Ministry of Education designed the allocation process based on a predetermined set of criteria:
Departments nominated 293 villages from 10 provinces and 49 departments, proposing villages with low enrollment levels.
Each village then completed a survey with the assistance of a Ministry staff member.
The Ministry then assigned each village a score based largely on the estimated number of children to be served from the
proposed and neighboring villages, giving additional weight to girls.
Within each department, the Ministry ranked the villages and awarded the top half of the villages a BRIGHT school.
If a department proposed an odd number of villages, the median village did not receive a school.
And for the two departments that only nominated one village, the proposed village was automatically accepted.
50 / 101
Allocation of BRIGHT Schools
This process generated a set of 138 villages that should have received a BRIGHT school.
However, not all villages selected to receive a school did so because some locations proved inappropriate.
This implies a fuzzy RD (treatment does not jump from 0 to 1, but probability of treatment jumps).
The authors identify, for each department, the lowest score among villages assigned a BRIGHT School and the highest score
among villages not assigned one.
They then define the department-specific cutoff (point of discontinuity) as halfway between these two scores.
Note that because each department has a different cutoff, the authors normalize the scores by creating a variable
Rel_Scorej , calculated as the village's original score minus the cutoff score for its department.
This normalization centers the running variable at zero for each department’s cutoff.
This step is crucial for accounting for the varying cutoffs across departments.
51 / 101
Empirical strategy
Yihjk = β0 + β1 Tj + f (Rel_Scorej ) + δXihjk + γZk + εihjk
52 / 101
RD paper checklist
RD jump visualization
Balance test
Bunching test
53 / 101
First-stage RD jump
The probability of receiving a BRIGHT school increases sharply from nearly zero just below the relative score cutoff, to greater
than 80 percent at the cutoff.
54 / 101
Balance test
Demographic characteristics of the children do not vary discontinuously at zero.
55 / 101
Balance test
Demographic characteristics of the children do not vary discontinuously at zero.
56 / 101
Bunching test
The distribution of villages does not vary discontinuously at zero using the test suggested by McCrary (2008).
57 / 101
ITT (reduced-form) RD jump: enrollment
Enrollment increases by about 20 percentage points across the cutoff.
58 / 101
Summary of results on enrollment
60 / 101
RD in practice: Saving lives with indexed disaster funds: evidence from Mexico
by del Valle (2024)
61 / 101
Background: Fonden diaster fund
In the last century, there have been 10,514 recorded storms, floods, and other water-related disasters, and 8.3 million deaths
that can be directly attributed to these disasters.
One striking feature of the global distribution of deaths from disasters is that it is strongly skewed toward developing
economies despite disasters not occurring disproportionately in these countries.
A possible contributing factor to the larger death toll in developing economies is the bottlenecks in the provision of disaster
aid, which results in delays in the restoration of critical services, including roads, safe water, and medical infrastructure.
62 / 101
Background: Fonden diaster fund
Fonden ensures public infrastructure and low-income housing against natural disasters.
Pre-disaster funding: ensures funds are available before a disaster through protected budget allocation, excess loss
reinsurance, catastrophe bonds.
verifying disaster occurrence using indexes (e.g., above certain rainfall threshold)
conducting damage assessments, paying reconstruction service providers, auditing reconstruction projects
63 / 101
Empirical strategy
Ymt = α + βAbovemt + g(Rmt ) + εmt
where
The function g(Rmt ) represents a polynomial of order p of the running variable Rmt that is fully interacted with the
Abovemt indicator variable.
64 / 101
RD paper checklist
RD jump visualization
Balance test
Bunching test
65 / 101
First-stage RD jump
The likelihood of receiving Fonden increases from 0.65 just below the threshold to 0.87 just above.
66 / 101
ITT (reduced-form) RD jump
Municipalities immediately to the left of the threshold experience roughly 0.79 excess deaths per 1,000 person-years, those
eligible for Fonden (immediately to the right) don’t experience excess deaths.
67 / 101
Summary of results
68 / 101
Balance test
69 / 101
Bunching test
70 / 101
Robustness checks: tuning parameters
71 / 101
Robustness checks: bandwidths
72 / 101
RD in practice: National borders and the conservation of nature
by Burgess, Costa, and Olken (2023)
73 / 101
Background: Deforestation in Brazil
The Amazon rainforest is the largest in the world.
Brazil's Forest Code sets legal requirements for landowners in the Amazon to maintain a certain percentage of native forest on
their property (e.g., 80%).
If illegally clear beyond the limit, they face heavy fines, land confiscation, or imprisonment.
However, there has been always a gap between de jure rules and de facto action.
Starting in 2005, Brazil increased enforcement of these policies, strengthening fines and increasing enforcement in a variety of
ways, including satellites.
Burgess, Costa, and Olken (2023) study this by examining what happens at the border.
74 / 101
The border
75 / 101
The border
76 / 101
The border
77 / 101
The border
Idea: comparing deforestation at the border captures the effect of Brazillian state policy
The Brazil effect is estimated using an RD design, using distance to the border as running variable.
78 / 101
Empirical strategy
Yi = α + βBrazili + g(DistBorderi ) + δXi + εi
where
The function g(DistBorderi ) represents a (linear) polynomial of distance from the border.
79 / 101
Forest cover as of 2000
Before the policy was implemented, forest cover dropped at the border.
80 / 101
Annual forest loss 2001-2005
During 2001-2005 (e.g., before the enforcement policy), annual forest loss increased significantly.
81 / 101
Annual forest loss 2006-2013
Annual forest loss decreased after the policy implemented in Brazil in 2005.
82 / 101
Annual forest loss 2014-2020
The effects tend to persist even more than a decade later.
83 / 101
Summary of results
There is a role for state policy to determine the wedge between de jure and de facto conservation policy.
84 / 101
RD in Practice: Exploring Applications in the Kurdish Context
85 / 101
What are pressing social, economic, or policy issues in your region
Education: exam score cutoffs for scholarships, school admission, teacher incentives.
Social policy: poverty score thresholds for cash transfers, subsidies, food aid.
86 / 101
Please choose two problems you would like to explore.
Activity plan:
1 hour: work individually in small groups to sketch out your RD research idea.
30 minutes: share your ideas with the group (would be helpful to have presentation slides outlining your idea).
30 minutes: we will discuss together and I will provide feedback and suggestions on feasibility.
87 / 101
Hands-on Practice: Replicating Kazianga et al. (2013)
88 / 101
Replicating Kazianga et al. (2013)
For this exercise, we will use the software Stata and the dataset bright.dta to conduct the analysis in the spirit of the paper.
Check the validity of the RD with bunching test (Figure 2) and balance test (Table 2)
Replication files are available in the Google Drive. You can also practice RD using the codes.
89 / 101
Replicating Kazianga et al. (2013)
RD checklist: Show the clear (first stage) RD jump (Figure 1)
The plot shows a village’s probability of receiving a BRIGHT school (selected) as a function of its relative score.
Use linear local polynomial estimator with an Epanechnikov kernel and a bandwidth of 25 points, focusing on the narrow
range of (−250, 250) and estimating the function separately for villages on either side of zero.
90 / 101
Replicating Kazianga et al. (2013)
RD checklist: Show the clear (first stage) RD jump (Figure 1)
lpoly selected rel_score if rel_score >= 0, nograph deg(1) k(ep) bw(25) at(rel_score) gen(pred_above)
lpoly selected rel_score if rel_score < 0, nograph deg(1) k(ep) bw(25) at(rel_score) gen(pred_below)
replace pred_above = . if rel_score <= 0
replace pred_below = . if rel_score > 0
preserve
// Generate the bin variable
gen bin = 25*floor(rel_score/25)
92 / 101
Replicating Kazianga et al. (2013)
RD checklist: Check the validity of the RD with bunching test (Figure 2) and balance tests (Table 2)
For balance tests, estimate the main equation without controlling for child and household characteristics.
93 / 101
Replicating Kazianga et al. (2013)
RD checklist: Check the validity of the RD with bunching test (Figure 2)
94 / 101
Replicating Kazianga et al. (2013)
RD checklist: Check the validity of the RD with balance tests (Table 2)
gl household Hh_FloorBasic Hh_RoofBasic Hh_Radio Hh_Telmob Hh_Watch Hh_Bike Hh_Cows Hh_Motorbike Hh_Cart
The plot shows an individual’s probability of attending school as a function of its relative score.
Use linear local polynomial estimator with an Epanechnikov kernel and a bandwidth of 25 points, focusing on the narrow
range of (−250, 250) and estimating the function separately for villages on either side of zero.
96 / 101
Replicating Kazianga et al. (2013)
RD checklist: Show the main RD results (Figure 3)
lpoly attending rel_score if rel_score >= 0, nograph deg(1) k(ep) bw(25) at(rel_score) gen(pred_above)
lpoly attending rel_score if rel_score < 0, nograph deg(1) k(ep) bw(25) at(rel_score) gen(pred_below)
replace pred_above = . if rel_score <= 0
replace pred_below = . if rel_score > 0
preserve
// Generate the bin variable
gen bin = 25*floor(rel_score/25)
98 / 101
Replicating Kazianga et al. (2013)
RD checklist: Show the robustness to different specifications (Table 5)
101 / 101