-
⌥ 4 steps ⑂ 1 branch Index: 195 52 peers Draw the DAG, find the adjustment set (ggdag & dagitty)
Before any estimation: encode your assumptions as a causal graph, enumerate the backdoor paths from treatment to outcome, and let the graph hand you the minimal set of covariates to adjust for.
Data prep Encode your assumptions as a DAG Diagnostic / pre-tests Enumerate paths; spot backdoors & collide… Estimation Minimal sufficient adjustment set Robustness check Test the DAG's implications -
⌥ 4 steps ⑂ 1 branch Index: 207 86 peers Mendelian randomization: genes as instruments for a causal effect (TwoSampleMR)
Use genetic variants as instruments to estimate the causal effect of an exposure on an outcome from GWAS summary data — with IVW plus pleiotropy-robust MR-Egger and weighted-median checks.
Data prep Harmonise SNP–exposure & SNP–outcome effe… Diagnostic / pre-tests Check instrument strength Estimation Inverse-variance weighted estimate Robustness check Pleiotropy-robust: MR-Egger, weighted med… -
⌥ 4 steps ⑂ 1 branch Index: 170 65 peers Goodman-Bacon decomposition: what your TWFE estimate is averaging (bacondecomp)
A two-way fixed-effects DiD is a weighted average of all possible 2×2 comparisons — including 'forbidden' ones that use already-treated units as controls. This shows you the weights.
Data prep A staggered-adoption panel Diagnostic / pre-tests Decompose into 2×2 comparisons Robustness check Spot the forbidden comparisons Reporting Read β as a weighted average -
⌥ 4 steps ⑂ 1 branch Index: 207 12 peers Honest sensitivity bounds for parallel-trends violations (HonestDiD)
Stop betting everything on a pre-trends test. Allow the post-treatment trend to deviate within a transparent class, and report the confidence set — and the breakdown value where the effect would vanish.
Data prep Start from event-study coefficients Diagnostic / pre-tests Read the pre-trends, don't just test them Robustness check Bound the deviation: relative magnitudes … Inference Robust confidence set & breakdown value -
⌥ 4 steps ⑂ 1 branch Index: 219 104 peers Model, identify, estimate, refute — the DoWhy four-step recipe (DoWhy)
Make your assumptions explicit: draw a causal graph, identify the estimand by the backdoor criterion, estimate it, then actively try to refute it with placebo and confounding tests.
Data prep Model — encode the causal graph Diagnostic / pre-tests Identify — apply the backdoor criterion Estimation Estimate — adjust for the backdoor set Robustness check Refute — placebo & unobserved-confounder … -
⌥ 4 steps ⑂ 1 branch Index: 108 33 peers Sharp regression discontinuity with robust bias correction (rdrobust)
Identify the effect at a cutoff: a local-polynomial RD with an MSE-optimal bandwidth and robust, bias-corrected confidence intervals.
Data prep Running variable, cutoff, outcome Diagnostic / pre-tests rdplot — see the jump Estimation Local-linear RD with bias correction Robustness check Bandwidth & donut sensitivity -
⌥ 4 steps ⑂ 1 branch Index: 96 64 peers Instrumental variables & 2SLS for an endogenous treatment (ivreg)
When treatment is endogenous, an instrument identifies the complier (LATE) effect via two-stage least squares — after you check the instrument is strong.
Data prep Outcome, endogenous treatment, instrument Diagnostic / pre-tests Check instrument strength (first stage) Estimation Two-stage least squares (ivreg) Inference Interpret as a complier effect (LATE) -
⌥ 4 steps ⑂ 1 branch Index: 108 69 peers Design & diagnose a randomized experiment (DeclareDesign)
Specify a study as model–inquiry–data–answer, simulate it, and read its diagnosands — bias, power, coverage — before you run it.
Data prep Declare the model & potential outcomes Estimation Difference-in-means estimator Inference Neyman variance & confidence intervals Diagnostic / pre-tests Diagnose: bias, power, coverage -
⌥ 5 steps ⑂ 1 branch Index: 60 32 peers An observational ATE you can defend (balance → estimate → sensitivity)
My checklist for an observational effect: match, prove balance with cobalt, estimate on the matched sample, then quantify hidden-confounding risk with sensemakr.
Data prep Treatment, covariates, outcome Data prep matchit() — nearest-neighbour matching Diagnostic / pre-tests bal.tab() / love.plot() — cobalt Estimation Estimate the ATT on matched data Reporting sensemakr() — robustness value + contours -
⌥ 4 steps Index: 207 45 peers Matching for causal inference (MatchIt)
Preprocess by matching so groups are comparable, check balance, then estimate the effect on the matched sample — design before analysis.
Data prep Treatment W + covariates X▼▼Diagnostic / pre-tests Assess balance (summary / plot)▼Reporting Estimate the effect on matched data -
⌥ 4 steps Index: 171 107 peers Covariate balance for matching & weighting (cobalt)
Before you trust an observational estimate, prove balance: SMDs, overlap, and a Love plot before vs after adjustment.
Data prep Treatment W + covariates X▼Data prep Estimate weights / matches (WeightIt / Ma…▼▼Reporting love.plot() -
⌥ 5 steps ⑂ 1 branch Index: 108 87 peers Smooth signals with a local linear forest
When the conditional mean is smooth: regression forest baseline → ll_regression_forest → tuning → diagnostics.
▼Diagnostic / pre-tests Tune λ via cross-validation▼Diagnostic / pre-tests Calibration & boundary plot▼Reporting Side-by-side comparison -
⌥ 6 steps ⑂ 1 branch Index: 132 42 peers Evaluating a causal forest fit
Did the forest actually capture treatment-effect heterogeneity? Calibration → variable importance → BLP → omnibus tests.
▼Diagnostic / pre-tests test_calibration() Diagnostic / pre-tests variable_importance() Heterogeneity best_linear_projection() Diagnostic / pre-tests OOB residual checks▼Reporting Fit-evaluation report -
⌥ 5 steps ⑂ 1 branch Index: 170 30 peers Causal forest with time-to-event data (survival)
Censoring check → causal survival forest → RMST-scale AIPW ATE → calibration → report.
▼▼Inference [GRF] AIPW average treatment effect Diagnostic / pre-tests test_calibration()▼Reporting RMST difference by subgroup -
⌥ 8 steps ⑂ 1 branch Index: 292 48 peers Heterogeneous treatment effects with a causal forest (GRF recipe)
The full GRF HTE playbook: cross-fit nuisances → causal forest → calibration → AIPW ATE → BLP → RATE → policy.
▼▼Diagnostic / pre-tests test_calibration() Inference [GRF] AIPW average treatment effect Heterogeneity best_linear_projection() Heterogeneity [GRF] Rank-weighted ATE — RATE / AUTOC / …▼Robustness check Policy learning (policytree)▼Reporting CATE histogram + targeting report