Title: | Escalation with Overdose Control using 2 Drug Combinations |
---|---|
Description: | Implements Escalation With Overdose Control trial designs using two drug combinations described by this paper <doi:10.1002/sim.6961>(Tighiouart et al., 2016). It calculates the recommended dose for next cohorts and perform simulations to obtain operating characteristics. |
Authors: | Yujie Cui [aut, cre], Quanlin Li [aut], Mourad Tighiouart [aut] |
Maintainer: | Yujie Cui <[email protected]> |
License: | GPL (>= 2) |
Version: | 1.0 |
Built: | 2024-12-16 06:32:38 UTC |
Source: | CRAN |
Implements Escalation With Overdose Control trial designs using two drug combinations described by this paper <doi:10.1002/sim.6961>(Tighiouart et al., 2016). It calculates the recommended dose for next cohorts and perform simulations to obtain operating characteristics.
Yujie Cui [aut, cre], Quanlin Li [aut], Mourad Tighiouart [aut]
Maintainer: Yujie Cui <[email protected]>
Tighiouart M, Li Q and Rogatko A. A Bayesian adaptive design for estimating the maximuym tolerated dose curve using drug combinations in cancer phase I clinical trials. Statistics in Medicine. 2017, 36: 280-290.
Finding the doses of next cohort for a phase I clinical trial based on Escalation with Overdose Control (EWOC) design considering the classic parametrization for binary response and two agents.
ewoc2(dose.a, dose.b, resp, theta, alpha, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn, mm, delta1) ## Default S3 method: ewoc2(dose.a, dose.b, resp, theta, alpha, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn=4000, mm=2000, delta1=0.05)
ewoc2(dose.a, dose.b, resp, theta, alpha, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn, mm, delta1) ## Default S3 method: ewoc2(dose.a, dose.b, resp, theta, alpha, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn=4000, mm=2000, delta1=0.05)
dose.a |
a numeric vector of allowable doses for drug A |
dose.b |
a numeric vector of allowable doses for drug B |
resp |
a numeric vector of allowable responses, 0 or 1 |
theta |
a numeric value defining the proportion of expectd patients to experience a medically unacceptable, dose-limiting toxicity (DLT) if administered the MTD. |
alpha |
a numerical value defining the probability that dose selected by EWOC is higher than the MTD. |
Min.Dose.A |
a numeric value defining the lower bound of the support of the MTD for drug A |
Max.Dose.A |
a numeric value defining the upper bound of the support of the MTD for drug A |
Min.Dose.B |
a numeric value defining the lower bound of the support of the MTD for drug B |
Max.Dose.B |
a numeric value defining the upper bound of the support of the MTD for drug B |
a01 |
a numeric value for beta prior distribution associated with parameter rho01 |
b01 |
a numeric value for beta prior distribution associated with parameter rho01 |
a10 |
a numeric value for beta prior distribution associated with parameter rho10 |
b10 |
a numeric value for beta prior distribution associated with parameter rho10 |
a00 |
a numeric value for beta prior distribution associated with parameter rho00 |
b00 |
a numeric value for beta prior distribution associated with parameter rho00 |
a |
a numeric value for gamma prior distribution associated with parameter eta |
b |
a numeric value for the gamma prior distribution associated with the parameter eta |
delta1x |
Maximum dose escalation at each step for drug A, the default is 0.2*(Max.Dose.A-Min.Dose.A if not assigned) |
delta1y |
Maximum dose escalation at each step for drug B, the default is 0.2*(Max.Dose.B-Min.Dose.B if not assigned) |
burn |
Number of iterations for adaption, see n.adapt in jags.model for detail |
mm |
Number of iterations to monitor, see n.iter in code.samples for detail |
delta1 |
Threshold for toxicity |
data |
a data frame containing the current doses and responses set |
parameters |
list of input parameters |
priors |
list of prior parameters |
nextdose.x |
the next recommended doses for drug A |
nextdose.y |
the next recommended doses for drug B |
Tighiouart M, Li Q and Rogatko A. A Bayesian adaptive design for estimating the maximuym tolerated dose curve using drug combinations in cancer phase I clinical trials. Statistics in Medicine. 2017, 36: 280-290.
test = ewoc2(dose.a=c(0,0),dose.b=c(0,0),resp=c(0,0),theta=0.33,alpha=0.25, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1,a01=1,b01=1,a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test)
test = ewoc2(dose.a=c(0,0),dose.b=c(0,0),resp=c(0,0),theta=0.33,alpha=0.25, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1,a01=1,b01=1,a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test)
Generic function for simulating EWOC trials for 2 drugs combination
ewoc2simu(ntrials, nsamples, type, trho00, trho01, trho10, teta, nx, ny, tp, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, alpha, theta, vai, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn, mm, delta1, seed) ## Default S3 method: ewoc2simu(ntrials, nsamples, type, trho00, trho01, trho10, teta, nx, ny, tp, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, alpha, theta, vai, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn=4000, mm=2000, delta1=0.05, seed)
ewoc2simu(ntrials, nsamples, type, trho00, trho01, trho10, teta, nx, ny, tp, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, alpha, theta, vai, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn, mm, delta1, seed) ## Default S3 method: ewoc2simu(ntrials, nsamples, type, trho00, trho01, trho10, teta, nx, ny, tp, Min.Dose.A, Max.Dose.A, Min.Dose.B, Max.Dose.B, alpha, theta, vai, a01, b01, a10, b10, a00, b00, a, b, delta1x, delta1y, burn=4000, mm=2000, delta1=0.05, seed)
ntrials |
a number indicating the number of trials to be simulated |
nsamples |
a number indicating the number of patients enrolled for each clinical trial |
type |
a character indicating the type of design, could be 'continous' or 'discrete' or their initials |
trho00 |
a numeric value indicating the true value of the parameter rho00, the probability of DLT when the levels of drugs A and B are both 0 |
trho01 |
a numeric value indicating the true value of the parameter rho01, the probability of DLT when the levels of drugs A and B are 0 and 1, respectively |
trho10 |
a numeric value indicating the true value of the parameter rho10, the probability of DLT when the levels of drugs A and B are 1 and 0, respectively |
teta |
a numeric value indicating the true value of the eta, the interaction parameter |
nx |
a numeric value indicating the number of dose levels for drug A. It's only necessary if type = 'discrete' |
ny |
a numeric value indicating the number of dose levels for drug B. It's only necessary if type = 'discrete' |
tp |
a numerical vector indicating the true probabilities of DLT at each dose combinations, the order is by Drug B first, only necessary if type = 'discrete' |
Min.Dose.A |
a numeric value defining the lower bound of the support of the MTD for drug A |
Max.Dose.A |
a numeric value defining the upper bound of the support of the MTD for drug A |
Min.Dose.B |
a numeric value defining the lower bound of the support of the MTD for drug B |
Max.Dose.B |
a numeric value defining the upper bound of the support of the MTD for drug B |
alpha |
a numerical value defining the probability that dose selected by EWOC is higher than the MTD. |
theta |
a numeric value defining the proportion of expectd patients to experience a medically unacceptable, dose-limiting toxicity (DLT) if administered the MTD. |
vai |
a numeric value indicating variable alpha increment for each new cohort |
a01 |
a numeric value for beta prior distribution associated with parameter rho01 |
b01 |
a numeric value for beta prior distribution associated with parameter rho01 |
a10 |
a numeric value for beta prior distribution associated with parameter rho10 |
b10 |
a numeric value for beta prior distribution associated with parameter rho10 |
a00 |
a numeric value for beta prior distribution associated with parameter rho00 |
b00 |
a numeric value for beta prior distribution associated with parameter rho00 |
a |
a numeric value for gamma prior distribution associated with parameter eta |
b |
a numeric value for gamma prior distribution associated with parameter eta |
delta1x |
Maximum dose escalation at each step for drug A, the default is 0.2*(Max.Dose.A-Min.Dose.A if not assigned) |
delta1y |
Maximum dose escalation at each step for drug B, the default is 0.2*(Max.Dose.B-Min.Dose.B if not assigned) |
burn |
Number of iterations for adaption, see n.adapt in jags.model for detail |
mm |
Number of iterations to monitor, see n.iter in code.samples for detail |
delta1 |
Threshold for toxicity |
seed |
a numeric value used in random number generation |
type |
same as input parameter type |
parameters |
list of input parameters |
priors |
list of prior parameters |
Dose.A |
a matrix ntrials x nsamples containing the doses of drug A assigned for each patient in a trial and each trial in the simulation |
Dose.B |
a matrix ntrials x nsamples containing the doses of drug B assigned for each patient in a trial and each trial in the simulation |
Resp |
a matrix ntrials x nsamples containing ones and zeros indicating the occurance of DLT (1) and the absence of DLT (0) for each patient in the trial and each trial in the simulation |
rho00 |
a numeric vector ntrials x 1 containing the estimated rho00 parameter for each trial in the simulation |
rho01 |
a numeric vector ntrials x 1 containing the estimated rho01 parameter for each trial in the simulation |
rho10 |
a numeric vector ntrials x 1 containing the estimated rho10 parameter for each trial in the simulation |
eta |
a numeric vector ntrials x 1 containing the estimated eta parameter for each trial in the simulation |
postlow |
a matrix ntrials x nsamples/2 containing posterior probability of DLT at lower doses (both 0 for durg A and B) at each step in a trial and each trial in the simulation |
postdlts |
a matrix (nx x ny x ntrials) x 4 containing posterior probability of DLT at each dose combination sets in each trial in the simulation. This is used to test whether or not a discrete set of MTDs was selected from a continous MTD curve is kept or dropped. It's avaiable only when type = 'discrete' |
Tighiouart M, Li Q and Rogatko A. A Bayesian adaptive design for estimating the maximuym tolerated dose curve using drug combinations in cancer phase I clinical trials. Statistics in Medicine. 2017, 36: 280-290.
# continous test1 = ewoc2simu(ntrials=10, nsamples=40, type="c", trho00=0.01,trho01=0.2, trho10=0.9,teta=20, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1, a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test1) plot(test1, type="MTD") plot(test1, type="bias") plot(test1, type="percent") # discrete tp = c(0.03,0.05,0.08,0.05,0.08,0.13,0.08,0.13,0.2,0.13,0.2,0.29,0.2,0.29,0.4,0.29,0.4,0.53) test2 = ewoc2simu(ntrials=10, nsamples=40, type="d", nx=6, ny=3, tp=tp, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test2) plot(test2, type="MTD") plot(test2, type="percent")
# continous test1 = ewoc2simu(ntrials=10, nsamples=40, type="c", trho00=0.01,trho01=0.2, trho10=0.9,teta=20, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1, a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test1) plot(test1, type="MTD") plot(test1, type="bias") plot(test1, type="percent") # discrete tp = c(0.03,0.05,0.08,0.05,0.08,0.13,0.08,0.13,0.2,0.13,0.2,0.29,0.2,0.29,0.4,0.29,0.4,0.53) test2 = ewoc2simu(ntrials=10, nsamples=40, type="d", nx=6, ny=3, tp=tp, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test2) plot(test2, type="MTD") plot(test2, type="percent")
Generating MTD curve based on logistic model for two drugs
mtdcurve(rho00, rho01, rho10, eta, theta)
mtdcurve(rho00, rho01, rho10, eta, theta)
rho00 |
a numeric value indicating the true value of the parameter rho00, the probability of DLT when the levels of drugs A and B are both 0 |
rho01 |
a numeric value indicating the true value of the parameter rho01, the probability of DLT when the levels of drugs A and B are 0 and 1, respectively |
rho10 |
a numeric value indicating the true value of the parameter rho10, the probability of DLT when the levels of drugs A and B are 1 and 0, respectively |
eta |
a numeric value indicating the true value of the eta, the interaction parameter |
theta |
a numerical value defining the proportion of expected patients to experience a medically unacceptable, dose-limiting toxicity (DLT) if administered the MTD |
a plot showing the MTD curve based on the logistic model
mtdcurve(rho00=0.01, rho01=0.2, rho10=0.9, eta=20, theta=0.2)
mtdcurve(rho00=0.01, rho01=0.2, rho10=0.9, eta=20, theta=0.2)
Generating probabiity of DLT based on the EWOC 2 drugs combination model
pdlt(rho00, rho01, rho10, eta, theta, x, y)
pdlt(rho00, rho01, rho10, eta, theta, x, y)
rho00 |
a numeric value indicating the true value of the parameter rho00, the probability of DLT when the levels of drugs A and B are both 0 |
rho01 |
a numeric value indicating the true value of the parameter rho01, the probability of DLT when the levels of drugs A and B are 0 and 1, respectively |
rho10 |
a numeric value indicating the true value of the parameter rho10, the probability of DLT when the levels of drugs A and B are 1 and 0, respectively |
eta |
a numeric value indicating the true value of the eta, the interaction parameter |
theta |
a numerical value defining the proportion of expected patients to experience a medically unacceptable, dose-limiting toxicity (DLT) if administered the MTD |
x |
a numeric value of dose level for drug A |
y |
a numeric value of dose level for drug B |
a numeric value indicating the probability of DLT with doses from input based on the logistic model
pdlt(rho00=0.01, rho01=0.2, rho10=0.9, eta=20, theta=0.2, x=0.2, y=0.3)
pdlt(rho00=0.01, rho01=0.2, rho10=0.9, eta=20, theta=0.2, x=0.2, y=0.3)
Function to plot the trial design characteristics from EWOC 2 drugs combination simulation results
## S3 method for class 'ewoc2simu' plot(x, type = "MTD", conf.reg=0.9, plot.figure="Y",...)
## S3 method for class 'ewoc2simu' plot(x, type = "MTD", conf.reg=0.9, plot.figure="Y",...)
x |
an object of class "ewoc2simu", usually a result of a call to ewoc2simu |
type |
a character indicating the type of plots a user requests, could be "MTD", "bias", or "percent". For discrete simulations, "bias" is not available |
conf.reg |
confidence level that controls the region of the doses from the last trial in the MTD plot |
plot.figure |
a character indicating whether user wants the plot, 'Y' would be yes, otherwise would be no. It's mainly for internal uses |
... |
arguments passed to or from methods |
No return value, called for side effects.
Tighiouart M, Li Q and Rogatko A. A Bayesian adaptive design for estimating the maximuym tolerated dose curve using drug combinations in cancer phase I clinical trials. Statistics in Medicine. 2017, 36: 280-290.
# continous test1 = ewoc2simu(ntrials=10, nsamples=40, type="c", trho00=0.01,trho01=0.2, trho10=0.9,teta=20, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1, a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test1) plot(test1, type="MTD") plot(test1, type="bias") plot(test1, type="percent") # discrete tp = c(0.03,0.05,0.08,0.05,0.08,0.13,0.08,0.13,0.2,0.13,0.2,0.29,0.2,0.29,0.4,0.29,0.4,0.53) test2 = ewoc2simu(ntrials=10, nsamples=40, type="d", nx=6, ny=3, tp=tp, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test2) plot(test2, type="MTD") plot(test2, type="percent")
# continous test1 = ewoc2simu(ntrials=10, nsamples=40, type="c", trho00=0.01,trho01=0.2, trho10=0.9,teta=20, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1, a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test1) plot(test1, type="MTD") plot(test1, type="bias") plot(test1, type="percent") # discrete tp = c(0.03,0.05,0.08,0.05,0.08,0.13,0.08,0.13,0.2,0.13,0.2,0.29,0.2,0.29,0.4,0.29,0.4,0.53) test2 = ewoc2simu(ntrials=10, nsamples=40, type="d", nx=6, ny=3, tp=tp, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test2) plot(test2, type="MTD") plot(test2, type="percent")
Summarizing EWOC2 next doses result
## S3 method for class 'ewoc2' print(x, ...)
## S3 method for class 'ewoc2' print(x, ...)
x |
an object of class "ewoc2", usually, a result of a call to ewoc2 |
... |
arguments passed to or from methods |
a data.frame of 2 x 4 with columns for cohort, patients, recommended dose of drug A and recommended dose of drug B for next cohort or 2 patients
Tighiouart M, Li Q and Rogatko A. A Bayesian adaptive design for estimating the maximuym tolerated dose curve using drug combinations in cancer phase I clinical trials. Statistics in Medicine. 2017, 36: 280-290.
test = ewoc2(dose.a=c(0,0),dose.b=c(0,0),resp=c(0,0),theta=0.33,alpha=0.25, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1,a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test)
test = ewoc2(dose.a=c(0,0),dose.b=c(0,0),resp=c(0,0),theta=0.33,alpha=0.25, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1,a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test)
Summarizing EWOC2 simulation results
## S3 method for class 'ewoc2simu' print(x, ...)
## S3 method for class 'ewoc2simu' print(x, ...)
x |
an object of class "ewoc2simu", usually, a result of a call to ewoc2simu |
... |
arguments passed to or from methods |
a data.frame of 7 x 1 with row represent Accuracy square discrepancy (sq), Accuracy absolute discrepancy (abs), Accuracy overdose (od), percent Selection, Average percent DLT, percent Trials with DLT rate > theta+0.05, percent Trials with LDT rate > theta+0.1
Tighiouart M, Li Q and Rogatko A. A Bayesian adaptive design for estimating the maximuym tolerated dose curve using drug combinations in cancer phase I clinical trials. Statistics in Medicine. 2017, 36: 280-290.
# continous test1 = ewoc2simu(ntrials=10, nsamples=40, type="c", trho00=0.01,trho01=0.2, trho10=0.9,teta=20, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1, a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test1) plot(test1, type="MTD") plot(test1, type="bias") plot(test1, type="percent") # discrete tp = c(0.03,0.05,0.08,0.05,0.08,0.13,0.08,0.13,0.2,0.13,0.2,0.29,0.2,0.29,0.4,0.29,0.4,0.53) test2 = ewoc2simu(ntrials=10, nsamples=40, type="d", nx=6, ny=3, tp=tp, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test2) plot(test2, type="MTD") plot(test2, type="percent")
# continous test1 = ewoc2simu(ntrials=10, nsamples=40, type="c", trho00=0.01,trho01=0.2, trho10=0.9,teta=20, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1, a10=1,b10=1, a00=1,b00=1,a=0.8,b=0.0384) print(test1) plot(test1, type="MTD") plot(test1, type="bias") plot(test1, type="percent") # discrete tp = c(0.03,0.05,0.08,0.05,0.08,0.13,0.08,0.13,0.2,0.13,0.2,0.29,0.2,0.29,0.4,0.29,0.4,0.53) test2 = ewoc2simu(ntrials=10, nsamples=40, type="d", nx=6, ny=3, tp=tp, Min.Dose.A=0, Max.Dose.A=1, Min.Dose.B=0, Max.Dose.B=1, alpha=0.25, theta=0.20, a01=1,b01=1,a10=1,b10=1,a00=1,b00=1,a=0.8,b=0.0384) print(test2) plot(test2, type="MTD") plot(test2, type="percent")