Simulation results 3
Sequential design with early stopping (restricted action set)
Simulation 3 is a sequential trial with decision criteria for superiority, and non-inferiority and also for futility with respect to both superiority and non-inferiority.
- For the surgical domain we evaluate whether revision is superior to dair and futility for superiority.
- For the duration domain (one-stage) we evaluate whether short duration is non-inferior to long duration antibiotic treatment. We also evaluate whether the non-inferiority decision is futile.
- For the duration domain (two-stage) we evaluate whether long duration is superior to short duration antibiotic treatment (equivalently whether short duration is inferior to long). We also evaluate whether the superiority decision is futile.
- For the choice domain we evaluate whether rif is superior to no-rif. We also evaluate whether the superiority decision is futile.
Enrolment stops for the respective domain/cells when any of the above are triggered based the decision rules described earlier.
We provide summaries of each simulation scenario and the results that were obtained.
Configuration used for each simulated scenario
# cfg used in each scenario
d_cfg <- rbindlist(lapply(seq_along(l), function(i){
tok <- toks[[i]]
m <- data.table(do.call(cbind, l[[i]]$cfg))
data.table(cbind(sc = tok[2], v = tok[3], analys = 1:nrow(m), m))
}))
# conversion to numeric
d_cfg[, `:=`(
nsim = as.numeric(nsim),
N_pt = as.numeric(N_pt),
b_r1 = as.numeric(b_r1),
b_r2 = as.numeric(b_r2),
w_srp2 = as.numeric(w_srp2),
b_r1d = as.numeric(b_r1d),
b_r2d = as.numeric(b_r2d),
b_f = as.numeric(b_f),
d_sup = as.numeric(thresh_sup),
d_ni = as.numeric(thresh_non_inf),
d_fut_sup = as.numeric(thresh_fut_sup),
d_fut_ni = as.numeric(thresh_fut_ni)
)]
# derive the 'true' effect for surgery based on weight combination
# d_cfg[, b_r := b_r1 + w_srp2 * b_r2]
# d_cfg[, `:=`(b_r1 = NULL, b_r2 = NULL, w_srp2 = NULL)]
d_cfg[, `:=`(w_srp2 = NULL)]
# d_tru <- melt(d_cfg[
# , .SD, .SDcols = c("sc", "v", "analys",
# "b_r", "b_r1d", "b_r2d", "b_f")],
# id.vars = c("sc", "v", "analys"), value.name = "lor_tru")
Process simulation results for variables of interest
# Decisions
i <- 1
d_dec <- rbindlist(lapply(seq_along(l), function(i){
tok <- toks[[i]]
# l[[i]]$d_decision
d_decision <- copy(l[[i]]$d_decision)
m <- melt(d_decision, id.vars = c("sim", "analys", "quant"), variable.name = "parname")
# Should be right, but just in case...
if(any(is.na(m$value))){
message("Some of the decision values are NA in index ", i, " file ", flist[i])
m[is.na(value), value := FALSE]
}
# compute the cumulative instances of a decision being made by sim, each
# decision type and by parameter
m[, value := as.logical(cumsum(value)>0), keyby = .(sim, quant, parname)]
# summarise by analysis, decision type and parameter
m <- m[, .(pr_val = mean(value)), keyby = .(analys, quant, parname)]
# put into wide format
m <- dcast(m, parname + analys ~ quant, value.var = "pr_val")
cbind(sc = tok[2], v = tok[3], m)
}))
# Posterior summaries on effects of interest
d_post_smry_2 <- rbindlist(lapply(seq_along(l), function(i){
tok <- toks[[i]]
m <- l[[i]]$d_post_smry_2
cbind(sc = tok[2], v = tok[3], m)
}))
# Participant data from trial (grouped)
d_all <- rbindlist(lapply(seq_along(l), function(i){
tok <- toks[[i]]
m <- l[[i]]$d_grp
cbind(sc = tok[2], v = tok[3], m)
}))
Table 1 summarises the configurations used in each simulated scenario. Each treatment effect parameter is set to have the same magnitude of effect. The effects range from \(\log(1/2)\) in scenario 1 to \(\log(2)\) in scenario 7. Decision rules and thresholds remain constant over the entire enrolment period. The decision processes are documented in the Decision rules page.
Revision effects are computed as a weighted combination of the log-odds ratios for the one-stage and two-stage revision effects. The weights are the sample proportion receiving one-stage and two-stage surgery in those patients receiving randomised surgical treatment and randomised to revision.
Code
d_tbl <- d_cfg[, .(v, N_pt, b_r1, b_r2, b_r1d, b_r2d, b_f,
delta_sup = delta_sup,
delta_sup_fut = delta_sup_fut,
delta_ni = 1/delta_ni,
thresh_sup, thresh_non_inf, thresh_fut_sup, thresh_fut_ni)]
g_tbl <- d_tbl |> gt() |>
cols_align(
columns = everything(),
align = "center"
) |>
fmt_number(
columns = c(b_r1, b_r2, b_r1d, b_r2d, b_f,
delta_ni
),
decimals = 3
) |>
tab_spanner(
label = html("Surgical (D<sub>a</sub>)"),
columns = c(b_r1, b_r2)
) |>
tab_spanner(
label = html("Duration (D<sub>b</sub>)"),
columns = c(b_r1d, b_r2d)
) |>
tab_spanner(
label = html("Type (D<sub>c</sub>)"),
columns = c(b_f)
) |>
tab_spanner(
label = html("Decision setup"),
columns = c(delta_sup, thresh_sup,
delta_sup_fut, thresh_fut_sup,
delta_ni, thresh_non_inf, thresh_fut_ni)
) |>
cols_label(
v = html("Configuration"),
b_r1 = html("rev<br>(one-stage)"),
b_r2 = html("rev<br>(two-stage)"),
b_r1d = html("short<br>(one-stage)"),
b_r2d = html("short<br>(two-stage)"),
b_f = html("rif"),
delta_sup = html("delta<sub>sup</sub>"),
thresh_sup = html("p<sub>sup</sub>"),
delta_sup_fut = html("delta<sub>fut-sup</sub>"),
thresh_fut_sup = html("p<sub>fut-sup</sub>"),
delta_ni = html("delta<sub>ni</sub>"),
thresh_non_inf = html("p<sub>ni</sub>"),
thresh_fut_ni = html("p<sub>fut-ni</sub>")
) |>
tab_style(
style = list(
cell_borders(
sides = c("bottom"), color = "black", weight = px(1), style = "solid"
)),
locations = list(
cells_body(
columns = everything(),
rows = N_pt == 2500
)
)
) |>
tab_options(
table.font.size = "70%"
) |>
tab_footnote(
footnote = "Surgical effects only applies to late silo, effect is relative to response under DAIR.",
locations = cells_column_labels(columns = c(b_r1, b_r2))
) |>
tab_footnote(
footnote = "Applies to all silos, effect is relative to response under long duration.",
locations = cells_column_labels(columns = b_r1d)
) |>
tab_footnote(
footnote = "Applies to all silos, effect is relative to response under short duration.",
locations = cells_column_labels(columns = b_r2d)
) |>
tab_footnote(
footnote = "Applies to all silos, effect is relative to response under no-rifampicin",
locations = cells_column_labels(columns = b_f)
) |>
tab_footnote(
footnote = "Reference OR for evaluating superiority",
locations = cells_column_labels(columns = delta_sup)
) |>
tab_footnote(
footnote = "Probability threshold above which superiority is concluded",
locations = cells_column_labels(columns = thresh_sup)
) |>
tab_footnote(
footnote = "Reference OR for evaluating futility wrt the superiority decision",
locations = cells_column_labels(columns = delta_sup_fut)
) |>
tab_footnote(
footnote = "Probability threshold below which futility is concluded",
locations = cells_column_labels(columns = thresh_fut_sup)
) |>
tab_footnote(
footnote = "Reference OR for evaluating non-inferiority",
locations = cells_column_labels(columns = delta_ni)
) |>
tab_footnote(
footnote = "Probability threshold above which non-inferiority is concluded",
locations = cells_column_labels(columns = thresh_non_inf)
) |>
tab_footnote(
footnote = "Probability threshold below which non-inferiority decision is deemed futile",
locations = cells_column_labels(columns = thresh_fut_ni)
)
g_tbl
Configuration | N_pt | Surgical (Da) | Duration (Db) | Type (Dc) | Decision setup | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
rev (one-stage)1 |
rev (two-stage)1 |
short (one-stage)2 |
short (two-stage)3 |
rif4 | deltasup5 | psup6 | deltafut-sup7 | pfut-sup8 | deltani9 | pni10 | pfut-ni11 | ||
v01 | 500 | −0.693 | −0.693 | −0.693 | −0.693 | −0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v01 | 1000 | −0.693 | −0.693 | −0.693 | −0.693 | −0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v01 | 1500 | −0.693 | −0.693 | −0.693 | −0.693 | −0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v01 | 2000 | −0.693 | −0.693 | −0.693 | −0.693 | −0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v01 | 2500 | −0.693 | −0.693 | −0.693 | −0.693 | −0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v02 | 500 | −0.405 | −0.405 | −0.405 | −0.405 | −0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v02 | 1000 | −0.405 | −0.405 | −0.405 | −0.405 | −0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v02 | 1500 | −0.405 | −0.405 | −0.405 | −0.405 | −0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v02 | 2000 | −0.405 | −0.405 | −0.405 | −0.405 | −0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v02 | 2500 | −0.405 | −0.405 | −0.405 | −0.405 | −0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v03 | 500 | −0.182 | −0.182 | −0.182 | −0.182 | −0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v03 | 1000 | −0.182 | −0.182 | −0.182 | −0.182 | −0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v03 | 1500 | −0.182 | −0.182 | −0.182 | −0.182 | −0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v03 | 2000 | −0.182 | −0.182 | −0.182 | −0.182 | −0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v03 | 2500 | −0.182 | −0.182 | −0.182 | −0.182 | −0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v04 | 500 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v04 | 1000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v04 | 1500 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v04 | 2000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v04 | 2500 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v05 | 500 | 0.182 | 0.182 | 0.182 | 0.182 | 0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v05 | 1000 | 0.182 | 0.182 | 0.182 | 0.182 | 0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v05 | 1500 | 0.182 | 0.182 | 0.182 | 0.182 | 0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v05 | 2000 | 0.182 | 0.182 | 0.182 | 0.182 | 0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v05 | 2500 | 0.182 | 0.182 | 0.182 | 0.182 | 0.182 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v06 | 500 | 0.405 | 0.405 | 0.405 | 0.405 | 0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v06 | 1000 | 0.405 | 0.405 | 0.405 | 0.405 | 0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v06 | 1500 | 0.405 | 0.405 | 0.405 | 0.405 | 0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v06 | 2000 | 0.405 | 0.405 | 0.405 | 0.405 | 0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v06 | 2500 | 0.405 | 0.405 | 0.405 | 0.405 | 0.405 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v07 | 500 | 0.693 | 0.693 | 0.693 | 0.693 | 0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v07 | 1000 | 0.693 | 0.693 | 0.693 | 0.693 | 0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v07 | 1500 | 0.693 | 0.693 | 0.693 | 0.693 | 0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v07 | 2000 | 0.693 | 0.693 | 0.693 | 0.693 | 0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
v07 | 2500 | 0.693 | 0.693 | 0.693 | 0.693 | 0.693 | 1 | 0.99 | 1.2 | 0.05 | 0.833 | 0.99 | 0.05 |
1 Surgical effects only applies to late silo, effect is relative to response under DAIR. | |||||||||||||
2 Applies to all silos, effect is relative to response under long duration. | |||||||||||||
3 Applies to all silos, effect is relative to response under short duration. | |||||||||||||
4 Applies to all silos, effect is relative to response under no-rifampicin | |||||||||||||
5 Reference OR for evaluating superiority | |||||||||||||
6 Probability threshold above which superiority is concluded | |||||||||||||
7 Reference OR for evaluating futility wrt the superiority decision | |||||||||||||
8 Probability threshold below which futility is concluded | |||||||||||||
9 Reference OR for evaluating non-inferiority | |||||||||||||
10 Probability threshold above which non-inferiority is concluded | |||||||||||||
11 Probability threshold below which non-inferiority decision is deemed futile |
Figure 1 shows the cumulative probability of each decision quantity. Once answered, the questions are no longer evaluated.
The first row details the cumulative probability of decisions within the surgical domain, which currently applies only to the late silo. Superiority (
sup
in legend) and futility (fut_sup
) are the relevant quantities of interest.The second row details the cumulative probability of decisions within the duration domain under one-stage revision. Non-inferiority (
ni
) and inferiority (fut_ni
) are the relevant quantities of interest.The third row details the cumulative probability of decisions within the duration domain under two-stage revision. Superiority (
sup
) and futility (fut_sup
) are the relevant quantities of interest.The fourth row details the cumulative probability of decisions within the choice domain. Superiority (
sup
) and futility (fut_sup
) are the relevant quantities of interest.
Code
# put power by scenario, variant and analysis in long format
d_fig_0_01 <- melt(d_dec, id.vars = c("sc", "v", "analys", "parname"), variable.name = "quant")
d_fig_0_01[, quant := factor(quant,
levels = c("sup", "fut_sup", "trt_ni_ref", "fut_trt_ni_ref"))]
# add in the number of pts having reached 12 months post rand by analysis num
d_fig_0_01 <- merge(d_fig_0_01, unique(d_cfg[, .(analys, N_pt)]), by = "analys")
d_fig_0_01 <- rbind(
d_fig_0_01[parname == "b_r" & quant %in% c("sup", "fut_sup"), ],
d_fig_0_01[parname == "b_r1d" & quant %in% c("trt_ni_ref", "fut_trt_ni_ref"), ],
d_fig_0_01[parname == "b_r2d" & quant %in% c("sup", "fut_sup"), ],
d_fig_0_01[parname == "b_f" & quant %in% c("sup", "fut_sup"), ]
)
d_fig_0_01[, or_tru := g_or_lab[v]]
d_fig_0_01[, or_tru := factor(
or_tru, labels = g_or_lab, levels = g_or_lab)]
fx <- g_fx
names(fx) <- c("rev vs dair", "6-wk vs 12-wk (one)", "12-wk vs 7-day (two)", "rif vs no-rif")
d_fig_0_01[, parname_lab := factor(
names(fx[parname]), levels = c("rev vs dair", "6-wk vs 12-wk (one)", "12-wk vs 7-day (two)", "rif vs no-rif")
) ]
d_text <- unique(d_fig_0_01[, .(parname_lab, or_tru, quant)])
d_text[parname_lab == "rev vs dair" & or_tru %in% c("OR 1/2"),
`:=`(label = c("rev fut (sup)"), x = 500, y = 0.2)]
d_text[parname_lab == "rev vs dair" & or_tru %in% c("OR 2"),
`:=`(label = c("rev sup \nto dair"), x = 500, y = 0.2)]
d_text[parname_lab == "6-wk vs 12-wk (one)" & or_tru %in% c("OR 1/2"),
`:=`(label = c("short fut (ni)"), x = 500, y = 0.2)]
d_text[parname_lab == "6-wk vs 12-wk (one)" & or_tru %in% c("OR 2"),
`:=`(label = c("short ni \nto long"), x = 500, y = 0.2)]
d_text[parname_lab == "12-wk vs 7-day (two)" & or_tru %in% c("OR 1/2"),
`:=`(label = c("long fut (sup)"), x = 500, y = 0.2)]
d_text[parname_lab == "12-wk vs 7-day (two)" & or_tru %in% c("OR 2"),
`:=`(label = c("long sup \nto short"), x = 500, y = 0.2)]
d_text[parname_lab == "rif vs no-rif" & or_tru %in% c("OR 1/2"),
`:=`(label = c("rif fut (sup)"), x = 500, y = 0.2)]
d_text[parname_lab == "rif vs no-rif" & or_tru %in% c("OR 2"),
`:=`(label = c("rif sup \nto no-rif"), x = 500, y = 0.2)]
names(d_tbl) <- gsub("superiority", "sup", names(d_tbl))
names(d_tbl) <- gsub("futility (sup)", "fut_sup", names(d_tbl))
names(d_tbl) <- gsub("NI (trt ni ref)", "trt_ni_inf", names(d_tbl))
names(d_tbl) <- gsub("futility (NI)", "fut_trt_ni_ref", names(d_tbl))
d_fig_0_01$quant <- factor(
d_fig_0_01$quant,
levels = c("sup", "fut_sup", "trt_ni_ref", "fut_trt_ni_ref"),
labels = c("sup", "fut_sup", "ni", "fut_ni"))
p <- ggplot(d_fig_0_01, aes(x = N_pt, y = value, group = quant, col = quant)) +
geom_point(size = 0.5) +
geom_line(lwd = 0.4) +
geom_hline(yintercept = 0.05, lwd = 0.2) +
ggthemes::scale_colour_tableau(
"", palette = "Tableau 10",
type = "regular",
direction = 1) +
geom_text(
data = d_text,
aes(x = x, y = y, label = label),
hjust = 0,
vjust = 0, col = 1, size = 3) +
scale_linetype_discrete("") +
scale_x_continuous("N (12-months post rand)", guide = guide_axis(angle = 45)) +
scale_y_continuous("Cumulative probability", breaks = seq(0, 1, by = 0.1)) +
facet_grid(parname_lab ~ or_tru)
suppressWarnings(print(p))
Table 2 provides the same detail as the above figure, but makes it easier to see what the magnitudes of the cumulate probabilities are.
Code
# Widen data so that power is shown by col with each col corresponding to an
# analysis
d_tbl <- d_fig_0_01[quant %in% c("sup", "fut_sup", "ni", "fut_ni")]
d_tbl <- dcast(d_tbl, parname + or_tru ~ quant + analys, value.var = "value")
d_tbl <- d_tbl[order(or_tru, parname)]
g_tbl <- d_tbl |> gt(groupname_col = "parname") |>
fmt_number(
columns = everything(),
decimals = 2,
use_seps = FALSE
) |>
tab_spanner(
label = html("Superiority"),
columns = paste0("sup_", 1:5)
) |>
tab_spanner(
label = html("Futility (sup)"),
columns = c(paste0("fut_sup_", 1:5))
) |>
tab_spanner(
label = html("NI (trt ni ref)"),
columns = paste0("ni_", 1:5)
) |>
tab_spanner(
label = html("Futility (ni)"),
columns = c(paste0("fut_ni_", 1:5))
) |>
cols_label(
or_tru = html("OR (true)"),
sup_1 = html("500"),
sup_2 = html("1000"),
sup_3 = html("1500"),
sup_4 = html("2000"),
sup_5 = html("2500"),
fut_sup_1 = html("500"),
fut_sup_2 = html("1000"),
fut_sup_3 = html("1500"),
fut_sup_4 = html("2000"),
fut_sup_5 = html("2500"),
ni_1 = html("500"),
ni_2 = html("1000"),
ni_3 = html("1500"),
ni_4 = html("2000"),
ni_5 = html("2500"),
fut_ni_1 = html("500"),
fut_ni_2 = html("1000"),
fut_ni_3 = html("1500"),
fut_ni_4 = html("2000"),
fut_ni_5 = html("2500")
) |>
tab_style(
style = cell_borders(
sides = c("left"),
weight = px(1)),
locations = cells_body(
# columns = c(sup_1, fut_sup_1, inf_1, fut_inf_1, ni_1, fut_ni_1)
columns = c(sup_1, fut_sup_1, ni_1, fut_ni_1)
)
) |>
tab_style(
style = list(
cell_borders(
sides = c("top", "bottom"), color = "red", weight = px(1), style = "solid"
)),
locations = list(
cells_body(
columns = everything(),
rows = or_tru == "OR 1"
)
)
) |>
tab_options(
table.font.size = "80%"
) |>
sub_missing(columns = everything(), missing_text = "")
g_tbl
OR (true) | Superiority | Futility (sup) | NI (trt ni ref) | Futility (ni) | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
500 | 1000 | 1500 | 2000 | 2500 | 500 | 1000 | 1500 | 2000 | 2500 | 500 | 1000 | 1500 | 2000 | 2500 | 500 | 1000 | 1500 | 2000 | 2500 | |
b_r | ||||||||||||||||||||
OR 1/2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.93 | 1.00 | 1.00 | 1.00 | 1.00 | ||||||||||
OR 1/1.5 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.68 | 0.93 | 0.99 | 1.00 | 1.00 | ||||||||||
OR 1/1.2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.35 | 0.63 | 0.80 | 0.90 | 0.95 | ||||||||||
OR 1 | 0.01 | 0.01 | 0.02 | 0.02 | 0.03 | 0.15 | 0.28 | 0.39 | 0.48 | 0.56 | ||||||||||
OR 1.2 | 0.04 | 0.09 | 0.14 | 0.19 | 0.25 | 0.04 | 0.07 | 0.09 | 0.11 | 0.12 | ||||||||||
OR 1.5 | 0.15 | 0.38 | 0.59 | 0.76 | 0.86 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||||||
OR 2 | 0.45 | 0.86 | 0.98 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||||||
b_r1d | ||||||||||||||||||||
OR 1/2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.40 | 0.75 | 0.90 | 0.96 | 0.99 | ||||||||||
OR 1/1.5 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.19 | 0.40 | 0.57 | 0.69 | 0.78 | ||||||||||
OR 1/1.2 | 0.00 | 0.01 | 0.01 | 0.02 | 0.02 | 0.07 | 0.16 | 0.23 | 0.30 | 0.35 | ||||||||||
OR 1 | 0.02 | 0.04 | 0.06 | 0.10 | 0.12 | 0.03 | 0.06 | 0.08 | 0.10 | 0.11 | ||||||||||
OR 1.2 | 0.04 | 0.12 | 0.20 | 0.28 | 0.36 | 0.01 | 0.01 | 0.02 | 0.02 | 0.02 | ||||||||||
OR 1.5 | 0.12 | 0.29 | 0.47 | 0.63 | 0.76 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||||||
OR 2 | 0.22 | 0.60 | 0.84 | 0.95 | 0.98 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||||||
b_r2d | ||||||||||||||||||||
OR 1/2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.83 | 0.99 | 1.00 | 1.00 | 1.00 | ||||||||||
OR 1/1.5 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.57 | 0.88 | 0.97 | 0.99 | 1.00 | ||||||||||
OR 1/1.2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.30 | 0.56 | 0.72 | 0.83 | 0.90 | ||||||||||
OR 1 | 0.01 | 0.02 | 0.02 | 0.03 | 0.03 | 0.13 | 0.24 | 0.33 | 0.42 | 0.49 | ||||||||||
OR 1.2 | 0.03 | 0.07 | 0.12 | 0.16 | 0.20 | 0.04 | 0.07 | 0.09 | 0.11 | 0.12 | ||||||||||
OR 1.5 | 0.10 | 0.28 | 0.47 | 0.62 | 0.75 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | ||||||||||
OR 2 | 0.28 | 0.69 | 0.92 | 0.98 | 1.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||||||
b_f | ||||||||||||||||||||
OR 1/2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.98 | 1.00 | 1.00 | 1.00 | 1.00 | ||||||||||
OR 1/1.5 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.80 | 0.97 | 1.00 | 1.00 | 1.00 | ||||||||||
OR 1/1.2 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.46 | 0.75 | 0.89 | 0.95 | 0.98 | ||||||||||
OR 1 | 0.01 | 0.02 | 0.02 | 0.03 | 0.03 | 0.18 | 0.33 | 0.45 | 0.55 | 0.63 | ||||||||||
OR 1.2 | 0.06 | 0.13 | 0.21 | 0.28 | 0.35 | 0.04 | 0.07 | 0.09 | 0.10 | 0.11 | ||||||||||
OR 1.5 | 0.25 | 0.52 | 0.73 | 0.85 | 0.93 | 0.00 | 0.01 | 0.01 | 0.01 | 0.01 | ||||||||||
OR 2 | 0.62 | 0.93 | 0.99 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Figure 2 shows the distribution of estimated posterior means by simulated effect size, parameter and sample size.