Marco Boonstra

212 157 rr_from_hr <- function( w, u, phi ) { n <- length(phi) w <- rep(w, n) u <- rep(u, n) v <- w w <- if_else(phi < 1, u, w) u <- if_else(phi < 1, v, u) a <- 1 - (1 - w)^phi b <- 1 - (1 - u)^(1 / phi) (a / b * u / w)^(1/2) } max.bias <- function(w, u, phi, step = 0.05) { expand.grid( p1 = seq(w, u, step), p2 = seq(w, u, step) ) |> mutate( phi = log(1 - p1) / log(1 - p2), rr = p1 / p2, rr.est = rr_from_hr(w, u, phi), bias = max( rr.est / rr, rr / rr.est ) ) } rr_c_a <- function(pb_a_t, pb_a_c, rr_c_b) { num <- rr_c_b * pb_a_t + (1 - pb_a_t) denom <- rr_c_b * pb_a_c + (1 - pb_a_c) num / denom } get_ca_ci <- function(lb_rr_bc, ub_rr_bc) { rr_cb.sample <- runif(1, lb_rr_bc, ub_rr_bc) pb_a_treat.sample <- rbinom(1, num_treat, pb_a_treat) / num_treat pb_a_ctrl.sample <- rbinom(1, num_ctrl, pb_a_ctrl) / num_ctrl rr_c_a(pb_a_treat.sample, pb_a_ctrl.sample, rr_cb.sample) }

RkJQdWJsaXNoZXIy MTk4NDMw