Skip to contents

Do the posterior quantiles contain a value of 1.0?

Usage

sim_is_null_effect_covered(draws, posterior_quantiles)

Arguments

draws

draws_array Object of class draws from CmdStanMCMC$draws().

posterior_quantiles

numeric. Vector of length two specifying quantiles of the posterior treatment effect distribution in which to search for the null effect.

Value

1L if the null effect (1.0) is contained within the quantiles, else 0L

Examples

base_mat <- matrix(
  c(
    rep(0, 200), rep(0, 200), rep(1, 200),
    rep(1, 200), rep(0, 200), rep(0, 200),
    rep(0, 600)
  ),
  ncol = 3,
  dimnames = list(NULL, c("ext", "trt", "driftOR"))
)

add_binary_endpoint <- function(odds_ratio,
                                base_matrix = base_mat) {
  linear_predictor <- base_matrix[, "trt"] * log(odds_ratio)
  prob <- 1 / (1 + exp(-linear_predictor))

  bin_endpoint <- rbinom(
    NROW(base_matrix),
    1,
    prob
  )

  cbind(base_matrix, matrix(bin_endpoint, ncol = 1, dimnames = list(NULL, "ep")))
}

data_list <- list(
  list(add_binary_endpoint(1.5), add_binary_endpoint(1.5)),
  list(add_binary_endpoint(2.5), add_binary_endpoint(2.5))
)

guide <- data.frame(
  trueOR = c(1.5, 2.5),
  driftOR = c(1.0, 1.0),
  index = 1:2
)

sdl <- sim_data_list(
  data_list = data_list,
  guide = guide,
  effect = "trueOR",
  drift = "driftOR",
  index = "index"
)

x <- create_simulation_obj(
  data_matrix_list = sdl,
  outcome = logistic_bin_outcome("ep", normal_prior(0, 1000)),
  borrowing = sim_borrowing_list(list(
    full_borrowing = borrowing_details("Full borrowing", "ext"),
    bdb = borrowing_details("BDB", "ext", exponential_prior(0.0001))
  )),
  treatment = treatment_details("trt", normal_prior(0, 1000))
)

if (FALSE) {
i <- 1
j <- 1
anls_obj <- x@analysis_obj_list[[i]][[j]]
res <- mcmc_sample(anls_obj, iter_sampling = 500)
draws <- res$draws()

psborrow2:::sim_is_null_effect_covered(
  draws,
  c(0.025, 0.975)
)
}