This vignette shows how to use CMR
when the pilot outcome is binary. Binary outcomes support the exact
folded-binomial variance bounds in addition to the general
bounded-outcome bounds. The outcome should be coded as 0
and 1 for the exact Bernoulli method.
For 0/1 outcomes, method = "auto" resolves to the exact
Bernoulli variance confidence set.
fit_auto <- cmr_binary(y, d, method = "auto", alpha = 0.05)
fit_auto$method
#> [1] "bernoulli"
fit_auto$pi
#> [1] 0.497153
round(fit_auto$rectangle, 4)
#> v_l1 v_u1 v_l0 v_u0
#> 0.2213 0.2500 0.2318 0.2500
fit_auto$pilot$n
#> n1 n0
#> 115 105The exact Bernoulli rectangle is also available explicitly with
method = "bernoulli" or
method = "bernoulli_exact".
methods <- c("auto", "bernoulli", "bernoulli_exact", "bounded", "mtr")
comparison <- do.call(rbind, lapply(methods, function(method) {
fit <- cmr_binary(y, d, method = method, alpha = 0.05)
c(
pi = fit$pi,
U_CMR = fit$U_CMR,
v_l1 = fit$rectangle[["v_l1"]],
v_u1 = fit$rectangle[["v_u1"]],
v_l0 = fit$rectangle[["v_l0"]],
v_u0 = fit$rectangle[["v_u0"]]
)
}))
rownames(comparison) <- methods
round(comparison, 4)
#> pi U_CMR v_l1 v_u1 v_l0 v_u0
#> auto 0.4972 0.0006 0.2213 0.25 0.2318 0.25
#> bernoulli 0.4972 0.0006 0.2213 0.25 0.2318 0.25
#> bernoulli_exact 0.4972 0.0006 0.2213 0.25 0.2318 0.25
#> bounded 0.5038 0.0812 0.0487 0.25 0.0440 0.25
#> mtr 0.5026 0.0413 0.0905 0.25 0.0856 0.25Use the exact Bernoulli option when the observed outcome is genuinely
binary. Use the bounded-outcome options when the outcome is continuous
or an index already scaled to [0, 1].
As in the other workflows, $pi is the main-wave
assignment share and $U_CMR is a regret certificate, not a
treatment-effect confidence interval.
The exact Bernoulli bounds are functions of the folded count in each arm.
fit_auto$confidence_set$treatment$statistic
#> $j
#> [1] 50
#>
#> $x
#> [1] 50
#>
#> $m
#> [1] 115
#>
#> $raw_sample_variance
#> [1] 0.2479024
#>
#> $beta_l
#> [1] 0.0125
#>
#> $beta_u
#> [1] 0.0125
fit_auto$confidence_set$control$statistic
#> $j
#> [1] 50
#>
#> $x
#> [1] 55
#>
#> $m
#> [1] 105
#>
#> $raw_sample_variance
#> [1] 0.2518315
#>
#> $beta_l
#> [1] 0.0125
#>
#> $beta_u
#> [1] 0.0125