Skip to contents

pkgdown

Engression-based distributional difference-in-differences.

endid combines the panel transformations from Lee and Wooldridge (2025) with engression distributional regression. The output includes:

  • ATT — Average Treatment Effect on the Treated
  • QTE — Quantile Treatment Effects across the outcome distribution
  • Counterfactual distributions via engression sampling

Both common-timing and staggered-adoption designs are supported.

Installation

# Install from GitHub
# install.packages("remotes")
remotes::install_github("xiangao/endid")

Usage

Common-timing design

library(endid)

result <- endid(
  data = panel_df,
  y = "outcome",
  ivar = "unit_id",
  tvar = "time",
  post = "post_treatment",
  dvar = "treated",
  rolling = "demean"
)

print(result)
summary(result)
plot(result)

Staggered adoption design

castle <- read.csv(system.file("extdata", "castle.csv", package = "endid"))
castle$gvar <- castle$effyear
castle$gvar[is.na(castle$gvar) | castle$gvar == 0] <- NA

result <- endid(
  data = castle,
  y = "lhomicide",
  ivar = "sid",
  tvar = "year",
  gvar = "gvar",
  rolling = "demean",
  control_group = "never_treated"
)

print(result)
plot(result)

Transformations

Method Description Pre-periods required
demean Subtract pre-treatment mean >= 1
detrend Remove unit-specific linear trend >= 2
demeanq Seasonal demeaning > n_seasons
detrendq Seasonal detrending > n_seasons + 1

Parameters

Key arguments to endid():

  • rolling — Transformation method ("demean", "detrend", "demeanq", "detrendq")
  • control_group — For staggered: "never_treated" or "not_yet_treated"
  • aggregate — For staggered: "overall", "cohort", or "none"
  • nboot — Number of bootstrap replications (default: 200)
  • quantiles — Quantiles for QTE (default: seq(0.1, 0.9, 0.1))

Documentation & vignettes

Full documentation: https://xiangao.github.io/endid/

Page Description
Comparison with linear DiD Synthetic comparison of distributional and linear DiD targets
Castle Doctrine example Replication-style workflow using staggered treatment timing
endid() Main estimator
Reference index All documented functions on one page

References

Lee, S. & Wooldridge, J. M. (2025). Distributional Difference-in-Differences.