-
⌥ 3 steps Index: 132 89 peers Did someone manipulate the cutoff? (rddensity)
The standard manipulation test for RD designs — checks whether the running variable's density jumps at the cutoff (a sign units sorted around it).
Data prep Take the running variable▼Diagnostic / pre-tests Run the manipulation test▼Reporting Plot the two densities -
⌥ 3 steps Index: 132 87 peers Double machine learning in Python (econml)
A Python toolkit for heterogeneous treatment effects from observational data — double ML, doubly-robust, orthogonal forests, meta-learners.
Data prep Build the data▼Estimation Fit a Linear Double-ML model▼Inference Read the average effect -
⌥ 3 steps Index: 132 62 peers Causal forests for heterogeneous effects (grf)
Generalized random forests that estimate conditional average treatment effects τ(x) non-parametrically, with valid confidence intervals.
Data prep Assemble X, W, Y▼Estimation Fit a causal forest▼Inference Aggregate to the ATE -
⌥ 2 steps Index: 132 86 peers Random assignment by design (randomizr)
Reproducible random assignment — simple, complete, block, cluster, stratified — with the exact assignment probabilities design-based inference needs.
Data prep Define the blocks▼Estimation Block-randomize and recover probabilities -
⌥ 2 steps Index: 132 73 peers Randomization inference, packaged (ri2)
Exact Fisher randomization tests and sharp-null confidence intervals for any randomization scheme — the packaged version of the design-based test.
Data prep Declare the randomization▼Inference Conduct randomization inference -
⌥ 2 steps Index: 132 81 peers Design-based estimators done fast (estimatr)
Lin's covariate-adjusted estimator and Neyman/HC2 robust standard errors for randomized experiments — one fast function, design-based inference.
Data prep Assemble the experiment▼Estimation Fit Lin's estimator -
⌥ 2 steps Index: 132 102 peers Sensitive questions, protected answers (rr)
Regression for randomized-response surveys — recover predictors of a sensitive behavior while every respondent's individual answer stays private.
Data prep Load the survey data▼Estimation Fit the randomized-response regression -
⌥ 2 steps Index: 132 106 peers Who responds to treatment? (FindIt)
Find which subgroups respond to a treatment and estimate causal interactions in factorial / conjoint experiments via a LASSO-regularized search.
Data prep Load the data▼Estimation Search for heterogeneous effects -
⌥ 2 steps Index: 132 73 peers Design & analyze randomized experiments (experiment)
Randomize treatment (complete, blocked, cluster) and estimate average effects with design-based variance — including cluster-randomized trials.
Data prep Randomize the treatment▼Estimation Estimate the cluster-randomized ATE -
⌥ 2 steps Index: 132 83 peers Is your counterfactual an extrapolation? (WhatIf)
Flags when a counterfactual question is a safe interpolation versus a model-dependent extrapolation far from your data.
Data prep Load data and define the counterfactual▼Diagnostic / pre-tests Run the convex-hull / distance test -
⌥ 3 steps Index: 132 84 peers The balance–sample-size frontier (MatchingFrontier)
Trace the whole tradeoff curve between covariate balance and how many units you keep, then estimate the effect at every point on the frontier.
Data prep Load MatchIt's lalonde data▼Estimation Compute the matching frontier▼Reporting Estimate effects along the frontier -
⌥ 3 steps Index: 132 40 peers Simulation-based inference for any model (clarify)
Turn any fitted model into interpretable quantities of interest — average marginal effects, predictions, contrasts — with simulation-based confidence intervals.
Estimation Fit any regression model▼Inference Simulate the coefficient distribution▼Reporting Average marginal effect of treatment -
⌥ 5 steps Index: 132 35 peers Entropy balancing for covariate overlap (ebal)
Reweight controls to exactly match the treated group's covariate moments, achieving balance without iterative propensity-score tweaking.
Data prep Assemble treatment indicator and covariat…▼Estimation Run entropy balancing▼Diagnostic / pre-tests Check exact moment balance▼Estimation Weighted ATT estimate▼Reporting Love plot of standardized differences -
⌥ 4 steps Index: 132 44 peers Synthetic control for comparative case studies (Synth)
Build a weighted 'synthetic' control from untreated units to estimate the effect of a single treated case over time.
Data prep Prepare the panel with dataprep()▼Estimation Optimize the donor weights▼Reporting Donor weights and predictor balance tables▼Reporting Path and gaps plots -
⌥ 3 steps Index: 132 22 peers IV with heterogeneous effects: the LATE (ivreg)
Two-stage least squares for instrumental-variables regression, with the modern LATE interpretation and rich diagnostics.
Data prep Load data and specify the IV formula▼Estimation Fit the 2SLS / IV model▼Inference Summary with diagnostic tests -
⌥ 4 steps Index: 132 98 peers Bias-corrected nearest-neighbor matching (Matching)
Match treated and control units on covariates, then bias-correct and get the correct large-sample standard errors.
Data prep Fit the propensity score model▼Estimation Bias-adjusted nearest-neighbor matching▼Diagnostic / pre-tests Check covariate balance after matching▼Inference Report the ATT with Abadie-Imbens SE -
⌥ 5 steps Index: 132 48 peers Regression discontinuity, done right (rdrobust)
Estimate causal effects at a cutoff with data-driven optimal bandwidths and bias-corrected, robust confidence intervals.
Data prep Load senate data and inspect the running …▼Diagnostic / pre-tests RD plot around the cutoff▼Diagnostic / pre-tests Data-driven optimal bandwidth▼Estimation Robust bias-corrected RD estimate▼Inference Read the three inference rows -
⌥ 3 steps Index: 132 67 peers Sensitivity analysis & the E-value (Ding & VanderWeele)
Reports how strong an unmeasured confounder would have to be, on the risk-ratio scale, to fully explain away an observed association.
Data prep Record the observed risk ratio and its co…▼Robustness check Compute the E-value for the estimate and …▼Reporting Interpret the E-values -
⌥ 4 steps Index: 132 23 peers Quantitative Social Science: data and code (qss)
The companion R package for Imai's textbook Quantitative Social Science, bundling every dataset and chapter vignette for hands-on data-analysis teaching.
Data prep Install and load qss▼Diagnostic / pre-tests Cross-tabulate callbacks by race▼Estimation Difference-in-means in callback rates▼Reporting Interpret the effect -
⌥ 4 steps Index: 132 83 peers Analyzing list / item-count experiments (list)
Multivariate regression for list (item-count) experiments, recovering the prevalence and predictors of a sensitive attitude without asking about it directly.
Data prep Load the list package and race data▼Diagnostic / pre-tests Difference-in-means prevalence▼Estimation Multivariate ML regression▼Reporting Predict sensitive-item prevalence -
⌥ 3 steps Index: 132 85 peers Predicting race/ethnicity from name and geography (wru)
"Who Are You?" predicts an individual's probable race/ethnicity from surname, first/middle name, and geolocation using Bayesian (BISG) updating.
Data prep Load wru and the voter file▼Estimation Predict race with BISG▼Reporting Inspect posterior probabilities -
⌥ 5 steps Index: 132 106 peers Matching for panel / time-series cross-sectional data (PanelMatch)
Matches treated unit-periods to controls with identical recent treatment histories, then applies a difference-in-differences estimator for TSCS data.
Diagnostic / pre-tests Inspect treatment distribution▼Estimation Build matched sets▼Diagnostic / pre-tests Check covariate balance▼Estimation Estimate the ATT (DiD)▼Reporting Summarize and plot leads -
⌥ 5 steps Index: 132 96 peers Causal mediation analysis (mediation)
Decomposes a treatment effect into the part transmitted through a mediator (ACME) and the rest (direct effect), with sensitivity analysis.
Data prep Load package and data▼Estimation Fit the mediator model▼Estimation Fit the outcome model▼Inference Simulate mediation effects▼Robustness check Sensitivity analysis -
⌥ 4 steps Index: 132 81 peers Ecological inference (ei)
Infers individual-level behavior from aggregate (district-level) data, the classic example being voting rates by race from precinct totals.
Data prep Load ei and prepare the 2x2 margins▼Estimation Fit the ecological inference model▼Inference Summarize aggregate estimates▼Reporting Read out precinct-level betas -
⌥ 5 steps Index: 132 28 peers Coarsened exact matching (CEM)
Temporarily coarsens each covariate into bins, exact-matches treated and controls within bins, then estimates effects on the matched data.
Data prep Load cem and the LeLonde data▼Diagnostic / pre-tests Measure imbalance before matching▼Estimation Coarsen and match with cem()▼Diagnostic / pre-tests Check imbalance after matching▼Inference Estimate the SATT -
⌥ 5 steps Index: 132 53 peers Multiple imputation of missing data (Amelia)
Fills in missing values via fast bootstrap-EM multiple imputation, producing several complete datasets you analyze and combine.
Data prep Load Amelia and the freetrade data▼Estimation Run multiple imputation with m = 5▼Diagnostic / pre-tests Check imputation diagnostics▼Estimation Fit the model on each imputed dataset▼Inference Combine estimates with Rubin's rules -
⌥ 4 steps Index: 132 97 peers Bayesian principal stratification (PStrata)
Bayesian mixture modeling for principal stratification: causal effects within latent strata (e.g. compliers) under post-treatment confounding.
Data prep Specify the principal stratification model▼Estimation Fit the model with MCMC▼Inference Estimate stratum-specific potential outco…▼Inference Contrast treatment effects within strata -
⌥ 3 steps Index: 132 50 peers PS weighting for survival outcomes (PSsurvival)
Propensity-score balancing weights for time-to-event outcomes: counterfactual survival curves, survival differences, and marginal hazard ratios.
Data prep Load package and survival data▼Estimation Run surveff() with overlap weights▼Inference Survival difference with confidence inter… -
⌥ 4 steps Index: 132 27 peers Propensity-score weighting (PSweight)
A full design-and-analysis platform for causal effects via balancing weights (overlap, IPW, ATT, matching, entropy) for binary and multiple treatments.
Data prep Load data and specify the PS model▼Diagnostic / pre-tests Design stage: SumStat() balance check▼Estimation Estimate the ATO with overlap weights▼Inference Summarize pairwise contrasts -
⌥ 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 -
⌥ 5 steps ⑂ 1 branch Index: 84 94 peers Staggered DiD done three ways (did · did2s · fixest)
My side-by-side for staggered adoption: Callaway–Sant'Anna vs Gardner's two-stage vs Sun–Abraham — do the event studies agree?
Data prep Build the staggered panel Estimation att_gt() — Callaway & Sant'Anna Estimation did2s() — Gardner two-stage Estimation sunab() — Sun & Abraham (fixest) Reporting Overlay the three event studies -
⌥ 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: 195 86 peers Confounder-adjusted survival curves for a treatment (adjustedCurves)
Compare survival between treatment groups after removing confounding — via IPTW, the g-formula or AIPW — instead of a raw Kaplan-Meier that quietly bakes in selection.
Data prep Time-to-event, treatment, confounders Estimation Adjust for confounding (IPTW / g-formula) Inference Curves with confidence bands Reporting Summaries: RMST difference, survival at t -
⌥ 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: 207 93 peers Bayesian regression discontinuity with credible intervals (CausalPy)
Fit a model on each side of the cutoff, put a posterior on the jump, and report a credible interval for the discontinuity — plus an honest look at how it moves with the bandwidth.
Data prep Running variable, threshold, outcome Estimation A Bayesian model each side of the cutoff Inference Posterior & 94% credible interval for the… Robustness check Bandwidth & functional-form sensitivity -
⌥ 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 21 peers Synthetic control, the tidy way — weights, gaps and placebo inference (tidysynth)
Build a synthetic version of the treated unit from a convex blend of donors, read the treated-minus-synthetic gap, and test it against placebos run on every donor.
Data prep Panel, treated unit, donor pool Estimation Solve for donor & predictor weights Reporting Read the gap: observed − synthetic Inference Placebo permutation across donors -
⌥ 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: 182 16 peers Uplift modelling with S-, T-, X- and R-learners (CausalML)
Estimate who responds, not just the average: fit a family of meta-learners for the CATE, pick the best by validation error, then rank and target with an uplift curve.
Data prep Outcome, treatment, features Estimation Fit a family of meta-learners Heterogeneity Compare learners; choose by validation Reporting Targeting: uplift / Qini gain -
⌥ 4 steps ⑂ 1 branch Index: 219 99 peers Heterogeneous effects with causal-forest double ML (EconML)
Double machine learning with a forest final stage: partial out nuisance with flexible learners, then read the conditional effect τ(x) — with valid confidence intervals.
Data prep Split features: effect-modifiers X vs con… Estimation Partial out nuisance (Neyman-orthogonal D… Heterogeneity Forest-weighted local effect τ(x) Inference Confidence intervals for τ(x) -
⌥ 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 22 peers Causal mediation: natural direct & indirect effects (CMAverse)
Split a total effect into what flows through a mediator (indirect) and what doesn't (direct) — with a sensitivity analysis for mediator–outcome confounding.
Data prep Treatment, mediator, outcome, confounders Estimation Fit mediator & outcome models Inference Decompose the total effect Robustness check Sensitivity to mediator–outcome confoundi… -
⌥ 4 steps ⑂ 1 branch Index: 96 21 peers Synthetic difference-in-differences (synthdid)
Reweight both control units and pre-periods to build a synthetic control, then apply a DiD correction — robust where plain SC or TWFE struggle.
Data prep Balanced panel + treated block Estimation Solve for unit & time weights Inference Placebo / jackknife standard errors Reporting Plot trajectories & the gap -
⌥ 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 -
⌥ 4 steps ⑂ 1 branch Index: 96 59 peers Distributional effects: potential quantiles & CVaR (DoubleML)
When the tails matter: estimate potential quantiles and the conditional value-at-risk of a treatment with Neyman-orthogonal scores.
Data prep Build DoubleMLData (y, d, X) Estimation Potential quantiles Estimation Conditional value-at-risk Reporting Plot quantile & CVaR effects -
⌥ 4 steps ⑂ 1 branch Index: 108 73 peers Dose–response with average potential outcomes (DoubleML APO)
For a multi-valued or continuous treatment: estimate E[Y(d)] at each dose and the contrasts between them, all cross-fitted.
Data prep Declare the multi-valued treatment Estimation Average potential outcome at each level Inference Contrasts between doses Reporting Plot the dose–response curve -
⌥ 3 steps ⑂ 1 branch Index: 108 101 peers Learn an interpretable treatment policy (DoubleML policy tree)
Turn debiased CATEs into a rule: fit a shallow, readable decision tree that maximises the doubly-robust policy value.
Estimation Orthogonal scores from an IRM Heterogeneity Fit a depth-limited policy tree Reporting Read the tree & its value -
⌥ 4 steps ⑂ 1 branch Index: 120 18 peers Quantile treatment effects of 401(k) eligibility (DoubleML)
Beyond the average: how 401(k) eligibility shifts net financial assets across the whole wealth distribution, estimated orthogonally.
Data prep Build DoubleMLData (net_tfa, e401, X) Estimation Estimate QTEs across the distribution Inference Simultaneous confidence bands Reporting Plot the QTE curve -
⌥ 5 steps ⑂ 1 branch Index: 132 78 peers Group & conditional effects with DoubleML (GATE / CATE)
Slice the average effect: Group Average Treatment Effects and a CATE surface from a debiased IRM, with simultaneous confidence bands.
Data prep Build DoubleMLData (y, d, X) Estimation Fit an Interactive Regression Model (IRM) Heterogeneity Group Average Treatment Effects Heterogeneity CATE via a basis expansion Reporting Plot with simultaneous bands -
⌥ 4 steps ⑂ 1 branch Index: 195 35 peers Sensitivity analysis for unobserved confounding (sensemakr)
Don't just assume no unobserved confounding — quantify it: robustness value + contour plots benchmarked against your real covariates.
Data prep Fit the OLS outcome model▼▼Reporting Contour plot — point estimate Reporting Contour plot — t-value -
⌥ 4 steps Index: 183 62 peers Two-stage difference-in-differences (did2s)
Gardner's 2-stage estimator for staggered DiD: residualize on the untreated, then estimate the event study — fast and timing-robust.
Data prep Staggered panel + relative event time▼▼Robustness check Compare to TWFE / CS▼Reporting Event-study plot -
⌥ 5 steps Index: 207 45 peers Matching for causal inference (MatchIt)
Preprocesses observational data by matching treated and control units on covariates, so downstream models depend less on modeling assumptions.
Data prep Load MatchIt and the lalonde data▼Estimation Run 1:1 nearest-neighbor PS matching▼Diagnostic / pre-tests Assess covariate balance▼Data prep Extract the matched dataset▼Estimation Estimate the ATT -
⌥ 5 steps ⑂ 1 branch Index: 244 15 peers Double machine learning for the 401(k) effect (DoubleML)
Effect of 401(k) eligibility on net assets via PLR / IRM / IIVM with cross-fit ML nuisances — four learners, one honest comparison.
Data prep Build DoubleMLData (y, d, X, z)▼Data prep Choose ML learners for the nuisances▼Estimation [DoubleML] Double/debiased ML — PLR / IRM… Robustness check IRM / IIVM cross-checks▼Reporting Coefficient comparison plot -
⌥ 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() -
⌥ 4 steps ⑂ 1 branch Index: 195 79 peers Event-study DiD with Sun & Abraham (fixest)
Fast fixed-effects event study that survives staggered timing — sunab() vs naive TWFE, plotted against the truth.
Data prep Assemble panel with cohort timing▼Estimation [fixest] Sun & Abraham event study — suna… Robustness check Naive TWFE comparison▼Reporting iplot(): SA20 vs TWFE vs truth -
⌥ 5 steps ⑂ 1 branch Index: 231 101 peers Difference-in-differences with multiple periods (did)
Staggered-adoption DiD done right: group-time ATT(g,t) → event-study / group / calendar aggregations, with honest pre-trends.
Data prep Build the staggered panel▼▼Inference aggte(type = 'dynamic') Heterogeneity aggte(type = 'group')▼Reporting ggdid() event-study plot -
⌥ 5 steps ⑂ 1 branch Index: 96 84 peers Qini curves: automatic cost-benefit analysis
From CATEs to a budgeted treatment policy: causal forest → DR scores → cost matrix → maq Qini curve → pick the budget.
▼Data prep Doubly-robust score matrix Data prep Cost matrix▼▼Reporting Pick the budget; report the gain -
⌥ 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 -
⌥ 5 steps Index: 120 98 peers Cross-fold validation of heterogeneity
K-fold cross-fitted CATEs → RATE on out-of-fold priorities → honest verdict on heterogeneity strength.
Data prep K-fold split (e.g. K = 5)▼▼▼▼Reporting TOC curve + bootstrap CI -
⌥ 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: 194 103 peers An introduction to GRF (getting started)
A minimal first-contact recipe: regression forest, quantile forest, and a causal forest on the same data.
Data prep Assemble X, W, Y; check overlap▼▼Reporting OOB predictions & variable importance -
⌥ 3 steps Index: 96 20 peers Estimating ATEs on a new target population
Train a causal forest on the source sample → reweight AIPW to a target population → report transported ATE.
▼▼Reporting Transported ATE + overlap caveats -
⌥ 5 steps Index: 183 61 peers Policy learning via optimal decision trees
Causal forest → doubly-robust scores → policytree → evaluate policy value → plot the tree.
▼Data prep double_robust_scores()▼Estimation policytree: depth-2 optimal tree▼Inference Evaluate policy value (held-out)▼Reporting Plot the learned decision tree -
⌥ 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 -
⌥ 6 steps ⑂ 1 branch Index: 207 23 peers Assessing heterogeneity with RATE (AUTOC & Qini)
Causal forest → train/eval split → RATE with both AUTOC and Qini → TOC plot.
▼▼Data prep Train / evaluation split▼Heterogeneity [GRF] Rank-weighted ATE — RATE / AUTOC / … Heterogeneity [GRF] Rank-weighted ATE — RATE / AUTOC / …▼Reporting TOC plot + AUTOC/Qini table -
⌥ 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