Learn R Programming

CFO (version 2.1.0)

lateonset.simu: Conduct one simulation using the calibration-free odds type (CFO-type) design with late-onset toxicity for phase I trials.

Description

Based on the toxicity outcomes of the enrolled cohorts, the function is used to conduct one single simulation and find the maximum tolerated dose (MTD) for the CFO-type designs with late-onset toxicities for phase I trials, specifically, including time-to-event CFO (TITE-CFO) design, fractional CFO (fCFO) design, benchmark CFO design, time-to-event accumulative CFO (TITE-aCFO) design, fractional accumulative CFO (f-aCFO) design and benchmark aCFO design.

Usage

lateonset.simu(design, target, p.true, init.level = 1, ncohort, cohortsize,
       assess.window, tte.para, accrual.rate, accrual.dist,  
       prior.para = list(alp.prior = target, bet.prior = 1 - target), 
       cutoff.eli = 0.95, early.stop = 0.95, seed = NULL)

Value

The lateonset.simu() function returns a list object comprising the following components:

  • target: the target DLT rate.

  • MTD: the selected MTD. MTD = 99 indicates that this trial is terminated due to early stopping.

  • correct: a binary indicator of whether the recommended dose level matches the correct MTD (1 for yes). The correct MTD is the dose level at which the true DLT rate is closest to the target DLT rate.

  • npatients: the total number of patients allocated to all dose levels

  • ntox: the total number of DLTs observed for all dose levels.

  • over.doses: a vector indicating whether each dose is overdosed or not (1 for yes).

  • cohortdose: a vector including the dose level assigned to each cohort.

  • ptoxic: the percentage of subjects assigned to dose levels with a DLT rate greater than the target.

  • patientDLT: a vector including the DLT outcome observed for each patient.

  • sumDLT: the total number of DLT observed.

  • earlystop: a binary indicator of whether the trial is early stopped (1 for yes).

  • p_est: the isotonic estimate of the DLT probablity at each dose and associated \(95\%\) credible interval. p_est = NA if all tested doses are overly toxic.

  • p_overdose: p_overdose: the probability of overdosing defined as \(Pr(toxicity > \code{target}|data)\). p_overdose = NA if all tested doses are overly toxic.

  • totaltime: the duration of the trial.

  • entertimes: the time that each participant enters the trial.

  • DLT.times: the time to DLT for each subject in the trial. If no DLT occurs for a certain subject, DLT.times is 0.

Arguments

design

option for selecting different designs, which can be set as 'TITE-CFO', 'TITE-aCFO', 'fCFO', 'f-aCFO', 'bCFO', and 'b-aCFO'. Specifically, 'bCFO' refers to the benchmark CFO design, and 'b-aCFO' denotes the benchmark aCFO design.

target

the target DLT rate.

p.true

the true DLT rates under the different dose levels.

init.level

the dose level assigned to the first cohort. The default value init.level is 1.

ncohort

the total number of cohorts.

cohortsize

the number of patients of each cohort.

assess.window

the maximal assessment window size.

tte.para

the parameter related with the distribution of the time to DLT events. The time to DLT is sampled from a Weibull distribution, with tte.para representing the proportion of DLTs occurring within the first half of the assessment window.

accrual.rate

the accrual.rate rate, i.e., the number of patients accrued per unit time.

accrual.dist

the distribution of the arrival times of patients. When accrual.dist = 'fix', it corresponds to all patients in each cohort arriving simultaneously at a given accrual rate. When accrual.dist = 'unif', it corresponds to a uniform distribution, and when accrual.dist = 'exp', it corresponds to an exponential distribution.

prior.para

the prior parameters for a beta distribution, where set as list(alp.prior = target, bet.prior = 1 - target) by default, alp.prior and bet.prior represent the parameters of the prior distribution for the true DLT rate at any dose level. This prior distribution is specified as Beta(alpha.prior, beta.prior).

cutoff.eli

the cutoff to eliminate overly toxic doses for safety. We recommend the default value of cutoff.eli = 0.95 for general use.

early.stop

the threshold value for early stopping. The default value early.stop = 0.95 generally works well.

seed

an integer to set as the seed of the random number generator for reproducible results. The default value is set to NULL.

Author

Jialu Fang, Ninghao Zhang, Wenliang Wang, and Guosheng Yin

References

Jin H, Yin G (2022). CFO: Calibration-free odds design for phase I/II clinical trials. Statistical Methods in Medical Research, 31(6), 1051-1066.
Jin H, Yin G (2023). Time‐to‐event calibration‐free odds design: A robust efficient design for phase I trials with late‐onset outcomes. Pharmaceutical Statistics. 22(5), 773–783.
Yin G, Zheng S, Xu J (2013). Fractional dose-finding methods with late-onset toxicity in phase I clinical trials. Journal of Biopharmaceutical Statistics, 23(4), 856-870.
Fang J, Yin G (2024). Fractional accumulative calibration‐free odds (f‐aCFO) design for delayed toxicity in phase I clinical trials. Statistics in Medicine.

Examples

Run this code
target <- 0.2; ncohort <- 12; cohortsize <- 3; init.level <- 1
p.true <- c(0.01, 0.07, 0.20, 0.35, 0.50, 0.65, 0.80)
assess.window <- 3; accrual.rate <- 2; tte.para <- 0.5; accrual.dist <- 'unif'
## find the MTD for a single TITE-CFO simulation
TITECFOtrial <- lateonset.simu (design = 'TITE-CFO', target, p.true, init.level,  
                ncohort, cohortsize, assess.window, tte.para, accrual.rate, accrual.dist, seed = 1)
summary(TITECFOtrial)
plot(TITECFOtrial)
## find the MTD for a single TITE-aCFO simulation
TITEaCFOtrial <- lateonset.simu (design = 'TITE-aCFO', target, p.true, init.level,  
                ncohort, cohortsize, assess.window, tte.para, accrual.rate, accrual.dist, seed = 1)
summary(TITEaCFOtrial)
plot(TITEaCFOtrial)
## find the MTD for a single fCFO simulation
fCFOtrial <- lateonset.simu (design = 'fCFO', target, p.true, init.level,  
                ncohort, cohortsize, assess.window, tte.para, accrual.rate, accrual.dist, seed = 1)
summary(fCFOtrial)
plot(fCFOtrial)
## find the MTD for a single f-aCFO simulation
faCFOtrial <- lateonset.simu (design = 'f-aCFO', target, p.true, init.level,  
                ncohort, cohortsize, assess.window, tte.para, accrual.rate, accrual.dist, seed = 1)
summary(faCFOtrial)
plot(faCFOtrial)

Run the code above in your browser using DataLab