Learn R Programming

CFO (version 2.1.0)

CFO.next: Determination of the dose level for next cohort in the calibration-free odds (CFO) design for phase I trials

Description

In the CFO design for phase I trials, the function is used to determine the dose movement based on the toxicity outcomes of the enrolled cohorts.

Usage

CFO.next(target, cys, cns, currdose, 
       prior.para = list(alp.prior = target, bet.prior = 1 - target),
       cutoff.eli = 0.95, early.stop = 0.95)

Value

The CFO.next() function returns a list object comprising the following elements:

  • target: the target DLT rate.

  • cys: the cumulative counts of DLTs observed at the left, current, and right dose levels.

  • cns: the cumulative counts of patients treated at the left, current, and right dose levels.

  • decision: the decision in the CFO design, where left, stay, and right represent the movement directions, and stop indicates stopping the experiment.

  • currdose: the current dose level.

  • nextdose: the recommended dose level for the next cohort. nextdose = 99 indicates that the trial is terminated due to early stopping.

  • overtox: the situation regarding which positions experience over-toxicity. The dose level indicated by overtox and all the dose levels above experience over-toxicity. overtox = NA signifies that the occurrence of over-toxicity did not happen.

  • toxprob: the expected toxicity probability, \(Pr(p_k > \phi | x_k, m_k)\), at the left, current, and right dose levels, where \(p_k\), \(x_k\), and \(m_k\) is the dose-limiting toxicity (DLT) rate, the numbers of observed DLTs, and the numbers of patients at dose level \(k\). NA indicates that there are no patients at the corresponding dose level.

Arguments

target

the target DLT rate.

cys

the cumulative numbers of DLTs observed at the left, current, and right dose levels.

cns

the cumulative numbers of patients treated at the left, current, and right dose levels.

currdose

the current dose level.

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.

Author

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

Details

The CFO design determines the dose level for the next cohort by assessing evidence from the current dose level and its adjacent levels. This evaluation is based on odds ratios denoted as \(O_k\), where \(k = L, C, R\) represents left, current (central), and right dose levels. Additionally, we define \(\overline{O}_k = 1/O_k\). The ratio \(O_C / \overline{O}_{L}\) indicates the inclination for de-escalation, while \(\overline{O}_C / O_R\) quantifies the tendency for escalation. Threshold values \(\gamma_L\) and \(\gamma_R\) are chosen to minimize the probability of making incorrect decisions. The decision process is summarized in Table 1 of Jin and Yin (2022). The early stopping and dose elimination rules are implemented to ensure patient safety. If the data suggest excessive toxicity at the current dose level, we exclude that dose level and those higher levels. If the lowest dose level is overly toxic, the trial will be terminated according to the early stopping rule.

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

Run this code
## determine the dose level for the next cohort of new patients
cys <- c(0, 1, 0); cns <- c(3, 6, 0)
decision <- CFO.next(target=0.2, cys=cys, cns=cns, currdose=3)
summary(decision)

cys <- c(NA, 3, 0); cns <- c(NA, 3, 0)
decision <- CFO.next(target=0.2, cys=cys, cns=cns, currdose=1)
summary(decision)

cys <- c(0, 3, NA); cns <- c(3, 3, NA)
decision <- CFO.next(target=0.2, cys=cys, cns=cns, currdose=7)
summary(decision)

Run the code above in your browser using DataLab