Readings
-
Mastering ‘Metrics: The Path from Cause to Effect
Princeton University Press, 2014.
Joshua D. Angrist and Jorn-Steffen Pischke
(Chapter 5) -
Waking Up the Golden Dawn: Does Exposure to the Refugee Crisis Increase Support for Extreme-Right Parties?
Political Analysis, 2019, 27 (2): 244-254.
Elias Dinas, Konstantinos Matakos, Dimitrios Xefteris and Dominik Hangartner
For reference (the classic diff-in-diff studies)
-
The Impact of the Mariel Boatlift on the Miami Labor Market
Industrial and Labor Relations Review, 1990, 43 (2): 245-257.
David Card -
Minimum Wages and Employment: A Case Study of the Fast-Food Industry in New Jersey and Pennsylvania
Industrial and Labor Relations Review, 1994, 84 (4): 772-793.
David Card and Alan B. Krueger
In-class exercise
R code for exercise: here
Data for exercise from Dinas et al. (2019): here
Robustness checks and extensions
Note that there are more possibilities for robustness checks and extensions in difference-in-differences analysis that those listed below. Others that aren’t listed will be specific to the case being examined.
- Include leads to check for parallel trends prior to an intervention
- Include unit-level time trends to correct for the absence of parallel trends, or to test whether the results are robust to their inclusion even if parallel trends appear valid
- Can include quadratic time trends as well as a further check
- If relatively few units, try removing each unit one at a time and re-estimating the model to see if the results are driven by a single case
- Run placebo checks on outcomes that are related to your outcome but for which the treatment shouldn’t affect
- Cluster wild bootstrap if have very few units (fewer than 25) (Cameron, Gelbach, and Miller 2008)
- Use the
btrap
function in thelfe
library. To get a cluster wild bootstrap, set thecluster
argument to a factor indicating the cluster, and setrobust
to FALSE. This is not clear from the documentation itself, but in the code, it is clear it is a wild bootstrap, see: (btrap.R) - Note: bootstrapping a CI can take a long time, so set it to a small number of bootstraps to begin with.
- Use the
- Fisher permutation test/randomization inference
- e.g. Cunningham and Shah 2018 (pp. 1689-1692)
- Is tricky if don’t have units observed in all time periods, however
- Possibly fit model to different codings of the treatment or of the dependent variable
- Examine theoretically interesting heterogeneity with a difference-in-difference-differences model
- i.e. whether the effect is different for one group than it is for another
- Include lags to examine the dynamics of the effect over time
- If treatment is on only a single unit, try using synthetic control methods.