How CausalTargeted compares
CausalTargeted.jl estimates continuous and longitudinal causal parameters after identification: LMTP / MTP grids, positivity and omitted-confounder diagnostics, and small-n Super Learner profiles. Mediation TE / NDE / NIE grids live in CausalMediation.jl (soft façades remain here). Graphs and certificates live upstream in CausalDynamics.jl.
R packages lmtp and crumble are the closest conceptual analogues (not API identity; see NAMING.md). Ananke is the main Python LMTP reference. DoubleML is Neyman-orthogonal and related in spirit, not full LMTP parity.
Choose CausalTargeted when you already have (or can obtain) an IdentificationResult, want Julia-native LMTP/mediation grids with fold caches, and care about small-n defaults and certificates on the estimate.
Prefer lmtp / Ananke when your pipeline is already R or Python end-to-end, or you need a specialised option (e.g. GPU Riesz nets, survival LMTP flavours) that we deliberately do not claim.
Stack overview: ECOSYSTEM_COMPARISON.md.
flowchart LR
subgraph juliaStack [Julia_typed_pipeline]
G[Graph_CDM] --> ID[identify_certificate]
ID --> SIM[simulate_counterfactual]
ID --> EST[LMTP_mediation]
ID --> PLOT[DAGMakie]
SIM --> EST
endLegend
| Mark | Meaning |
|---|---|
Yes | First-class, documented |
Partial | Possible with glue or a limited API |
— | Not in that package’s usual scope |
Unique | Strong differentiator here |
Versus R and Python (targeted estimation)
| Capability | CausalTargeted | R | Python |
|---|---|---|---|
| LMTP / continuous MTP δ-grids | Yes | Yes (lmtp) | Yes (Ananke) |
| Sequential / longitudinal LMTP | Yes | Yes (lmtp) | Yes (Ananke) |
| Interventional mediation TE/NDE/NIE | Soft façade → CausalMediation | Yes (crumble, tmle3 mediation) | Partial (Ananke) |
| Cross-fit Super Learner profiles | Yes (lean / rich / small-n) | Yes (sl3 + lmtp/tmle3) | Partial (DoubleML / EconML nuisances) |
| Point-treatment TMLE (CM/ATE) | — (use TMLE.jl) | Yes (tmle / tmle3) | Partial (Ananke, others) |
| Consumes upstream graph ID certificate | Unique | Partial (separate packages) | Partial (DoWhy closer) |
| Positivity atlas / diagnostics | Yes | Partial (lmtp) | Partial |
| Omitted-confounder sensitivity | Yes | Yes (sensemakr + glue) | Partial (DoWhy) |
| DiD / g-computation utilities | Yes | Yes (did / g-comp pkgs) | Partial (CausalML / DoWhy) |
| Full parity with every lmtp/crumble option | — (deliberate) | Yes | — |
Julia neighbours
| Package | Role |
|---|---|
| CausalDynamics.jl | identify, IdentificationResult, CDMs (comparison) |
| TMLE.jl | Point-treatment CM / ATE / AIE |
| DAGMakie.jl | Optional DAG figures (comparison) |
What is distinctive here
- Typed hand-off —
plan_mtp/execute_estimandcarry identification certificates into estimate metadata - Small-n defaults — learner profiles and checklists aimed at tens to low hundreds of units (see Small-n checklist)
- Julia-native EIF grids — no RCall on the estimation path
What we deliberately do not claim
Full parity with every option in R lmtp / crumble (GPU Riesz nets, all mediation estimand flavours, survival LMTP). See Methods.
The CDCS book walks identify → estimate → display end to end.