Summary of group sequential simulations.
Usage
# S3 method for class 'simtrial_gs_wlr'
summary(object, design = NULL, bound = NULL, ...)
Arguments
- object
Simulation results generated by
sim_gs_n()
- design
Asymptotic design generated by
gsDesign2::gs_design_ahr()
,gsDesign2::gs_power_ahr()
,gsDesign2::gs_design_wlr()
, or gsDesign2::gs_power_wlr.- bound
The boundaries.
- ...
Additional parameters (not used).
Examples
library(gsDesign2)
# Parameters for enrollment
enroll_rampup_duration <- 4 # Duration for enrollment ramp up
enroll_duration <- 16 # Total enrollment duration
enroll_rate <- define_enroll_rate(
duration = c(
enroll_rampup_duration, enroll_duration - enroll_rampup_duration),
rate = c(10, 30))
# Parameters for treatment effect
delay_effect_duration <- 3 # Delay treatment effect in months
median_ctrl <- 9 # Survival median of the control arm
median_exp <- c(9, 14) # Survival median of the experimental arm
dropout_rate <- 0.001
fail_rate <- define_fail_rate(
duration = c(delay_effect_duration, 100),
fail_rate = log(2) / median_ctrl,
hr = median_ctrl / median_exp,
dropout_rate = dropout_rate)
# Other related parameters
alpha <- 0.025 # Type I error
beta <- 0.1 # Type II error
ratio <- 1 # Randomization ratio (experimental:control)
# Build a one-sided group sequential design
design <- gs_design_ahr(
enroll_rate = enroll_rate, fail_rate = fail_rate,
ratio = ratio, alpha = alpha, beta = beta,
analysis_time = c(12, 24, 36),
upper = gs_spending_bound,
upar = list(sf = gsDesign::sfLDOF, total_spend = alpha),
lower = gs_b,
lpar = rep(-Inf, 3))
# Define cuttings of 2 IAs and 1 FA
ia1_cut <- create_cut(target_event_overall = ceiling(design$analysis$event[1]))
ia2_cut <- create_cut(target_event_overall = ceiling(design$analysis$event[2]))
fa_cut <- create_cut(target_event_overall = ceiling(design$analysis$event[3]))
# Run simulations
simulation <- sim_gs_n(
n_sim = 3,
sample_size = ceiling(design$analysis$n[3]),
enroll_rate = design$enroll_rate,
fail_rate = design$fail_rate,
test = wlr,
cut = list(ia1 = ia1_cut, ia2 = ia2_cut, fa = fa_cut),
weight = fh(rho = 0, gamma = 0.5))
#> Backend uses sequential processing.
# Summarize simulations
bound <- gsDesign::gsDesign(k = 3, test.type = 1, sfu = gsDesign::sfLDOF)$upper$bound
simulation |> summary(bound = bound)
#> analysis sim_n sim_event sim_time sim_upper_prob
#> 1 1 351.3333 97 11.96200 NA
#> 2 2 505.0000 305 23.88249 0.3333333
#> 3 3 505.0000 405 34.55674 1.0000000
# Summarize simulation and compare with the planned design
simulation |> summary(design = design)
#> analysis asy_upper_prob sim_upper_prob sim_event sim_n sim_time asy_time
#> 1 1 0.0001486594 NA 97 351.3333 11.96200 12
#> 2 2 0.5723215057 0.3333333 305 505.0000 23.88249 24
#> 3 3 0.9000000002 1.0000000 405 505.0000 34.55674 36
#> asy_n asy_event
#> 1 353.0467 96.77458
#> 2 504.3524 304.00996
#> 3 504.3524 404.14196