Open-source packages I maintain across R, Python, and Julia, grouped by research topic. Many are companion implementations across languages — the R version is usually the reference; the Julia/Python ports add performance, GPU support, or interoperability.
Difference-in-Differences & Event Studies
lwdidR |
R |
Panel DiD via Lee–Wooldridge unit-specific transformations: small-N and large-N (RA/IPW/IPWRA) rolling estimators with WATT(r) event studies and wild-cluster-bootstrap sup-t bands; validated against the Stata lwdid command. |
GitHub · Docs |
didimpute |
R |
Borusyak–Jaravel–Spiess (2024) imputation estimator for staggered DiD: imputes untreated potential outcomes via fixed effects, then aggregates into event-study effects with pre-trend tests, controls, and cluster-robust standard errors. Faithful R port of the did_imputation Python package, validated to ~1e-6 against a golden grid. |
GitHub · Docs |
didint |
R |
Doubly robust DiD with spatial interference and Conley-style inference. |
GitHub · Docs |
tvhte |
R |
Time-varying heterogeneous treatment effects in event studies with empirical-Bayes posterior trajectories. |
GitHub · Docs |
DidInterference.jl |
Julia |
Julia port of didint for DR DiD under spatial interference. |
GitHub · Docs |
TVHTE.jl |
Julia |
Julia port of tvhte for dynamic HTE in event studies. |
GitHub · Docs |
Synthetic Control & Counterfactuals
TASC.jl |
Julia |
Time-Aware Synthetic Control with low-rank state-space models, Kalman filtering, EM, and confidence bands. |
GitHub · Docs |
MSC.jl |
Julia |
Multivariate synthetic control for high-dimensional panels with diagnostics, placebos, and plotting. |
GitHub · Docs |
SynthDiD.jl |
Julia |
Synthetic difference-in-differences, synthetic control, and DiD estimators. |
GitHub · Docs |
Distributional Methods (Engression family)
endid |
R |
Distributional DiD with engression for ATT, QTE, and counterfactual distributions. |
GitHub · Docs |
dma |
R |
Distributional mediation analysis with energy regression and Riesz-representer weighting. |
GitHub · Docs |
divR |
R |
Distributional IV regression for interventional distributions under unmeasured confounding. |
GitHub · Docs |
Rfrengression |
R |
Causal data simulation with deep generative models and interventional sampling. |
GitHub · Docs |
torch-engression |
Python |
GPU-accelerated distributional regression with energy scores in PyTorch. |
GitHub · Docs |
torch-endid |
Python |
GPU-accelerated distributional DiD built on torch-engression. |
GitHub · Docs |
Engression.jl |
Julia |
Distributional regression via energy scores for conditional-distribution estimation. |
GitHub |
Endid.jl |
Julia |
Distributional DiD with engression for treatment-effect distributions. |
GitHub · Docs |
Causal Estimation Frameworks
RCausalModel |
R |
Causal estimators for experiments, observational studies, and network interference. |
GitHub · Docs |
CausalEstimate.jl |
Julia |
Unified front end for typed causal estimands with TMLE, AIPW, cross-fitting, and graph adjustment. |
GitHub · Docs |
Crumble.jl |
Julia |
Causal mediation with cross-fitted nuisance estimation and optimal-transport instruments. |
GitHub · Docs |
CausalGraphs.jl |
Julia |
Graph-based causal identification for ADMGs, missingness DAGs, and common adjustment strategies. |
GitHub · Docs |
HCM.jl |
Julia |
Hierarchical causal models (Weinstein & Blei 2024) estimated with Turing; a general collapse-to-ADMG identification engine on top of CausalGraphs.jl, plus confounder, interference, nested, and instrument motifs with hard and soft interventions. |
GitHub · Docs |
drlate |
R |
Doubly robust LATE / LATT with a binary instrument (IPWRA, AIPW, IPW, RA) following Słoczyński, Uysal, and Wooldridge (2022). |
GitHub · Docs |
DRLate.jl |
Julia |
Julia port of drlate; doubly robust LATE / LATT validated to the Stata reference and to the R version to ~1e-12. |
GitHub · Docs |
Network & Dyadic Regression
Rnetrics |
R |
Port of Bryan Graham’s dyadic regression tools with bias-corrected dyadic-robust standard errors. |
GitHub |
dyadfast |
R |
Fast dyadic-robust variance estimation using a single scatter-add pass. |
GitHub |
netrics-fast |
Python |
Memory-efficient dyadic regression with chunked Hájek-projection variance estimation. |
GitHub |