CFOeff.oc: Generate operating characteristics of phase I/II trials...

View source: R/CFOeff.oc.R

CFOeff.ocR Documentation

Generate operating characteristics of phase I/II trials single-drug trials in multiple simulations.

Description

Based on the toxicity outcomes and efficacy outcomes, this function is used to perform multiple simulations for phase I/II single-drug trials and obtain relevant operating characteristics.

Usage

CFOeff.oc(target, p.true=p.true, pE.true=pE.true, prior.para = 
                 list(alp.prior = target, bet.prior = 1 - target, 
                 alp.prior.eff = 0.5, bet.prior.eff = 0.5),  
                 init.level = 1, cohortsize=cohortsize, ncohort=ncohort, 
                 nsimu, cutoff.eli=0.95, 
                 early.stop=0.95, effearly.stop = 0.9, mineff,
                 seeds = NULL)

Arguments

target

the target DLT rate.

p.true

the true DLT rates under the different dose levels.

pE.true

the true efficacy rates under the different dose levels.

prior.para

the prior parameters for two beta distributions, where set as list(alp.prior = target, bet.prior = 1 - target, alp.prior.eff = 0.5, bet.prior.eff = 0.5) 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). alp.eff.prior and bet.eff.prior represent the parameters of the Jeffreys' prior distribution for the efficacy probability at any dose level. This prior distribution is specified as Beta(alpha.eff.prior, beta.eff.prior).

init.level

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

cohortsize

the number of patients in each cohort.

ncohort

the total number of cohorts.

nsimu

the total number of trials to be simulated.

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 due to overly toxic. The default value early.stop = 0.95 generally works well.

effearly.stop

the threshold value for early stopping due to low efficacy. The trial would be terminated early if Pr(q_k<\psi |y_k,m_k \ge 3) is smaller than the value of effearly.stop where q_k, y_k and m_k are the efficacy probability, the number of efficacy outcomes and the number of patients at dose level k. \psi is the the lowest acceptable efficacy rate which is set by mineff here. By default, effearly.stop is set as 0.9.

mineff

the lowest acceptable efficacy rate.

seeds

a vector of random seeds for each simulation, for example, seeds = 1:nsimu (default is NULL).

Value

The CFOeff.oc() function returns a list object, which includes the basic setup (simu.setup), comprising the following components:

  • p.true: the true DLT rates under the different dose levels.

  • pE.true: the true efficacy rates under the different dose levels.

  • selpercent: the selection percentage at each dose level.

  • npatients: the averaged number of patients treated at each dose level in one simulation.

  • ntox: the averaged number of toxicity observed at each dose level in one simulation.

  • neff: the averaged number of efficacy outcome at each dose level in one simulation.

  • OBDsel: the percentage of correct selection of the OBD.

  • OBDallo: the percentage of patients allocated to the OBD.

  • averDLT: the percentage of the patients suffering DLT.

  • avereff: the percentage of the patients with efficacy outcomes.

  • percentstop: the percentage of early stopping without selecting the OBD.

  • simu.setup: the parameters for the simulation set-up.

  • class: the phase of the trial.

Note

In the example, we set nsimu = 3 for testing time considerations. In reality, nsimu is typically set as 5000 to ensure the accuracy of the results.

Author(s)

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.

Examples

target <- 0.30; mineff <- 0.30; cohortsize = 3; ncohort = 12; nsimu = 3; init.level = 1
prior.para = list(alp.prior = target, bet.prior = 1 - target, 
                  alp.prior.eff = 0.5, bet.prior.eff = 0.5)
p.true=c(0.05, 0.07, 0.1, 0.12, 0.16)
pE.true=c(0.35, 0.45, 0.5, 0.55, 0.75)
result <- CFOeff.oc (target, p.true, pE.true, prior.para, 
          init.level,cohortsize, ncohort, nsimu, mineff = mineff, seeds = 1:nsimu)
summary(result)
plot(result)
#earlystop for overly tox
target <- 0.30; mineff <- 0.30; cohortsize = 3; ncohort = 12; nsimu = 3; init.level = 1
prior.para = list(alp.prior = target, bet.prior = 1 - target, 
                  alp.prior.eff = 0.5, bet.prior.eff = 0.5)
p.true=c(0.75, 0.77, 0.81, 0.82, 0.86)
pE.true=c(0.35, 0.45, 0.5, 0.55, 0.75)
result <- CFOeff.oc (target, p.true, pE.true, prior.para, 
          init.level,cohortsize, ncohort, nsimu, mineff = mineff, seeds = 1:nsimu)
summary(result)
plot(result)

#earlystop for lower efficacy
target <- 0.30; mineff <- 0.30; cohortsize = 3; ncohort = 20; nsimu = 3; init.level = 1
prior.para = list(alp.prior = target, bet.prior = 1 - target, 
                  alp.prior.eff = 0.5, bet.prior.eff = 0.5)
p.true=c(0.05, 0.07, 0.1, 0.12, 0.16)
pE.true=c(0.001, 0.001, 0.001, 0.002, 0.003)
result <- CFOeff.oc (target, p.true, pE.true, prior.para, 
          init.level,cohortsize, ncohort, nsimu, mineff = mineff, seeds = 1:nsimu)
summary(result)
plot(result)


CFO documentation built on April 4, 2025, 2:34 a.m.

Related to CFOeff.oc in CFO...