Outcome-adaptive per-arm C-TMLE with strata and missing data#
This study measures CTMLE(strategy="oat") with the default oat_design="per_arm" on fits
with baseline strata (strata=), a missing outcome (delta=) or a missing treatment
(treatment_delta=). For arm \(a\) the design is the product of three factors, each fitted on the
one column \(\bar Q_n(a, W)\) inside each stratum. The
collaborative TMLE reference
states the factors and the routes. The base result is Theorem 1 of Benkeser, Cai and van der Laan
(2020), applied to the composite indicator \(C_a = \Delta_A \Delta 1\{A = a\}\).
The study pairs the fit with R
drtmle
1.1.2 at commit 538a3a2, with adapt_g = TRUE, DeltaY, DeltaA and stratify = TRUE. The
runner calls drtmle once per arm on the binary recode \(1\{A = a\}\), as the
per-arm study does. On the strata law it calls drtmle
on the rows of each stratum. Both sides read this package’s initial outcome regression.
The study publishes under the reporting policy, and it claims the point estimate only. Every
oat fit takes the generated_design_plugin status and reports no interval. The coverage and
standard-error columns below measure plugin_interval and plugin_std_error as diagnostics.
Their pass labels do not authorize ci, pvalue or std_error.
F19 owns the red truth
rows and the three red rungs of the root_n_and_efficiency ladder. The study re-declared the
ladder after the first run, and a rerun of the property phase measured it.
The re-declared ladder gives the reason.
What was compared#
setting |
|
R |
|---|---|---|
datasets |
800 samples of 2,250 rows for each law |
the identical rows |
|
\(W = (W_1, W_2, W_3)\) is independent standard normal, and the stratum \(S \in \{0, 1, 2\}\) has the masses 0.5, 0.3 and 0.2. The binary outcome reads the per-arm study’s two-arm index plus a stratum term. \(W_3\) enters only the treatment and observation laws, so it is an instrument. No row is missing |
the same |
|
the |
the same |
|
the per-arm study’s three-arm law, with an outcome that is missing at random |
the same |
|
the |
the same |
reported parameters |
|
the same |
outcome regression |
an unpenalized logistic regression on the arm indicators, \(W\), the stratum indicators, \(A \times W\) and \(A \times S\). It is correctly specified |
this package’s initial fit, passed as |
design |
for each arm, factor and stratum, an unpenalized logistic regression of the factor’s target on \((l, l^2, l^3)\), \(l = \operatorname{logit} \bar Q_n(a, W)\). |
|
targeting |
one logistic fluctuation for each arm, and for each stratum on the |
the TMLE stage of |
intervals |
pointwise 95% Wald from the per-arm curve, with RR and OR on the log scale. They are diagnostics |
the same, from |
The runner rebuilds each arm’s TMLE curve on its logistic submodel. It refuses a fit unless the
rebuilt variance equals tmle$cov[1, 1] to 1e-8. On the strata law it embeds each stratum
curve. The marginal curve is the \(P_n(S = s)\) mixture with its mass term.
tests/studies/oat_per_arm_extension_laws.py declares the laws and computes each truth by
quadrature.
Accuracy against known truth#
law |
estimand |
what was tested |
implementation |
bias (99% interval) |
coverage |
SE ratio |
result |
|---|---|---|---|---|---|---|---|
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
average treatment effect |
|
-0.0040 to 0.000874 |
0.8750 |
0.8249 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
average treatment effect |
R |
-0.0040 to 0.000874 |
0.8750 |
0.8248 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under no treatment |
|
-0.000251 to 0.0033 |
0.8975 |
0.8426 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under no treatment |
R |
-0.000251 to 0.0033 |
0.8975 |
0.8426 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment |
|
-0.0016 to 0.0016 |
0.8738 |
0.8094 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment |
R |
-0.0016 to 0.0016 |
0.8738 |
0.8094 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, reported on the log scale |
|
-0.0152 to 0.0056 |
0.8875 |
0.8237 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, reported on the log scale |
R |
-0.0152 to 0.0056 |
0.8875 |
0.8237 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, reported on the log scale |
|
-0.0076 to 0.0019 |
0.8862 |
0.8323 |
fail |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, reported on the log scale |
R |
-0.0076 to 0.0019 |
0.8862 |
0.8323 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
average treatment effect |
|
-0.0023 to 0.0031 |
0.9012 |
0.8231 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
average treatment effect |
R |
-0.0023 to 0.0032 |
0.9012 |
0.8231 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
counterfactual mean under no treatment |
|
-0.0017 to 0.0021 |
0.9125 |
0.8751 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
counterfactual mean under no treatment |
R |
-0.0017 to 0.0021 |
0.9125 |
0.8750 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
counterfactual mean under treatment |
|
-0.0013 to 0.0026 |
0.8675 |
0.7576 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
counterfactual mean under treatment |
R |
-0.0013 to 0.0026 |
0.8675 |
0.7576 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
marginal odds ratio, reported on the log scale |
|
-0.0076 to 0.0158 |
0.8950 |
0.8163 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
marginal odds ratio, reported on the log scale |
R |
-0.0076 to 0.0158 |
0.8950 |
0.8163 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
marginal risk ratio, reported on the log scale |
|
-0.0041 to 0.0064 |
0.9062 |
0.8453 |
fail |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
marginal risk ratio, reported on the log scale |
R |
-0.0041 to 0.0064 |
0.9062 |
0.8452 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect |
|
-0.000778 to 0.0033 |
0.9187 |
0.9014 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect |
R |
-0.000772 to 0.0033 |
0.9187 |
0.9013 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=0 |
|
-0.0013 to 0.0043 |
0.9250 |
0.9175 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=0 |
R |
-0.0013 to 0.0043 |
0.9250 |
0.9175 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=1 |
|
-0.0024 to 0.0043 |
0.9487 |
0.9916 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=1 |
R |
-0.0024 to 0.0043 |
0.9487 |
0.9917 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=2 |
|
-0.0032 to 0.0054 |
0.9437 |
0.9897 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=2 |
R |
-0.0032 to 0.0054 |
0.9437 |
0.9897 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment |
|
-0.0029 to 0.000181 |
0.9100 |
0.8733 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment |
R |
-0.0029 to 0.000176 |
0.9100 |
0.8733 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=0 |
|
-0.0040 to -0.000028 |
0.9313 |
0.9131 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=0 |
R |
-0.0040 to -0.000028 |
0.9313 |
0.9131 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=1 |
|
-0.0037 to 0.0015 |
0.9437 |
0.9663 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=1 |
R |
-0.0037 to 0.0015 |
0.9437 |
0.9663 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=2 |
|
-0.0035 to 0.0032 |
0.9413 |
0.9841 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=2 |
R |
-0.0035 to 0.0032 |
0.9413 |
0.9841 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment |
|
-0.0015 to 0.0012 |
0.9038 |
0.9006 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment |
R |
-0.0015 to 0.0012 |
0.9038 |
0.9006 |
fail |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=0 |
|
-0.0024 to 0.0014 |
0.9363 |
0.9241 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=0 |
R |
-0.0024 to 0.0014 |
0.9363 |
0.9241 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=1 |
|
-0.0024 to 0.0021 |
0.9450 |
0.9747 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=1 |
R |
-0.0024 to 0.0021 |
0.9450 |
0.9746 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=2 |
|
-0.0017 to 0.0036 |
0.9525 |
0.9923 |
pass |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=2 |
R |
-0.0017 to 0.0036 |
0.9525 |
0.9923 |
pass |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
difference in counterfactual means, 1 versus 0 |
|
-0.0024 to 0.0038 |
0.9062 |
0.8510 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
difference in counterfactual means, 1 versus 0 |
R |
-0.0024 to 0.0038 |
0.9062 |
0.8510 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
difference in counterfactual means, 2 versus 0 |
|
-0.0025 to 0.0037 |
0.9187 |
0.9054 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
difference in counterfactual means, 2 versus 0 |
R |
-0.0025 to 0.0037 |
0.9187 |
0.9054 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘0’ |
|
-0.0018 to 0.0024 |
0.9337 |
0.9553 |
pass |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘0’ |
R |
-0.0018 to 0.0024 |
0.9337 |
0.9553 |
pass |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘1’ |
|
-0.0012 to 0.0033 |
0.8575 |
0.7364 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘1’ |
R |
-0.0012 to 0.0033 |
0.8575 |
0.7364 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘2’ |
|
-0.0015 to 0.0034 |
0.8800 |
0.8012 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘2’ |
R |
-0.0015 to 0.0034 |
0.8800 |
0.8012 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, 1 versus 0, reported on the log scale |
|
-0.0089 to 0.0160 |
0.9100 |
0.8537 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, 1 versus 0, reported on the log scale |
R |
-0.0089 to 0.0160 |
0.9100 |
0.8538 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, 2 versus 0, reported on the log scale |
|
-0.0086 to 0.0172 |
0.9187 |
0.9047 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, 2 versus 0, reported on the log scale |
R |
-0.0086 to 0.0172 |
0.9187 |
0.9046 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, 1 versus 0, reported on the log scale |
|
-0.0051 to 0.0084 |
0.9137 |
0.8704 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, 1 versus 0, reported on the log scale |
R |
-0.0051 to 0.0084 |
0.9137 |
0.8704 |
fail |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, 2 versus 0, reported on the log scale |
|
-0.0051 to 0.0077 |
0.9300 |
0.9288 |
pass |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, 2 versus 0, reported on the log scale |
R |
-0.0050 to 0.0077 |
0.9300 |
0.9288 |
pass |
Agreement with the canonical implementation#
Comparator-backed: a paired comparison with drtmle-r-oat-per-arm-strata-missing 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 |
|---|---|---|---|---|---|---|---|---|---|
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
average treatment effect |
-1.928e-07 |
0.000048 |
1.0000 |
0 |
matching implementation |
0.000003 vs 0.0500 |
equivalent |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under no treatment |
1.930e-07 |
0.000065 |
1.0000 |
0 |
matching implementation |
0.000003 vs 0.0500 |
equivalent |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment |
1.686e-10 |
6.352e-08 |
1.0000 |
0 |
matching implementation |
2.623e-09 vs 0.0500 |
equivalent |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, reported on the log scale |
-0.000002 |
0.000049 |
1.0000 |
0 |
matching implementation |
0.000003 vs 0.0500 |
equivalent |
two arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, reported on the log scale |
-6.895e-07 |
0.000058 |
1.0000 |
0 |
matching implementation |
0.000003 vs 0.0500 |
equivalent |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
average treatment effect |
-0.000001 |
0.000293 |
1.0000 |
0 |
matching implementation |
0.000024 vs 0.0500 |
equivalent |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
counterfactual mean under no treatment |
0.000001 |
0.000405 |
1.0000 |
0 |
matching implementation |
0.000027 vs 0.0500 |
equivalent |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
counterfactual mean under treatment |
-2.499e-08 |
0.000008 |
1.0000 |
0 |
matching implementation |
0.000002 vs 0.0500 |
equivalent |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
marginal odds ratio, reported on the log scale |
-0.000014 |
0.000281 |
1.0000 |
0 |
matching implementation |
0.000023 vs 0.0500 |
equivalent |
two arms, treatment unrecorded at random given W3 and the arm, outcomes missing at random |
|
marginal risk ratio, reported on the log scale |
-0.000005 |
0.000350 |
1.0000 |
0 |
matching implementation |
0.000023 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect |
-0.000007 |
0.0020 |
1.0001 |
0 |
related target |
0.000196 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=0 |
-1.936e-08 |
0.000004 |
1.0000 |
0 |
related target |
0.000002 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=1 |
-0.000002 |
0.000408 |
1.0001 |
0 |
related target |
0.000042 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
average treatment effect, in stratum S=2 |
-0.000030 |
0.0043 |
1.0005 |
0 |
related target |
0.000727 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment |
0.000006 |
0.0022 |
1.0002 |
0 |
related target |
0.000237 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=0 |
-3.448e-09 |
0.000001 |
1.0000 |
0 |
related target |
3.806e-07 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=1 |
3.434e-07 |
0.000080 |
1.0000 |
0 |
related target |
0.000014 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under no treatment, in stratum S=2 |
0.000028 |
0.0050 |
1.0007 |
0 |
related target |
0.000838 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment |
-0.000001 |
0.000485 |
1.0000 |
0 |
related target |
0.000029 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=0 |
-2.281e-08 |
0.000007 |
1.0000 |
0 |
related target |
0.000004 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=1 |
-0.000002 |
0.000513 |
1.0000 |
0 |
related target |
0.000285 vs 0.0500 |
equivalent |
two arms, three baseline strata, an instrument, complete data, correct outcome regression |
|
counterfactual mean under treatment, in stratum S=2 |
-0.000003 |
0.000628 |
1.0001 |
0 |
related target |
0.000165 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
difference in counterfactual means, 1 versus 0 |
-0.000004 |
0.000847 |
1.0002 |
0 |
matching implementation |
0.000102 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
difference in counterfactual means, 2 versus 0 |
-0.000004 |
0.000850 |
1.0000 |
0 |
matching implementation |
0.000066 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘0’ |
0.000002 |
0.000561 |
1.0001 |
0 |
matching implementation |
0.000062 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘1’ |
-0.000002 |
0.000632 |
1.0002 |
0 |
matching implementation |
0.000106 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
counterfactual mean under treatment arm ‘2’ |
-0.000002 |
0.000601 |
1.0001 |
0 |
matching implementation |
0.000085 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, 1 versus 0, reported on the log scale |
-0.000023 |
0.000783 |
1.0001 |
0 |
matching implementation |
0.000105 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal odds ratio, 2 versus 0, reported on the log scale |
-0.000038 |
0.000895 |
1.0000 |
0 |
matching implementation |
0.000065 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, 1 versus 0, reported on the log scale |
-0.000011 |
0.000821 |
1.0001 |
0 |
matching implementation |
0.000102 vs 0.0500 |
equivalent |
three arms, outcomes missing at random given W1, W3 and the arm, correct outcome regression |
|
marginal risk ratio, 2 versus 0, reported on the log scale |
-0.000013 |
0.000855 |
1.0000 |
0 |
matching implementation |
0.000069 vs 0.0500 |
equivalent |
The paired margin of 0.15 empirical SDs in this comparator-backed study cannot detect the design change. The
shipped construction differs from this design by 0.024 to 0.079 empirical SDs on average. The
file design-gap.csv reports these gaps for the strata and missing_outcome laws. Each gap is
inside the margin. The RMSE ratio of the two designs is 0.996 to 1.005 on those rows. Thus the
RMSE ratio carries no verdict here.
test_the_pairing_reads_the_design_change in
tests/unit/test_ctmle_oat_per_arm_strata_missing_study_design.py reads the gap itself. On
every paired row, the mean of \(|\hat\psi_{\text{cleverly}} - \hat\psi_{\text{drtmle}}|\) must be
at most 0.005 empirical SDs. The largest measured value is 0.0008, for ey0[S=2] on the
strata law. The smallest mean_design_gap in design-gap.csv is 0.024. Thus the shipped
design would fail this check on every reported row.
Theory properties#
property |
cell |
role |
what was tested |
what must hold |
measured |
result |
|---|---|---|---|---|---|---|
|
|
positive |
average treatment effect: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0016 to 0.0034, margin 0.0069, SE ratio 0.8488 |
pass |
|
|
positive |
average treatment effect: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0020 to 0.0020, margin 0.0055, SE ratio 0.9447 |
pass |
|
|
control |
average treatment effect: the strata law with the outcome regression without W1, n = 3,000 |
bias interval must fall entirely outside the margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias 0.0685 to 0.0731, margin 0.0062, SE ratio 0.9692 |
pass |
|
|
positive |
average treatment effect: the strata law under the declared known weight 0.5 + 1{W1 > 0}, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0025 to 0.0021, margin 0.0064, SE ratio 0.9112 |
pass |
|
|
positive |
average treatment effect in baseline stratum S = 0: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0027 to 0.0025, margin 0.0071, SE ratio 0.9556 |
pass |
|
|
positive |
average treatment effect in baseline stratum S = 0: the strata law under the declared known weight 0.5 + 1{W1 > 0}, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0029 to 0.0030, margin 0.0081, SE ratio 0.9446 |
pass |
|
|
positive |
average treatment effect in baseline stratum S = 1: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0025 to 0.0050, margin 0.0102, SE ratio 0.9158 |
pass |
|
|
positive |
average treatment effect in baseline stratum S = 1: the strata law under the declared known weight 0.5 + 1{W1 > 0}, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0044 to 0.0038, margin 0.0112, SE ratio 0.9659 |
pass |
|
|
positive |
average treatment effect in baseline stratum S = 2: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0064 to 0.0030, margin 0.0129, SE ratio 0.9986 |
pass |
|
|
positive |
average treatment effect in baseline stratum S = 2: the strata law under the declared known weight 0.5 + 1{W1 > 0}, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0060 to 0.0043, margin 0.0141, SE ratio 1.0161 |
pass |
|
|
positive |
arm-0 mean: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0026 to 0.0012, margin 0.0052, SE ratio 0.8555 |
pass |
|
|
positive |
arm-1 mean: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0015 to 0.0019, margin 0.0046, SE ratio 0.8361 |
pass |
|
|
positive |
observed outcome mean under the natural course: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0011 to 0.0011, margin 0.0031, SE ratio 0.9920 |
pass |
|
|
positive |
observed outcome mean under the natural course: missing outcomes, in-sample per-arm design, n = 2,250, natural-course estimands |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.000289 to 0.0019, margin 0.0030, SE ratio 0.9682 |
pass |
|
|
positive |
observed outcome mean under the natural course: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.000866 to 0.000975, margin 0.0025, SE ratio 1.0171 |
pass |
|
|
positive |
observed outcome mean in baseline stratum S = 0: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0012 to 0.0014, margin 0.0036, SE ratio 0.9926 |
pass |
|
|
positive |
observed outcome mean in baseline stratum S = 1: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0015 to 0.0019, margin 0.0046, SE ratio 1.0114 |
pass |
|
|
positive |
observed outcome mean in baseline stratum S = 2: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0025 to 0.0018, margin 0.0059, SE ratio 1.0225 |
pass |
|
|
positive |
marginal odds ratio: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias 0.0037 to 0.0606, margin 0.0780, SE ratio 0.8489 |
pass |
|
|
positive |
population attributable fraction: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0014 to 0.0041, margin 0.0075, SE ratio 0.7722 |
pass |
|
|
positive |
population attributable fraction: missing outcomes, in-sample per-arm design, n = 2,250, natural-course estimands |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0031 to 0.0020, margin 0.0069, SE ratio 0.7832 |
pass |
|
|
positive |
population attributable fraction: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0025 to 0.0020, margin 0.0061, SE ratio 0.9121 |
pass |
|
|
positive |
population attributable fraction in baseline stratum S = 0: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0028 to 0.0027, margin 0.0075, SE ratio 0.8943 |
pass |
|
|
positive |
population attributable fraction in baseline stratum S = 1: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0032 to 0.0048, margin 0.0110, SE ratio 0.9162 |
pass |
|
|
positive |
population attributable fraction in baseline stratum S = 2: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0083 to 0.0034, margin 0.0160, SE ratio 1.0113 |
pass |
|
|
positive |
population attributable risk: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.000810 to 0.0022, margin 0.0041, SE ratio 0.7632 |
pass |
|
|
positive |
population attributable risk: missing outcomes, in-sample per-arm design, n = 2,250, natural-course estimands |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0016 to 0.0012, margin 0.0038, SE ratio 0.7746 |
pass |
|
|
positive |
population attributable risk: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0014 to 0.0011, margin 0.0034, SE ratio 0.9067 |
pass |
|
|
positive |
population attributable risk in baseline stratum S = 0: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0016 to 0.0014, margin 0.0041, SE ratio 0.8909 |
pass |
|
|
positive |
population attributable risk in baseline stratum S = 1: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0018 to 0.0026, margin 0.0060, SE ratio 0.9166 |
pass |
|
|
positive |
population attributable risk in baseline stratum S = 2: three strata with missing outcomes, cross-fitted per-arm design per stratum, n = 3,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0043 to 0.0019, margin 0.0085, SE ratio 1.0132 |
pass |
|
|
positive |
marginal risk ratio: missing outcomes, five-fold cross-fitted per-arm design, n = 2,000 |
bias interval inside the equivalence margin, SE ratio inside (0.1, 10), SE ratio must remain between 0.1 and 10.0 |
bias -0.0014 to 0.0138, margin 0.0208, SE ratio 0.8567 |
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.000923, coverage 0.8963 to 0.9460, SE ratio 0.9292 |
fail |
|
|
positive |
bias, coverage and SE calibration at n = 4,000 |
bias inside the margin, coverage clears the floor, SE ratio inside the sanity band |
bias 0.000466, coverage 0.8992 to 0.9481, SE ratio 0.8955 |
fail |
|
|
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.000447, coverage 0.8949 to 0.9449, SE ratio 0.8812 |
fail |
|
|
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.5636 to -0.4362 |
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.5700 to -0.5183 |
pass |
The robustness_contract cells measure the bias of the point estimate. Each positive cell passes
when its bias interval is inside the equivalence margin. The control fits an outcome model without
\(W_1\) and passes when its bias is outside the margin. The root_n_and_efficiency ladder fits the
strata law with a missing outcome and five folds, and reads the marginal ATE.
The three rungs are n = 2,000, 4,000 and 8,000. Each rung has an equivalent bias, and each
coverage interval reaches below the 0.90 floor. The root_n_rate rows read the slopes of the
log empirical SD and of the log mean standard error on log n. Both slopes are inside the root-n
band.
Each rr and or row records the standard error of \(\log \hat\psi\). The summary multiplies it
by \(\hat\psi\), the delta-method standard error of \(\hat\psi\), before it compares it with the
empirical SD of \(\hat\psi\). The first summary of the rerun did not, and it published SE ratios of
0.559 for rr and 0.322 for or. The current properties.csv was summarized again from the
committed property-replicates.csv.gz, with no new fit. No verdict changed.
test_the_ratio_cells_compare_one_scale checks both readings.
A mean SE ratio is sensitive to a few fits with a large standard error. The table gives the
median beside the mean for the ladder and for the cells that have a tail fit. A tail fit has a
standard error above twice the empirical SD of its cell. se_ratio_spread in
tests/studies/ctmle_oat_per_arm_strata_missing_properties.py computes the table from
property-replicates.csv.gz, and test_the_tail_fits_are_rare checks it.
cell |
mean SE ratio |
median SE ratio |
tail fits of 800 |
|---|---|---|---|
|
0.929 |
0.898 |
3 |
|
0.896 |
0.893 |
0 |
|
0.881 |
0.880 |
0 |
|
0.945 |
0.925 |
2 |
|
0.999 |
0.946 |
2 |
|
1.017 |
1.011 |
2 |
|
1.023 |
1.006 |
2 |
|
0.907 |
0.877 |
1 |
|
1.013 |
0.948 |
2 |
|
0.912 |
0.885 |
1 |
|
1.011 |
0.950 |
2 |
|
1.016 |
0.997 |
1 |
|
0.969 |
0.907 |
5 |
In the strata_missing cells, the two tail fits are replications 271 and 605. They lift the
mean SE ratio of the \(S = 2\) ate, par and paf cells 5% to 7% above its median. No cell
outside the table and no primary row has a tail fit.
Measured values#
Names beginning margin: are thresholds declared before the run. Everything else is measured from
the committed results and checked at the precision printed.
quantity |
value |
source |
|---|---|---|
|
800 |
primary replications per law |
|
2250 |
observations per primary replication |
|
62 |
implementation-estimand tests against the truth |
|
20 |
of those, passing |
|
31 |
paired comparisons with R |
|
31 |
of those, passing |
|
0.0926 |
largest absolute primary bias in empirical standard deviations |
|
0.8575 |
lowest primary coverage of the diagnostic interval |
|
0.6898 |
lowest bootstrap primary SE-ratio endpoint |
|
1.0584 |
highest bootstrap primary SE-ratio endpoint |
|
0.0050 |
largest share of the paired margin used |
|
341 |
primary fits with one or more rows of a factor at a declared bound |
|
4.491e-07 |
largest gap between the two designs in a fit with no row at a bound |
|
0.0100 |
largest gap between the two designs in any fit |
|
0.9447 |
SE ratio of the marginal ATE on the strata law at n = 3,000 |
|
2.8427 |
bias of the outcome-wrong control, in empirical standard deviations |
|
0.0500 |
nominal size of the reported intervals |
|
10000 |
resamples behind every bootstrap interval |
|
0.9900 |
confidence level of every Monte Carlo interval |
|
0.9000 |
validity floor the coverage lower endpoint must clear |
|
-0.0250 |
smallest external-comparison coverage difference bound |
|
0.0500 |
largest external-comparison calibration excess bound |
|
0.9200 |
calibration-cell coverage band, lower limit |
|
0.9800 |
calibration-cell coverage band, upper limit |
|
0.9300 |
calibration-cell SE-ratio band, lower limit |
|
1.0700 |
calibration-cell SE-ratio band, upper limit |
|
0.8000 |
rejection lower bound the power cell must clear |
|
0.1000 |
the rate the null cell must bound |
|
-0.2500 |
slower rate a root-n interval must exclude |
|
0.9500 |
nominal coverage those intervals claim |
|
0.9900 |
above this, coverage is conservative rather than invalid |
|
0.1500 |
paired similarity margin, in pooled empirical standard deviations |
|
1.1000 |
largest external-comparison RMSE ratio bound |
|
-0.5000 |
contraction rate root-n asymptotics predict |
|
-0.6250 |
accepted root-n slope band, lower limit |
|
-0.3750 |
accepted root-n slope band, upper limit |
|
0.8000 |
SE-ratio screen, lower limit |
|
1.2000 |
SE-ratio screen, upper limit |
|
0.2500 |
bias equivalence margin, in empirical standard deviations |
|
0.1000 |
robustness-contract SE-ratio screen, lower limit |
|
10 |
robustness-contract SE-ratio screen, upper limit |
The reading rule and the red rows#
The study declared its reading rule before the run, in READING_RULE of
tests/studies/canonical_ctmle_oat_per_arm_strata_missing.py. A red row goes to F19 when its bias
is equivalent and its SE ratio is below 1. The upper end of its 99% SE-ratio interval must also be
below 1.07. For a ladder rung, a bootstrap interval of the SE ratio gives that upper end. Every
other red row is a defect suspect.
A floor was added to the rule after the run. A routed row must also have a point SE ratio of 0.70
or more. A shorter standard error is a defect suspect, because it is too short for the
generated-design term to explain. The lowest routed row is ey[1] on the three_arm_missing law,
at 0.736 for both implementations. Thus the floor changes no routing of this run.
red rows |
count |
reading |
owner |
|---|---|---|---|
truth rows of both implementations |
42 |
short diagnostic standard error, equivalent bias. Both implementations read the same rows alike |
F19 |
|
3 |
coverage interval reaches below 0.90, equivalent bias, SE ratios 0.929, 0.896 and 0.881, bootstrap upper ends 1.0065, 0.952 and 0.940 |
F19 |
No paired row, robustness_contract cell or control is red, and no replication failed. Both
root_n_rate rows pass. The empirical SD contracts at a slope of -0.499, and the mean standard
error at -0.537.
The re-declared ladder#
The first run declared the ladder at n = 500, 2,000 and 8,000. The n_500 rung measured the
stability of the factor learner in small cells and not the rate. After the run, the study dropped
that rung and re-declared the ladder at n = 2,000, 4,000 and 8,000. The rerun of the property
phase replaced the first run’s property artifacts. The first run is commit ae53bbb.
The table gives what the n_500 rung measured in the first run.
quantity |
value |
|---|---|
mean diagnostic standard error |
0.0884 |
empirical SD of the marginal ATE |
0.0561 |
mean SE ratio |
1.575 |
median standard error over the empirical SD |
1.00 |
fits with a standard error above twice the empirical SD |
40 of 800 (5%) |
mean SE ratio without those fits |
1.035 |
coverage of the diagnostic interval |
0.954 |
|
-0.71 (-0.79 to -0.63) |
|
-0.50 |
slope of the median standard error |
-0.55 |
The reading rule made n_500 and root_n_rate/reported_se defect suspects. A diagnosis refitted
the ladder replications and found no defect in the code.
finding |
value |
|---|---|
rows in the stratum, arm and fold cell that fits each factor at n = 500 |
about 20 to 35; 29.3 expected in the smallest cell |
estimated design at the row that dominates a tail fit |
far below 0.01 |
true design at those rows |
0.11 or more |
largest gap between the fit’s curve and the textbook curve |
1e-13 |
tail fits at n = 2,000 and at n = 8,000 |
3 of 800, and none |
In a small cell the unpenalized cubic factor learner extrapolates. One or two observed rows then get a very small design, and their term \(C_a / G\, (Y - \bar Q^*)\) dominates the plug-in variance. The point estimate does not change, so its bias stays inside the margin.
The re-declaration added condition (t). As declared, it required the smallest factor training cell to hold 100 rows or more in expectation at the smallest rung. That cell is arm 0 in the stratum \(S = 2\), with a share of 0.0732 of the rows. Four fifths of the rows train each fold, so the cell holds 117.1 rows at n = 2,000.
The row count is not the quantity that limits a factor fit. Each factor is a logistic regression
on a binary target, and its smaller class limits it. On the strata law the smaller class is the
nonrespondents of arm 0 in \(S = 2\). After the rerun, the study restated condition (t) as the
expected size of the smallest class for each stratum, arm, fold and factor. The restated
condition sets no floor, because the declared ladder does not hold 100 such rows.
smallest_minority_class in tests/studies/oat_per_arm_extension_laws.py computes the count by
quadrature.
configuration |
n |
rows that train each fit |
smallest class |
expected count |
tail fits of 800 |
|---|---|---|---|---|---|
dropped |
500 |
four fifths |
nonrespondents, arm 0, \(S = 2\) |
9.9 |
40 |
|
2,000 |
four fifths |
nonrespondents, arm 0, \(S = 2\) |
39.5 |
3 |
|
3,000 |
four fifths |
nonrespondents, arm 0, \(S = 2\) |
59.2 |
2 |
|
4,000 |
four fifths |
nonrespondents, arm 0, \(S = 2\) |
79.0 |
0 |
|
2,000 |
four fifths |
nonrespondents, arm 1 |
107.0 |
0 |
primary |
2,250 |
all |
nonrespondents, arm 1 |
110.5 |
0 |
primary |
2,250 |
all |
nonrespondents, arm 0 |
116.4 |
0 |
primary |
2,250 |
all |
nonrespondents, arm 1 |
150.5 |
0 |
|
8,000 |
four fifths |
nonrespondents, arm 0, \(S = 2\) |
157.9 |
0 |
primary |
2,250 |
all |
arm 0 in \(S = 2\) |
164.7 |
0 |
The weighted and the outcome-wrong cells sample the strata law at n = 3,000, so their count is
59.2 too. They hold 1 and 5 tail fits. The measured consequence of a small class is a rare tail
fit. It moves the mean SE ratio of a cell and not its bias.
test_condition_t_the_smallest_minority_class_of_each_configuration checks each count.
Condition (r) does not read n, so each rung keeps 800 replications, with a pass
probability of 0.950. The primary laws, the pairing, the robustness cells and the seeds do not
change. tests/studies/ctmle_oat_per_arm_strata_missing_properties.py records the change.
Limitations#
limitation |
what it means for use |
|---|---|
No cell measures published inference |
Every |
The diagnostic standard error is too small on the primary laws |
The primary SE ratios run from |
The diagnostic standard error is heavy-tailed in small factor cells |
In the first run, at n = 500, the smallest class of a factor target held about 10 rows, and the mean standard error was 1.575 times the empirical SD. The ladder now starts at n = 2,000, where that class holds 39.5 rows and 3 of 800 fits have a tail. The re-declared ladder gives the measurement |
The paired strata law has complete data |
The |
The points are paired, not the intervals |
All 31 paired rows are equivalent, with |
The designs agree only off the bounds |
Where no factor row sits at a bound, the two designs agree to |
Parametric laws with a binary outcome |
Each law has a normal index for each arm and one instrument. A continuous outcome and more than three arms have fast-tier evidence only |
Clusters stay refused |
A per-arm fit with |
Reproduction#
The manifest
records the seeds, the margins, the reading rule, the estimator configuration and the hashes. Run
python -m tests.canonical.drtmle_oat_per_arm_strata_missing.regenerate to regenerate the
artifacts. The
replications,
paired decisions,
design gap
and property results
carry every published row. The post-run gate in
tests/unit/test_ctmle_oat_per_arm_strata_missing_study_design.py applies the reading rule to the
committed tables.