8  Continuous treatment — didgpu_did_continuous()

9 Continuous DiD with no stayers — didgpu_did_continuous()

didgpu_did_continuous() implements the no-stayers continuous-treatment DiD of @dechaisemartin2024continuous. It is for the case where the treatment dose changes for nearly every unit between \(t-1\) and \(t\) — so there is no pure control group, and identification has to come from the first-difference regression interior.

9.1 What it estimates

Two related quantities:

  • effect(d) — the level effect of being exposed to dose \(d\) rather than the baseline dose, at first difference.
  • ACR(d) — the average causal response — i.e., the derivative of effect(d) with respect to \(d\) at the population dose-density.

Both are point-identified under the assumption that \(\mathbb{E}\bigl[\Delta Y \mid \Delta D = 0\bigr]\) is recoverable from “quasi-stayers” (units with \(|\Delta D| \le h\) for some bandwidth \(h\)).

9.2 Two estimator flavours

  • type = "parametric" — polynomial spline in \(d\), \(\sqrt{n}\)-rate estimator. Closed-form SEs.
  • type = "nonparametric" — local-linear smoother with bandwidth \(h \sim n^{-2/5}\). Bootstrap SEs.

9.3 Function signature

didgpu_did_continuous(
  df,
  outcome, group, time, treatment,
  type           = c("parametric", "nonparametric"),
  degree         = 3L,         # spline degree for "parametric"
  bandwidth      = NULL,       # auto if NULL, for "nonparametric"
  bootstrap_reps = 0L,
  cluster        = NULL,
  ci_level       = 95,
  backend        = "auto",
  seed           = NULL,
  verbose        = TRUE
)
Tip

Full chapter with simulated dose-response examples and a comparison of the two estimator flavours is in progress.

9.4 See also

  • @dechaisemartin2024continuous — the method paper.
  • contdid — the reference R implementation.

9.5 References