Nothing
# Test data fixtures for unit tests
# These functions create small, reproducible datasets for testing
#' Create binary treatment test dataset
#'
#' @param n Sample size
#' @param seed Random seed for reproducibility
#' @return Data frame with binary treatment (A/B), covariates, and survival outcome
make_test_data_binary <- function(n = 150, seed = 12345) {
set.seed(seed)
# Covariates
X1 <- rnorm(n)
X2 <- rnorm(n)
B1 <- rbinom(n, 1, 0.5)
# Treatment assignment (with confounding)
ps <- plogis(0.5 * X1 - 0.3 * X2 + 0.2 * B1)
Z_numeric <- rbinom(n, 1, ps)
Z <- c("A", "B")[Z_numeric + 1]
# Survival time (Weibull, treatment effect present)
lambda <- exp(-0.5 * X1 + 0.3 * Z_numeric)
time_event <- rweibull(n, shape = 1.5, scale = 1 / lambda)
# Censoring time (uniform, ~30% censoring)
censor_time <- runif(n, 0, 20)
# Observed outcome
event <- as.numeric(time_event < censor_time)
time <- pmin(time_event, censor_time)
data.frame(
Z = Z,
X1 = X1,
X2 = X2,
B1 = B1,
time = time,
event = event,
stringsAsFactors = FALSE
)
}
#' Create multiple treatment test dataset
#'
#' @param n Sample size
#' @param seed Random seed for reproducibility
#' @return Data frame with 3 treatment groups (A/B/C), covariates, and survival outcome
make_test_data_multi <- function(n = 180, seed = 54321) {
set.seed(seed)
# Covariates
X1 <- rnorm(n)
X2 <- rnorm(n)
B1 <- rbinom(n, 1, 0.5)
# Treatment assignment (multinomial)
# Log-odds for groups B and C vs A
logit_B <- 0.4 * X1 - 0.2 * X2 + 0.1 * B1
logit_C <- -0.3 * X1 + 0.5 * X2 - 0.2 * B1
# Multinomial probabilities
exp_B <- exp(logit_B)
exp_C <- exp(logit_C)
denom <- 1 + exp_B + exp_C
prob_A <- 1 / denom
prob_B <- exp_B / denom
prob_C <- exp_C / denom
# Sample treatment
Z_numeric <- apply(cbind(prob_A, prob_B, prob_C), 1, function(p) {
sample(0:2, 1, prob = p)
})
Z <- c("A", "B", "C")[Z_numeric + 1]
# Survival time (treatment effects)
lambda <- exp(-0.4 * X1 + 0.2 * (Z_numeric == 1) + 0.4 * (Z_numeric == 2))
time_event <- rweibull(n, shape = 1.5, scale = 1 / lambda)
# Censoring time (~30% censoring)
censor_time <- runif(n, 0, 18)
# Observed outcome
event <- as.numeric(time_event < censor_time)
time <- pmin(time_event, censor_time)
data.frame(
Z = Z,
X1 = X1,
X2 = X2,
B1 = B1,
time = time,
event = event,
stringsAsFactors = FALSE
)
}
#' Create contrast matrix for multiple treatment comparisons
#'
#' @return Matrix with contrasts for A vs B, A vs C
make_contrast_matrix <- function() {
contrast_mat <- matrix(
c(1, -1, 0, # A vs B
1, 0, -1), # A vs C
nrow = 2, byrow = TRUE
)
colnames(contrast_mat) <- c("A", "B", "C")
rownames(contrast_mat) <- c("A vs B", "A vs C")
contrast_mat
}
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.