Nothing
context("baggr() calls with multi-arm IPD setup")
library(baggr)
skip_on_cran()
set.seed(1990)
N <- 1000
df <- data.frame(
treatment = factor(sample(c("A", "B", "C"), N, replace = TRUE), levels = c("A", "B", "C")),
group = sample(paste("Study", 1:10), N, replace = TRUE)
)
df$cl <- sample(1:10, N, replace = TRUE)
df$outcome_cont <- rnorm(N) +
(df$treatment == "A") * 0.2 +
(df$treatment == "B") * 0.4 +
(df$treatment == "C") * 0.6
df$outcome_bin <- 1 * (df$outcome_cont > 0.2)
bg_n <- expect_warning(baggr(df, outcome = "outcome_cont", pooling = "none", iter = 150, refresh = 0))
bg_p <- expect_warning(baggr(df, outcome = "outcome_cont", pooling = "partial", iter = 150, refresh = 0))
bg_f <- expect_warning(baggr(df, outcome = "outcome_cont", pooling = "full", iter = 150, refresh = 0))
bg_rubin_cluster <- expect_warning(baggr(df, outcome = "outcome_cont", pooling = "partial",
iter = 150, refresh = 0, cluster = "cl"))
bg_logit <- expect_warning(baggr(df, outcome = "outcome_bin", model = "logit",
pooling = "partial", iter = 150, refresh = 0, cluster = "cl"))
test_that("multi-arm setup produces baggr objects", {
expect_s3_class(bg_n, "baggr")
expect_s3_class(bg_p, "baggr")
expect_s3_class(bg_f, "baggr")
expect_s3_class(bg_rubin_cluster, "baggr")
expect_s3_class(bg_logit, "baggr")
})
test_that("multi-arm outputs are correctly formed for rubin_full", {
expect_equal(bg_p$n_groups, 10)
expect_equal(bg_p$n_parameters, 2)
expect_equal(length(bg_p$effects), 2)
expect_equal(bg_p$effects, c("mean B", "mean C"))
ge <- group_effects(bg_p, summary = TRUE)
expect_true(is.array(ge))
expect_equal(dim(ge), c(10, 5, 2))
te <- treatment_effect(bg_p, summary= TRUE)
expect_equal(dim(te$sigma), c(2,5))
expect_equal(dim(te$sigma_tau), c(2,5))
pm <- pooling(bg_p)
expect_true(is.array(pm))
expect_equal(dim(pm), c(3, 10, 2))
wt <- weights(bg_p)
expect_true(is.array(wt))
expect_equal(dim(wt), c(3, 10, 2))
expect_equal(sum(wt[2, , 1]), 1, tolerance = 1e-6)
expect_equal(sum(wt[2, , 2]), 1, tolerance = 1e-6)
bsl_k <- apply(rstan::extract(bg_p$fit, "baseline_k")[[1]], 2, mean)
expect_length(bsl_k, 10)
expect_false(anyNA(bsl_k))
})
test_that("multi-arm plotting and comparison helpers work", {
plotbg <- plot(bg_p)
expect_length(plot(bg_p), 2)
expect_s3_class(plotbg[[1]], "gg")
expect_s3_class(plotbg[[2]], "gg")
expect_s3_class(effect_plot(bg_p), "gg")
expect_error(funnel_plot(bg_p))
expect_error(forest_plot(bg_p))
bgc <- baggr_compare(bg_n, bg_p, bg_f)
expect_s3_class(bgc, "baggr_compare")
expect_s3_class(plot(bgc), "gg")
})
test_that("logit multi-arm model keeps core outputs and drops eta_cluster draws", {
expect_equal(bg_logit$n_groups, 10)
expect_equal(bg_logit$n_parameters, 2)
expect_equal(bg_logit$effects, c("logOR B", "logOR C"))
par_names <- names(rstan::extract(bg_logit$fit))
expect_false("eta_cluster" %in% par_names)
ge <- group_effects(bg_logit, summary = TRUE)
expect_true(is.array(ge))
expect_equal(dim(ge), c(10, 5, 2))
te <- treatment_effect(bg_logit, summary= TRUE)
expect_equal(dim(te$sigma), c(2,5))
expect_equal(dim(te$sigma_tau), c(2,5))
pm <- pooling(bg_logit)
expect_true(is.array(pm))
expect_equal(dim(pm), c(3, 10, 2))
})
test_that("clustered rubin_full model also drops eta_cluster draws", {
expect_equal(bg_rubin_cluster$n_groups, 10)
expect_equal(bg_rubin_cluster$n_parameters, 2)
par_names <- names(rstan::extract(bg_rubin_cluster$fit))
expect_false("eta_cluster" %in% par_names)
ge <- group_effects(bg_rubin_cluster, summary = TRUE)
expect_true(is.array(ge))
expect_equal(dim(ge), c(10, 5, 2))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.