Skip to contents

This function generate exponential dist survival data for 2 stages test. The censoring distribution in interim period is different from the whole trail If 'interim' is a number, it returns an (N * 5) array : [arm, obs_time_int, event_int, obs_time_fin, event_fin] If 'interim' is a list or c() meaning a series of interim timepoints, the third dimension of result array return the survival result of ith interim (N * 5)

Usage

expo_gen_2stages(
  N,
  dist,
  acc_time,
  cen_time,
  lambda,
  HR1,
  HR2,
  arm,
  interim,
  change_time
)

Arguments

N

Number of patients

dist

'exp' for exponential, 'pcw_exp' for piecewise exponential

acc_time

Accrual time period with constant rate

cen_time

Extra (minimum) censoring period after accrual period

lambda

The parameter for exponential distribution

HR1

For piecewise exponential only. The hazard ratio before change_time

HR2

For piecewise exponential only. The hazard ratio after change_time

arm

Group label(0,1)

interim

Interim time point

change_time

For piecewise exponential only. The time when hazard ratio changes from HR1 to HR2

Examples

set.seed(2024)
sim_size <- 5000
N <- 112
n <- ceiling(N / 2)  # total sample size per arm
r <- 60
acc_time <- N / r
cen_time <- 1
lambda_H0 <- 0.9 * 1.5
lambda_H1 <- 0.9
int_step <- 4

int_factor <- seq(0.4, 0.7, by = int_step / N)  
# Each time interim sample size increase by 4
interim_list <- int_factor * acc_time

# parameter interim can be a list
data_C <- expo_gen_2stages(N = n * sim_size, acc_time = acc_time, lambda = lambda_H0, 
                     dist = 'exp', cen_time = cen_time, arm = 0, interim = interim_list) 
# print(data_C[ , ,1])

# parameter interim is a number
data_C <- expo_gen_2stages(N = n * sim_size, acc_time = acc_time, lambda = lambda_H0, 
                   dist = 'exp', cen_time = cen_time, arm = 0, interim = interim_list[1]) 
# print(data_C)