Clustered point-treatment CV-TMLE at unequal cluster sizes#
This study validates cluster-robust inference for cross-fitted point-treatment TMLE when the
clusters differ in size and the size enters the outcome. Each replication draws 200 clusters. The
size of each cluster is uniform on 2 to 18 rows, so a draw holds about 2,000 rows. The law is
declared in tests/studies/clustered_unequal_laws.py. It keeps the propensity and the main terms
of clustered_dgp(family="binomial"), removes the arm-by-latent term, and adds
\(\delta\,s(N)+\gamma\,a\,s(N)\) to the outcome logit with \(s(N)=(N-10)/\sqrt{24}\), \(\delta=1\) and
\(\gamma=-3\). The size does not enter the propensity.
The fit estimates the row-weighted mean \(\mu_I\) of Wang, Park, Small and Li (2024), Section 2. Weights equal to one over the cluster size give the cluster-average mean \(\mu_C\). On this law the two ATEs are -0.1213 and 0.1267. A pilot declared before the run measured their gap at 6.42 standard deviations of the stacked ATE. The law module records that pilot and the decision that replaced the plan’s first pilot rule.
scenario |
sizes |
truth |
|---|---|---|
|
uniform on 2 to 18, absent from the outcome |
\(\mu_I=\mu_C\) |
|
uniform on 2 to 18, in the outcome |
\(\mu_I\) |
|
the samples of |
\(\mu_C\) |
No canonical implementation is compared. Of the pinned implementations only R ltmle
aggregates a clustered curve by cluster sums, and it does not cross-fit. The
cluster survey records each comparator.
What was fitted#
setting |
value |
|---|---|
construction |
stacked point-treatment CV-TMLE |
folds |
five grouped folds from |
treatment mechanism |
exact propensity from the law |
outcome regression |
unpenalized logistic regression, |
independent unit |
the cluster, aggregated as cluster sums |
intervals |
pointwise 95% Wald, normal reference at 200 clusters |
Every row publishes the nominal n = 2000, because the schema requires each row to carry the
record’s size. The realized row count varies by draw.
Accuracy against known truth#
law |
estimand |
what was tested |
implementation |
bias (99% interval) |
coverage |
SE ratio |
result |
|---|---|---|---|---|---|---|---|
200 clusters of size uniform on 2 to 18, the size in the outcome; truth the row-weighted mean |
|
average treatment effect |
|
-0.0059 to 0.0011 |
0.9513 |
1.0140 |
pass |
200 clusters of size uniform on 2 to 18, the size in the outcome; truth the row-weighted mean |
|
counterfactual mean under no treatment |
|
-0.0011 to 0.0028 |
0.9550 |
1.0094 |
pass |
200 clusters of size uniform on 2 to 18, the size in the outcome; truth the row-weighted mean |
|
counterfactual mean under treatment |
|
-0.0039 to 0.000764 |
0.9500 |
1.0252 |
pass |
the informative samples weighted by one over the cluster size; truth the cluster-average mean |
|
average treatment effect |
|
-0.0065 to 0.0013 |
0.9587 |
1.0081 |
pass |
the informative samples weighted by one over the cluster size; truth the cluster-average mean |
|
counterfactual mean under no treatment |
|
-0.0012 to 0.0031 |
0.9625 |
1.0293 |
pass |
the informative samples weighted by one over the cluster size; truth the cluster-average mean |
|
counterfactual mean under treatment |
|
-0.0043 to 0.000928 |
0.9525 |
1.0067 |
pass |
200 clusters of size uniform on 2 to 18, the size absent from the outcome |
|
average treatment effect |
|
-0.0026 to 0.0018 |
0.9287 |
0.9644 |
pass |
200 clusters of size uniform on 2 to 18, the size absent from the outcome |
|
counterfactual mean under no treatment |
|
-0.000548 to 0.0030 |
0.9437 |
0.9633 |
pass |
200 clusters of size uniform on 2 to 18, the size absent from the outcome |
|
counterfactual mean under treatment |
|
-0.000889 to 0.0026 |
0.9487 |
0.9921 |
pass |
Repeated-sampling properties#
property |
cell |
role |
what was tested |
what must hold |
measured |
result |
|---|---|---|---|---|---|---|
|
|
diagnostic |
the cluster mean of the curve, as R tmle 2.1.1 and tmle3 aggregate it |
reported only |
coverage 0.9570 to 0.9761, SE ratio 1.1337 |
reported |
|
|
diagnostic |
the cluster sum of the curve, as this package and R ltmle aggregate it |
reported only |
coverage 0.9356 to 0.9593, SE ratio 1.0161 |
reported |
|
|
positive |
five-fold point-treatment TMLE with cluster-robust ATE inference |
SE-ratio and coverage intervals both stay inside their calibration bands |
coverage 0.9420 to 0.9645, SE ratio 0.9616 to 1.0360, paired coverage gain 0.1858 to 0.2279 |
pass |
|
|
positive |
cross-fitted DR-TMLE at unequal cluster sizes with cluster-robust inference |
SE-ratio and coverage intervals both stay inside their calibration bands |
coverage 0.9351 to 0.9589, SE ratio 0.9584 to 1.0343, paired coverage gain 0.1696 to 0.2100 |
pass |
|
|
positive |
fold-evaluated CV-TMLE at unequal cluster sizes, centered cluster variance per fold |
SE-ratio and coverage intervals both stay inside their calibration bands |
coverage 0.9402 to 0.9630, SE ratio 0.9817 to 1.0573, paired coverage gain 0.1725 to 0.2146 |
pass |
|
|
positive |
fold-evaluated CV-TMLE of the treated mean, 40 clusters in 10 folds, a covariate shared within a cluster |
SE-ratio and coverage intervals both stay inside their calibration bands |
coverage 0.9182 to 0.9450, SE ratio 0.9453 to 1.0187, paired coverage gain 0.4021 to 0.4542 |
fail |
|
|
control |
the identical rows, point estimates, and influence curves treated as independent |
the SE-ratio upper endpoint must not exceed the declared IID-control ceiling |
coverage 0.7244 to 0.7704, SE ratio 0.5655 to 0.6080, paired coverage gain 0.1858 to 0.2279 |
pass |
|
|
control |
the DR-TMLE curve treated as independent rows |
the SE-ratio upper endpoint must not exceed the declared IID-control ceiling |
coverage 0.7347 to 0.7801, SE ratio 0.5664 to 0.6110, paired coverage gain 0.1696 to 0.2100 |
pass |
|
|
control |
the fold-evaluated fit’s curve treated as independent rows |
the SE-ratio upper endpoint must not exceed the declared IID-control ceiling |
coverage 0.7360 to 0.7813, SE ratio 0.5782 to 0.6222, paired coverage gain 0.1725 to 0.2146 |
pass |
|
|
control |
the same fold-evaluated curve treated as independent rows |
the SE-ratio upper endpoint must not exceed the declared IID-control ceiling |
coverage 0.4781 to 0.5310, SE ratio 0.3326 to 0.3580, paired coverage gain 0.4021 to 0.4542 |
pass |
|
|
control |
the unweighted interval against the cluster-average mean |
exact coverage upper bound falls below 0.50 |
coverage 0 to 0.0022 |
pass |
|
|
positive |
the interval with weights of one over the cluster size against the cluster-average mean |
exact coverage lower bound clears the floor |
coverage 0.9406 to 0.9634 |
pass |
|
|
positive |
the unweighted interval against the row-weighted mean |
exact coverage lower bound clears the floor |
coverage 0.9379 to 0.9611 |
pass |
|
|
control |
the weighted interval against the row-weighted mean |
exact coverage upper bound falls below 0.50 |
coverage 0 to 0.0022 |
pass |
The clustered_inference family fits four pairs. Each pair reads one fit and changes only the
variance aggregation. The stacked, fold-evaluated and DR-TMLE pairs read the informative law. The
fourth pair reads a law with a covariate shared within each cluster, at 40 clusters of 30 rows in
10 folds, for the treated mean. That pair is the configuration of the fold-evaluated variance
defect this release fixes.
The estimand_weighting family fits each draw twice, unweighted and
with weights one over the size. Each interval must cover its own estimand and must miss the other.
The cluster_aggregation_rule family reports the cluster-mean rule of R tmle 2.1.1 and tmle3
beside the cluster sum.
Measured values and declared margins#
quantity |
value |
source |
|---|---|---|
|
800 |
primary replications |
|
2000 |
nominal observations per replication |
|
9 |
truth tests passing |
|
9 |
truth tests reported |
|
10 |
property cells passing |
|
12 |
property cells reported |
|
0.0634 |
largest primary standardized bias |
|
0.9287 |
lowest primary coverage |
|
0.9900 |
Monte Carlo confidence level |
|
0.0500 |
nominal test size |
|
0.9500 |
nominal interval coverage |
|
10000 |
resamples behind every bootstrap interval |
|
0.2500 |
standardized-bias margin |
|
0.9000 |
primary coverage floor |
|
0.9900 |
above this, coverage is conservative rather than invalid |
|
0.8000 |
primary SE-ratio lower screen |
|
1.2000 |
primary SE-ratio upper screen |
|
0.9300 |
cluster-robust SE-ratio lower limit |
|
1.0700 |
cluster-robust SE-ratio upper limit |
|
0.9200 |
cluster-robust coverage lower limit |
|
0.9800 |
cluster-robust coverage upper limit |
|
0.8000 |
IID-control SE-ratio ceiling |
|
0.0300 |
paired coverage-gain floor |
|
0.1500 |
paired similarity margin, in pooled empirical standard deviations. No cell of this study reads it |
|
-0.0250 |
smallest external-comparison coverage difference bound. No cell of this study reads it |
|
1.1000 |
largest external-comparison RMSE ratio bound. No cell of this study reads it |
|
0.0500 |
largest external-comparison calibration excess bound. No cell of this study reads it |
|
-0.5000 |
contraction rate root-n asymptotics predict. No cell of this study reads it |
|
-0.6250 |
accepted root-n slope band, lower limit. No cell of this study reads it |
|
-0.3750 |
accepted root-n slope band, upper limit. No cell of this study reads it |
|
-0.2500 |
slower rate a root-n interval must exclude. No cell of this study reads it |
|
0.1000 |
largest supported type-I rate. No cell of this study reads it |
|
0.8000 |
rejection lower bound a power cell must clear. No cell of this study reads it |
Limits#
limit |
what it means for use |
|---|---|
one size law |
sizes uniform on 2 to 18. The study does not cover heavy-tailed sizes or a size that confounds |
200 clusters |
the intervals use the normal reference. The few-cluster study measures the \(t\) reference below 40 clusters |
binary outcome and treatment, exact propensity |
the study isolates targeting and inference. It does not compare learned propensity models |
main-terms outcome learner |
the study does not establish flexible learners under clustering |
no comparator |
no pinned implementation cross-fits with cluster sums at unequal sizes |
Reproduction#
The fixture README gives the smoke and full commands. The manifest records the configuration and every result-determining module.