Ordinary missing-outcome natural-course TMLE#
This study validates ordinary, non-cross-fitted TMLE for the observed outcome mean under MAR.
The target averages the outcome regression over the empirical joint distribution of treatment and
baseline covariates. Its score therefore uses the outcome and response nuisances, but no treatment
mechanism. Binary and bounded-continuous primary laws share the same conditional means and
observation process; the continuous outcome is beta distributed and uses fixed bounds (0, 1).
The study compares both primary laws with the R tmle 2.1.1 population-mean path. The
comparison conditions on the outcome and response predictions of the cleverly fit.
Comparator gives the adapter and its checks.
Díaz, Carone and van der Laan (2016), Section 2 and Equations (1)–(5) give the estimator
construction. tests/unit/test_influence_gateaux_natural_course_mar.py pins the target, the
efficient influence curve, and the targeting score against the exact law.
tests/unit/test_remainder_natural_course_mar.py pins the signed second-order remainder and both
double-robustness halves. This repeated-sampling study supplies the rest.
Comparator#
The study compares R tmle 2.1.1. The adapter tests/canonical/tmle_mar_natural_course/run_study.R
supplies the outcome and response predictions that cleverly targets. The
R tmle audit gives the source lines of
this path. The table gives the arguments of each call.
argument |
value |
|---|---|
|
|
|
the original treatment and |
|
the realized-arm outcome prediction, in both columns |
|
|
|
the response prediction, in both columns |
|
|
|
|
|
|
The runner stops when R refits a supplied nuisance. It also stops when a response prediction is at
or below gbound, because R would clip that prediction.
R takes a continuous outcome scale from every non-NA Y (tmle.R line 1120). A continuous fit
therefore sets Y to 0 and 1 on the first two rows whose response indicator is zero. The
indicator removes those rows from the fluctuation and the curve. Before each fit, the runner
checks that R takes the scale c(0, 1). probe_scale_workaround.R checks the workaround on
every continuous replication, and it writes scale-probe.csv.
probe check |
requirement |
|---|---|
scale with the planted rows |
equal to |
scale without the planted rows |
different from |
planted rows moved to two other eligible rows |
point and curve bitwise unchanged |
independent rebuild at the |
point and curve within |
|
above zero |
The regeneration refuses publication when a probe row fails or a continuous replication has no
row. tests/unit/test_mar_natural_course_method_study.py checks that every committed row passes.
The witness unplanted_point_difference is small for this law. The observed range of the Beta
outcome already lies close to (0, 1). The planted rows therefore move the estimate very little.
scale-probe.csv records the unplanted scale and the witness of each replication.
The probe shows that the workaround sets the R scale exactly. The targeting-ratio check below
cannot detect a missing workaround. In almost every replication, the witness is below 1e-2 of
the targeting move, so that check admits it. The source is the witness in scale-probe.csv and
the targeting move in replicates.csv.gz.
A separate witness check compares abs(cleverly - R) with the witness in each continuous
replication. An estimate at the unplanted scale sits about one witness from the R point. The
check requires abs(cleverly - R) at or below 1e-2 of the witness in every replication. This
bound was chosen after the regeneration, from the committed rows. The witness has no lower bound
for this law, so the check covers the committed replications only.
This comparison conditions on the supplied nuisance predictions. It validates the targeting, the plug-in, the influence curve, and the variance. It does not compare nuisance training.
The paired tests alone cannot show that cleverly targets. The oracle nuisances leave the initial
plug-in unbiased, so an estimate without its targeting step still passes every paired test and
every truth test. Separate checks over the committed replications carry that claim and the
variance rule.
check |
requirement |
|---|---|
targeting move, |
nonzero in every replication |
|
below |
initial estimates of the two implementations |
equal to |
|
below |
|
at or below |
mutation: |
the ratio exceeds |
mutation: the standard error times |
the relative difference reaches |
mutation: the |
the witness ratio exceeds |
R tmle stops its fluctuation glm at a relative deviance change of 1e-8. That stop resolves
the fluctuation coefficient to about 1e-4 of its scale, and the ratio bound allows a hundredfold
over that. The second mutation is the uncentered second-moment rule of the stacked study. At
n = 2000 it differs from R by a relative 2.5e-4, and the SE bound sits two orders below that
gap. Commit 0605650 declared every bound except the witness bound before the regeneration.
tests/unit/test_mar_natural_course_method_study.py runs the checks and the three mutations.
Accuracy against known truth#
law |
estimand |
what was tested |
implementation |
bias (99% interval) |
coverage |
SE ratio |
result |
|---|---|---|---|---|---|---|---|
binary-outcome observational natural-course law with MAR outcomes |
|
observed outcome mean under the natural course |
|
-0.000474 to 0.0029 |
0.9350 |
0.9468 |
pass |
binary-outcome observational natural-course law with MAR outcomes |
|
observed outcome mean under the natural course |
R |
-0.000474 to 0.0029 |
0.9350 |
0.9468 |
pass |
bounded continuous-outcome observational natural-course law with MAR outcomes |
|
observed outcome mean under the natural course |
|
-0.000306 to 0.000726 |
0.9375 |
0.9687 |
pass |
bounded continuous-outcome observational natural-course law with MAR outcomes |
|
observed outcome mean under the natural course |
R |
-0.000306 to 0.000726 |
0.9375 |
0.9687 |
pass |
Agreement with the canonical implementation#
Comparator-backed: a paired comparison with tmle-r-population-mean on the same samples. Each row reports estimate equivalence within the declared margin, the RMSE ratio and the coverage difference, and names its comparison kind.
law |
estimand |
what was compared |
paired difference |
share of margin used |
RMSE ratio bound |
coverage difference |
comparison kind |
calibration resolution |
result |
|---|---|---|---|---|---|---|---|---|---|
binary-outcome observational natural-course law with MAR outcomes |
|
observed outcome mean under the natural course |
-4.741e-13 |
1.734e-10 |
1.0000 |
0 |
matching implementation |
2.429e-11 vs 0.0500 |
equivalent |
bounded continuous-outcome observational natural-course law with MAR outcomes |
|
observed outcome mean under the natural course |
-6.072e-14 |
7.158e-11 |
1.0000 |
0 |
matching implementation |
7.497e-12 vs 0.0500 |
equivalent |
In this comparator-backed study, both implementations use the centered, n - 1 divisor variance var(IC) / n. A non-cross-fitted
natural-course fit in cleverly declares that rule (covariance_rule in
src/cleverly/estimators/tmle.py). R bounds a binary-outcome interval to [0, 1], and cleverly
reports an unbounded Wald interval. No committed interval reaches either bound.
Theory properties#
property |
cell |
role |
what was tested |
what must hold |
measured |
result |
|---|---|---|---|---|---|---|
|
|
positive |
both the outcome regression and the outcome-response mechanism are correct |
bias interval inside the equivalence margin, with the reported standard error on the scale of the empirical spread |
bias -0.0017 to 0.000937, margin 0.0044, SE ratio 0.9913 |
pass |
|
|
control |
both nuisances are misspecified |
bias interval must fall entirely outside the margin, with the reported standard error still on the scale of the empirical spread |
bias -0.0156 to -0.0135, margin 0.0034, SE ratio 1.5919 |
pass |
|
|
positive |
only the outcome regression is correctly specified |
bias interval inside the equivalence margin, with the reported standard error on the scale of the empirical spread |
bias -0.000619 to 0.0012, margin 0.0031, SE ratio 1.5107 |
pass |
|
|
positive |
only the outcome-observation mechanism is correctly specified |
bias interval inside the equivalence margin, with the reported standard error on the scale of the empirical spread |
bias -0.0010 to 0.0020, margin 0.0051, SE ratio 1.0152 |
pass |
|
|
positive |
observed outcome mean under the natural course: both nuisances are correctly specified with an independently computed efficiency bound |
SE ratio and coverage intervals both inside their calibration bands, with both efficiency-ratio intervals inside their bands |
coverage 0.9440 to 0.9614, SE ratio 0.9745 to 1.0307, empirical efficiency ratio 0.9690 to 1.0250, reported efficiency ratio 0.9977 to 0.9996 |
pass |
|
|
control |
observed outcome mean under the natural course: one efficiency-bound unit of independent noise is added to each estimate |
the empirical efficiency ratio must rise above the band |
coverage 0.8251 to 0.8551, SE ratio 0.6943 to 0.7341, empirical efficiency ratio 1.3604 to 1.4383, reported efficiency ratio 0.9977 to 0.9996 |
pass |
|
|
control |
observed outcome mean under the natural course: the reported standard errors are multiplied by a declared factor below one |
the SE-ratio interval must fall below the calibration band |
coverage 0.8113 to 0.8424, SE ratio 0.6820 to 0.7218, empirical efficiency ratio 0.9686 to 1.0248, reported efficiency ratio 0.6984 to 0.6997 |
pass |
|
|
control |
observed outcome mean under the natural course: the identical estimator silently discards unobserved outcomes and ignores selection |
bias interval must fall entirely outside the margin |
bias -0.0075 to -0.0052, margin 0.0040 |
pass |
|
|
positive |
observed outcome mean under the natural course: the observation indicator is declared, so correct mechanisms carry a wrong outcome model |
bias interval inside the equivalence margin |
bias -0.0013 to 0.0017, margin 0.0051 |
pass |
|
|
positive |
bias, coverage and SE calibration at n = 2,000 |
bias inside the margin, coverage clears the floor, SE ratio inside the sanity band |
bias -0.000060, coverage 0.9356 to 0.9737, SE ratio 1.0358 |
pass |
|
|
control |
bias, coverage and SE calibration at n = 500 |
coverage interval lies below nominal or clears the declared floor |
bias -0.0012, coverage 0.9341 to 0.9727, SE ratio 1.0312 |
pass |
|
|
positive |
bias, coverage and SE calibration at n = 8,000 |
bias inside the margin, coverage clears the floor, SE ratio inside the sanity band |
bias 0.000133, coverage 0.9121 to 0.9575, SE ratio 0.9658 |
pass |
|
|
positive |
log empirical spread of the estimates regressed on log n across three sizes |
slope interval inside the root-n band and excluding -1/4 |
slope -0.5092 to -0.4417 |
pass |
|
|
positive |
the same regression applied to the mean reported standard error |
slope interval inside the root-n band and excluding -1/4 |
slope -0.5003 to -0.4973 |
pass |
|
|
positive |
observed outcome mean under the natural course: the estimator fluctuates a misspecified outcome model, so targeting does all the adjusting |
bias interval inside the equivalence margin |
bias -0.0019 to 0.0012, margin 0.0052 |
pass |
|
|
control |
observed outcome mean under the natural course: the identical fit with every fluctuation step removed |
bias interval must fall entirely outside the margin |
bias 0.0117 to 0.0123, margin 0.0011 |
pass |
The property law tests the two-nuisance union model: either the outcome regression or the response mechanism may be correct, and a both-wrong cell must discriminate the resulting bias. Separate cells test three-size root-n behavior, exact-EIF efficiency, repeated-sampling interval calibration and its two mutations, the targeting update, and the bias induced by silently analyzing complete cases.
Measured values and declared margins#
quantity |
value |
source |
|---|---|---|
|
800 |
primary replications per law |
|
2000 |
observations per primary replication |
|
4 |
truth tests passing |
|
4 |
truth tests reported |
|
2 |
paired comparisons passing |
|
2 |
paired comparisons reported |
|
16 |
property cells passing |
|
16 |
property cells reported |
|
0.0653 |
largest primary standardized bias |
|
0.9350 |
lowest primary coverage |
|
0.9900 |
Monte Carlo confidence level |
|
0.0500 |
nominal test size |
|
0.9500 |
nominal interval coverage |
|
10000 |
bootstrap replications |
|
0.2500 |
standardized-bias margin |
|
0.9000 |
primary coverage floor |
|
0.9900 |
descriptive overcoverage threshold |
|
0.8000 |
primary SE-ratio lower screen |
|
1.2000 |
primary SE-ratio upper screen |
|
0.9300 |
calibration SE-ratio lower bound |
|
1.0700 |
calibration SE-ratio upper bound |
|
0.9200 |
calibration coverage lower bound |
|
0.9800 |
calibration coverage upper bound |
|
0.1000 |
type-I upper bound |
|
0.1500 |
paired similarity margin in pooled SDs |
|
1.1000 |
RMSE-ratio noninferiority bound |
|
-0.0250 |
coverage-difference noninferiority bound |
|
0.0500 |
calibration-excess noninferiority bound |
|
0.8000 |
minimum power lower bound |
|
-0.5000 |
expected root-n slope |
|
-0.6250 |
root-n slope lower bound |
|
-0.3750 |
root-n slope upper bound |
|
-0.2500 |
slower rate the interval must exclude |
|
0.1000 |
union-model SE-ratio screen, lower limit |
|
10 |
union-model SE-ratio screen, upper limit |
|
0.7000 |
negative-control SE multiplier |
|
0.9000 |
efficiency-ratio lower bound |
|
1.1000 |
efficiency-ratio upper bound |
|
0.2500 |
minimum targeting displacement |
|
0.2500 |
minimum complete-case displacement |
|
0.0173 |
exact binary-law EIF standard error at primary n |
Limits#
The primary study covers binary treatment, one three-level baseline covariate, binary and beta-distributed bounded-continuous outcomes, and one observational MAR response mechanism.
The response probabilities and binary outcome regression are finite-law oracles. The continuous primary law uses a correctly specified affine outcome learner fit to the scaled observed outcomes. This does not validate flexible learner wrappers or cross-fitting.
The exact efficiency comparison is for the binary property law; the continuous primary law is checked for truth recovery, coverage, and reported-SE calibration without claiming the same bound.
The external comparison conditions on the supplied outcome and response predictions. It does not compare nuisance training.
The scale probe shows that the planted rows set the R scale exactly. For this law the unplanted fit differs only slightly. Neither the paired tests nor the targeting-ratio check would detect a missing workaround. The witness check carries that claim, with a bound chosen after the regeneration, for the committed replications only.
The study uses ordinary pointwise Wald intervals and excludes weights, clusters, missing treatment, multinomial treatment, MNAR outcomes, sensitivity analysis, and longitudinal data.
Reproduction#
The fixture README, manifest, replications, performance decisions, paired comparisons, scale probe, and property results carry the protocol, provenance, and every published row.