## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>") ## ----setup-------------------------------------------------------------------- library(EDI) set.seed(20260916) n = 100 X = data.frame( age = round(rnorm(n, 60, 10)), stage = sample(1:3, n, replace = TRUE) ) true_log_hr = -0.5 # treatment lowers the hazard ## ----fixed-------------------------------------------------------------------- des = DesignFixedBernoulli$new(n = n, response_type = "survival", verbose = FALSE) des$add_all_subjects_to_experiment(X) des$assign_w_to_all_subjects() w = des$get_w() rate = exp(-2 + true_log_hr * w + 0.02 * (X$age - 60) + 0.3 * (X$stage - 2)) event_time = rexp(n, rate) censored = rbinom(n, 1, 0.3) == 1 follow_up = pmin(event_time, runif(n, 0, 2 * median(event_time))) # observed time for (i in seq_len(n)) { if (censored[i]) { des$add_one_subject_response(i, y_L = follow_up[i], y_R = Inf) # right-censored at follow_up } else { des$add_one_subject_response(i, y = event_time[i]) # exact event } } table(censored = censored) ## ----cox---------------------------------------------------------------------- inf = InferenceSurvivalCoxPHRegr$new(des, verbose = FALSE) inf$num_cores = 1L inf$compute_estimate() # log hazard ratio for treatment inf$compute_asymp_confidence_interval(alpha = 0.05) inf$compute_asymp_two_sided_pval() ## ----cox-resampling----------------------------------------------------------- inf$set_seed(1) inf$compute_rand_two_sided_pval(r = 200, show_progress = FALSE) inf$set_seed(1) inf$compute_bootstrap_confidence_interval(alpha = 0.05, B = 200, show_progress = FALSE) ## ----suite-------------------------------------------------------------------- suite = InferenceSuite$new(des) res = suite$run_all_inference(screen = TRUE, plots = FALSE, num_cores = 1L, methods = c("wald", "score", "lik_ratio"), max_secs_per_class = 15) ## ----seq---------------------------------------------------------------------- des_seq = DesignSeqOneByOneKK14$new(n = n, response_type = "survival", verbose = FALSE) for (i in seq_len(n)) { w_i = des_seq$add_one_subject_to_experiment_and_assign(X[i, , drop = FALSE]) t_i = rexp(1, exp(-2 + true_log_hr * w_i + 0.02 * (X$age[i] - 60) + 0.3 * (X$stage[i] - 2))) if (rbinom(1, 1, 0.3) == 1) { des_seq$add_one_subject_response(i, y_L = min(t_i, 3), y_R = Inf) } else { des_seq$add_one_subject_response(i, y = t_i) } } inf_seq = InferenceSurvivalCoxPHRegr$new(des_seq, verbose = FALSE) inf_seq$num_cores = 1L inf_seq$compute_estimate() inf_seq$set_seed(1) inf_seq$compute_rand_two_sided_pval(r = 200, show_progress = FALSE)