Readings

  1. Mastering ‘Metrics: The Path from Cause to Effect
    Princeton University Press, 2014.
    Joshua D. Angrist and Jorn-Steffen Pischke
    (Chapter 5)

  2. 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)

  1. The Impact of the Mariel Boatlift on the Miami Labor Market
    Industrial and Labor Relations Review, 1990, 43 (2): 245-257.
    David Card

  2. 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.

  1. Include leads to check for parallel trends prior to an intervention
  2. 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
  3. 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
  4. Run placebo checks on outcomes that are related to your outcome but for which the treatment shouldn’t affect
  5. Cluster wild bootstrap if have very few units (fewer than 25) (Cameron, Gelbach, and Miller 2008)
    • Use the btrap function in the lfe library. To get a cluster wild bootstrap, set the cluster argument to a factor indicating the cluster, and set robust 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.
  6. Fisher permutation test/randomization inference
  7. Possibly fit model to different codings of the treatment or of the dependent variable
  8. 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
  9. Include lags to examine the dynamics of the effect over time
  10. If treatment is on only a single unit, try using synthetic control methods.

Additionally:

  • Work to make graphs more interpretable