Longitudinal Doubly Robust Estimation and LTMLE
Longitudinal causal estimation combining sequential outcome and treatment/observation models for static or dynamic treatment strategies, with estimator-specific robustness and inference conditions.
On this page
Longitudinal causal estimation combining sequential outcome and treatment/observation models for static or dynamic treatment strategies, with estimator-specific robustness and inference conditions. Use for sustained or dynamic strategies where time-varying confounders can be affected by earlier treatment and baseline adjustment is insufficient.
Definition and scope
Longitudinal causal estimation combining sequential outcome and treatment/observation models for static or dynamic treatment strategies, with estimator-specific robustness and inference conditions. The target population, use, and analysis remain protocol decisions; this card explains the choices and their consequences rather than approving a study.
Operational specification
Specify ordered time points, baseline and time-varying confounders, treatment decisions, observation/censoring, absorbing events, intervention rule, outcome, and target population. All tailoring information must be available before each strategy decision. Distinguish a longitudinal g-formula plug-in from targeted or augmented estimators and identify the exact robustness theorem applicable to the chosen method.
Analysis and diagnostics
Fit sequential regressions and treatment/observation mechanisms using an implementation that matches the longitudinal data structure, with appropriate sample splitting/cross-fitting when needed. Check longitudinal positivity, cumulative weights, intervention support, model convergence, and valid influence-function or other uncertainty estimation. Point-estimate double robustness does not automatically validate inference or permit arbitrary combinations of misspecified stages.
When NOT to use and common errors
Do not adjust for all post-baseline variables in a standard regression and call it LTMLE, ignore joint support across repeated treatment decisions, or claim consistency whenever any one nuisance model is correct. The code below checks only a path-probability calculation.
Worked example and implementation boundary
A synthetic two-decision history has conditional treatment probabilities 0.5 and 0.4 and observation probability 0.9. Calculate the probability of that observed treatment/observation path under the stated factorization. The path probability is 0.18. This is a diagnostic preparation calculation, not a fitted longitudinal causal effect. The code performs that explicitly stated calculation with synthetic inputs. It is not a complete fitted analysis and does not demonstrate the identification assumptions, estimate sampling uncertainty, or certify application in another population.
Data-source and reporting requirements
Preserve the provenance, dates, units, and observation rule for each input. Claims capture services and transactions under observable benefits; absence of a record is not proof that an event or resource use did not occur. EHR and registry measurements depend on the collection process and may miss care outside the system. Linked sources add reconciliation and selection questions. Primary collection can improve a missing domain but still requires valid measurement and follow-up. Report which of these limitations affects the stated use, which evidence supports the chosen inputs, and what remains uncertain.
Worked example
Scenario
A synthetic two-decision history has conditional treatment probabilities 0.5 and 0.4 and observation probability 0.9. Calculate the probability of that observed treatment/observation path under the stated factorization.
Dataset
Synthetic inputs with units defined in the scenario; no patient data.
| input | value |
|---|---|
| p_a0 | 0.5 |
| p_a1 | 0.4 |
| p_observed | 0.9 |
Steps
Result
The path probability is 0.18. This is a diagnostic preparation calculation, not a fitted longitudinal causal effect.
Trade-offs
Code example
Executed example · Python 3.11.15 · 2026-11-01T02:04:28+00:00
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study.
p_a0 = 0.5
p_a1 = 0.4
p_observed = 0.9
result = p_a0*p_a1*p_observed
assert abs(result - 0.18000000000000002) < 1e-9
print(result)
Executed example · Rscript (R) version 4.6.1 (2026-06-24) · 2026-11-01T02:04:28+00:00
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study.
p_a0 <- 0.5
p_a1 <- 0.4
p_observed <- 0.9
result <- p_a0*p_a1*p_observed
stopifnot(abs(result - 0.18000000000000002) < 1e-9)
print(result)
Illustrative example · execution not verified
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study. SAS source is illustrative until executed in a compatible SAS runtime.
data worked_example;
p_a0 = 0.5;
p_a1 = 0.4;
p_observed = 0.9;
result = p_a0*p_a1*p_observed;
put result=;
run;
Citations
- [1]Petersen M, et al. Targeted Maximum Likelihood Estimation for Dynamic and Static Longitudinal Marginal Structural Working Models. Journal of Causal Inference. 2014.
- [2]Hernán MA, Robins JM. Using big data to emulate a target trial when a randomized trial is not available. American Journal of Epidemiology. 2016;183(8):758-764.