This function selects the optimal biological dose (OBD) at the end of a single-agent phase I/II trial.
select.obd.kb(
target.toxicity,
target.efficacy,
npts,
ntox,
neff,
p1 = 0.15,
p2 = 0.4,
q1 = 0.3,
q2 = 0.6,
cutoff.eli.toxicity = 0.95,
cutoff.eli.efficacy = 0.3,
w1.toxicity = 0.33,
w2.toxicity = 1.09,
indicator = target.toxicity
)select.obd.kb() returns the selected dose:
Selected OBD level using utility function 1 ($obd1), as described in the Details section.
Selected OBD level using utility function 2 ($obd2), as described in the Details section.
Selected OBD level using utility function 3 ($obd3), as described in the Details section.
The target dose-limiting toxicity (DLT) rate.
The target efficacy rate.
The vector containing the total number of patients treated at each dose level.
The vector containing the number of subjects who experienced toxicities at each dose level.
The vector containing the number of subjects who experienced efficacies at each dose level.
The cutoff lower limit for safety utility function 1, described in the Details section.
The cutoff upper limit for safety utility function 1, described in the Details section.
The cutoff lower limit for efficacy utility function 1, described in the Details section.
The cutoff upper limit for efficacy utility function 1, described in the Details section.
The cutoff value to eliminate a dose with unacceptable high toxicity for safety. The default value is 0.95.
The cutoff value for futility rule, the acceptable lowest efficacy. The default value is 0.3.
The weight for toxicity utility function 2 and 3, described in the Details section.
The weight for toxicity utility function 3, described in the Details section.
The indicator cutoff value for utility function 3, described in the Details section.
Xiaomeng Yuan, Chen Li, Hongying Sun, Li Tang and Haitao Pan
select.obd.kb() selects the OBD that is the most desirable based on benefit-risk tradeoff considering both toxicity and efficacy outcomes. A utility score is used to quantify the desirability of all admissible doses. Calculation of utility scores requires the posterior probabilities for toxicity \(p_i\) and efficacy \(q_i\), which can be computed by using \(beta(\alpha_p + x_i,\beta_p + n_i - x_i)\) and \(beta(\alpha_q + y_i,\beta_q + n_i - y_i) \) assuming that the prior for both \(p_i\) and \(q_i\) follows independent beta distributions \(beta(\alpha_p,\beta_p)\) and \(beta(\alpha_q,\beta_q)\). Three criteria are used to calculate the desirability in this function.
The first criterion relies on a utility function for toxicity \(f_1(p)\), where p denotes the toxicity rate, and on a utility function for efficacy \(f_2(q)\), where q denotes the efficacy rate. \(f_1(p)\) is 1 if \(p \in [0, p1)\); \(f_1(p)\) is 0 if \(p \in [p2, 1]\); \(f_1(p)\) is \(1- (p-p1)/(p2-p1)\) if \(p \in [p1, p2)\). \(f_2(p)\) is 1 if \(p \in (0, p1)\). Here, p1 is the cutoff lower limit and p2 is the cutoff upper limit for safety utility function 1\(f_1(p)\).
Similarly, \(f_2(q)\) is 1 if \(p \in [0, q1)\); \(f_2(q)\) is 0 if \(p \in [q2, 1]\); \(f_2(q)\) is \(1- (p-q1)/(q2-q1)\) if \(p \in [q1, q2)\). \(f_2(p)\) is 1 if \(p \in (0, q1)\). Here, q1 is the cutoff lower limit and q2 is the cutoff upper limit for safety utility function \(f_2(q)\).
The utility score that quantifies benefit-risk tradeoff at the current dose i is calculated as follows: $$ U(p_i, q_i) =f_1(p) * f_2(q) $$
The second criterion depends on a marginal toxicity probability \(\pi_{T,i} = beta(\alpha_p + x_i,\beta_p + n_i - x_i) \) and a marginal efficacy probability \(\pi_{E,i} = beta(\alpha_q + y_i,\beta_q + n_i - y_i) \). Then the utility score is calculated as follows: $$U_i= \pi_{E,i} - w_1*\pi_{T,i} $$
The third criterion also depends on a marginal toxicity probability \(\pi_{T,i} = beta(\alpha_p + x_i,\beta_p + n_i - x_i) \) and a marginal efficacy probability \(\pi_{E,i} = beta(\alpha_q + y_i,\beta_q + n_i - y_i) \), but it has an additional penalty when the posterior toxicity probability is high by using an indicator function. Then utility score using this function is calculated as follows:
$$U_j= \pi_{E,i} - w_1*\pi_{T,i}-w_2*\pi_{T,i}*I(\pi_{T,i}>\rho)$$ Here, the recommended \(\rho\) is the target toxicity rate.
Once the utility score is computed for all the doses, the optimal biological dose is calculated as follows: $$ d = argmax_i[ U(p_i, q_i) | D]$$
Li DH, Whitmore JB, Guo W, Ji Y. Toxicity and efficacy probability interval design for phase I adoptive cell therapy dose-finding clinical trials. Clinical Cancer Research. 2017; 23:13-20. https://clincancerres.aacrjournals.org/content/23/1/13.long
Liu S, Johnson VE. A robust Bayesian dose-finding design for phase I/II clinical trials. Biostatistics. 2016; 17(2):249-63. https://academic.oup.com/biostatistics/article/17/2/249/1744018
Zhou Y, Lee JJ, Yuan Y. A utility-based Bayesian optimal interval (U-BOIN) phase I/II design to identify the optimal biological dose for targeted and immune therapies. Statistics in Medicine. 2019; 38:S5299-5316. https://onlinelibrary.wiley.com/doi/epdf/10.1002/sim.8361
Other single-agent phase I/II functions:
get.decision.obd.kb(),
get.decision.obd2.kb(),
get.oc.obd.kb(),
get.oc.obd2.kb()
# \donttest{
target.toxicity<-0.3
target.efficacy<-0.4
npts <- c(3,6,12,3,3)
ntox <- c(1,2,4,2,3)
neff <- c(0,0,5,1,1)
obd <- select.obd.kb (target.toxicity=target.toxicity,
target.efficacy= target.efficacy, npts = npts,
ntox = ntox, neff = neff)
print(obd)
# }
Run the code above in your browser using DataLab