The {fetwfe} package implements fused extended two-way fixed effects (FETWFE), a methodology for estimating treatment effects in difference-in-differences with staggered adoptions.
- For a brief introduction to the methodology, as well as background on difference-in-differences with staggered adoptions and motivation for FETWFE, see this blog post.
- For more detailed slides on the methodology (but less detailed than the paper), see here.
- Check out the most recent draft of the full paper here.
- This blog post explains a little more about what the package does under the hood, if you're interested.
fetwfePackage
To install the {fetwfe} package, simply use
install.packages("fetwfe")You can also install the latest development version by using
# install.packages("remotes") # if needed remotes::install_github("gregfaletto/fetwfePackage")
The primary function in the {fetwfe} is fetwfe(), which implements fused extended two-way fixed effects. Here's some example code applying fetwfe() to the castle data set from the bacondecomp package:
library(fetwfe) library(bacondecomp) data(castle) # Response: the log homicide rate. Treatment: `cdl` records the share of # the year the castle-doctrine law was in effect, so `cdl > 0` gives the # absorbing 0/1 treatment indicator `fetwfe()` requires. castle$l_homicide <- log(castle$homicide) castle$treated <- as.integer(castle$cdl > 0) res <- fetwfe( pdata = castle, time_var = "year", unit_var = "state", treatment = "treated", response = "l_homicide", verbose = TRUE) summary(res)
For vignettes and full documentation, check out the page for the {fetwfe} package on CRAN.
References
- Faletto, G (2025). Fused Extended Two-Way Fixed Effects for Difference-in-Differences with Staggered Adoptions. arXiv preprint arXiv:2312.05985.