Learn R Programming

bcrm (version 0.1)

bcrm: Bayesian continuous reasssessment method (CRM) designs for Phase I dose escalation trials.

Description

Implements a wide variety of Bayesian CRM designs, including 1-parameter, 2-parameter and Escalation With Overdose Control (EWOC) designs. The program can run interactively, allowing the user to enter outcomes after each cohort has been recruited, or via simulation to assess operating characteristics.

Usage

bcrm(N, tox = NULL, notox = NULL, p.tox0 = NULL, sdose = NULL, dose = NULL, 
     ff, prior.alpha, cohort = 3, target.tox, constrain = TRUE,
     sdose.calculate = "mean", pointest = "plugin", start = NULL, 
     simulate = FALSE, nsims = 1, truep = NULL, method = "exact", 
     burnin.itr = 2000, production.itr = 2000,
     bugs.directory = "c:/Program Files/WinBUGS14/", plot = FALSE, file = NULL)

Arguments

N
The final sample size of the trial
tox
A vector of length k listing the number of patients who have experienced the outcome (toxicity) at each dose level 1,...,k. If missing, then it is assumed that no data have thus far been collected.
notox
A vector of length k listing the number of patients who have not experienced the outcome (toxicity) at each dose level 1,...,k. If missing, then it is assumed that no data have thus far been collected.
p.tox0
A vector of length k listing the prior probabilities of experiencing the outcome at each dose level 1,...k. The standardised dose levels (CRM "skeleton") are formed from these probabilities using the inverse of the functional for
sdose
A vector of length k listing the standardised doses to be used in the CRM model. Only required if p.tox0 is missing.
dose
Optional vector of length k of actual doses for plotting purposes
ff
A string indicating the functional form of the dose-response curve. Options are [object Object],[object Object],[object Object],[object Object]
prior.alpha
A list of length 3 containing the distributional information for the prior. The first element is a number from 1-4 specifying the type of distribution. Options are
  1. Gamma(a,b), where a=shape, b=scale: mean=a*b, variance=a*b*b
  2. Uniform(a
cohort
The size of each cohort of patients that are sequentially recruited to the trial. Defaults to 3
target.tox
The target toxicity probability. Defaults to 1/3.
constrain
Should a dose-skipping constraint be placed on the escalation procedure, as imposed by a modified CRM? Defaults to TRUE.
sdose.calculate
What plug-in estimate of the prior alpha should be used to calculate the standardised doses? Options are "mean" (default) or "median". Only required if sdose is missing.
pointest
Which summary estimate of the posterior distribution should be used to choose the next dose. Options are "plugin" (default) where the posterior mean of the model parameter(s) is plugged into the function form to obtain estimates of toxicity,
start
Dose level used at the beginning of the trial, or if data have been provided using tox and notox this is the current dose level for the last treated cohort. Required if constrain=TRUE.
simulate
Should a simulation be conducted to assess operating characteristics? Defaults to TRUE. If FALSE, a single CRM trial is run interactively, allowing the user to input outcomes after each cohort is recruited.
nsims
Number of simulations to perform if simulate==TRUE (defaults to 1).
truep
A vector of length k giving the true probabilities of the outcome (toxicity) at each dose level 1,...,k in order to simulate data. Only required if simulate=TRUE
method
Optimisation method: options are "exact" (the default), "BRugs", or "R2WinBUGS".
burnin.itr
Number of burn-in iterations (default 2000).
production.itr
Number of production iterations (default 2000).
bugs.directory
Directory that contains the WinBUGS executable if method="R2WinBUGS". Defaults to "C:/Program Files/WinBUGS14/".
plot
Should the dose-response curve be plotted after each cohort has been entered? Defaults to FALSE.
file
File name where the dose-response plots are stored, in a pdf format.

Value

  • bcrm returns an object of class "bcrm" or "bcrm.sim"; the latter occuring when a simulation has been conducted (simulate=TRUE). The function print (i.e. print.bcrm or print.bcrm.sim) can be used to obtain summary information about the design used, the data observed, current posterior estimates of toxicity, and the next recommended dose level. An object of class "bcrm" is a list with the following components:
  • doseRange of doses
  • sdoseStandardised doses
  • toxA vector of length k listing the number of patients who have experienced the outcome (toxicity) at each dose level 1,...,k
  • notoxA vector of length k listing the number of patients who have not experienced the outcome (toxicity) at each dose level 1,...,k
  • alphaA list with components alpha.mean, the posterior mean of the parameter(s), dose.mean, the posterior mean probability of toxicity at each dose, dose.sd, the posterior standard deviation for probability of toxicity at each dose, dose.quantiles, the posterior quantiles for probability of toxicity at each dose.
  • ndoseA list with components ndose, the dose level recommended for the next patient, est, the estimated probabilitieis of toxicity using the chosen metric (e.g. plugin, mean, quantile)
  • constrainWhether a constrained CRM design was used
  • startThe starting dose for the latest run of the model if constrain=TRUE
  • target.toxThe target toxicity level
  • ffA number from 1-4 identifying the functional form, 1 = Hyperbolic tangent, 2 = 1-parameter logistic, 3 = Power, 4 = 2-parameter logistic
  • methodThe calculation method used
  • pointestThe summary estimate used to choose the next dose, see pointest
  • prior.alphaInformation about the prior used for $alpha$, see prior.alpha
  • alldosesA vector of length N giving the dose level administered to each patient
  • An object of class "bcrm.sim" is a list of length nsims. Each component is itself a list with components similar to those obtained from a "bcrm" object. The print function, print.bcrm.sim should be used to obtain operating characteristics from the simulation.

Details

bcrm implements a Bayesian continuous reassessment method (CRM) (O'Quigley et al., 1990); an adaptive design in which cohorts of patients are sequentially recruited into a Phase I trial. A binary toxicity outcome is assumed (e.g. Dose Limiting Toxicity / No Dose Limiting Toxicity). The current cohort are given a dose "closest" to the specified target toxicity level, as estimated from the posterior distributions of toxicity at each dose level from the patients thus far recruited. If pointest="mean" then the posterior mean probability of toxicity is used to choose the next dose. If pointest="plugin", however, the posterior mean of the model parameter(s) is plugged-into the functional form of the dose-toxicity model. To implement an EWOC design (Babb et al., 1998), pointest should be a quantile, q, between 0 and 0.5. The posterior distribution of the MTD (the dose in which the probability of toxicity is equal to the target toxicity) is then calculated and the next patient is given dose closest to the qth quantile of the MTD distribution. The possible choice of dose-toxicity model can be specified using ff, and includes the 1-parameter hyberbolic tangent, logistic or power "working models", and the 2-parameter logistic model as follows: [object Object],[object Object],[object Object],[object Object] where $\alpha>0$ is the single positive-valued parameter for the 1-parameter models, and $\log(\alpha_1)$ and $\alpha_2>0$ are the intercept and slope parameters of the 2-parameter model. The standardised doses, $d^*$, are specified by the user using sdose, or alternatively the prior probability of toxicity at each dose level is specified using p.tox0. If the latter is used, then the standardised doses are calculated using the inverse of the functional form and a plug-in estimate of the prior mean or median, as specified in sdose.calculate, as follows $$d^* = f^{-1}(\code{p.tox0},\alpha= a)$$ where $f^{-1}$ is the the inverse of the chosen functional form, and the parameter(s) of the model are set equal to $a$, either the prior mean or median of $\alpha$. Data that have already been accrued can be entered using the tox and notox arguments. A constrained CRM design can be implemented using constrain=TRUE, in which case dose-skipping is prohibited (i.e. the next cohort can only be dosed up to one dose level above the current cohort). If a constrained model is used then the starting dose must be specified using start. Alternatively, if data have already been accrued, then start must give the dose level of the most recent cohort. The prior is set using prior.alpha. For example prior.alpha=list(1,1,1) specifies a Gamma prior with shape and scale parameters both equal to one (i.e. an Exponential(1) distribution), whilst prior.alpha=list(2,0,10) specifies a Uniform(0,10) prior. The trial can be run interactively using simulate=FALSE, where the user enters the outcomes for each new cohort, or as a simulation study when simulate=TRUE. The default calculations use exact methods (method="exact") to calculate the mean and quantiles for the posterior distributions, unless a 2-parameter model is specified, in which case MCMC methods must be used. The two choices for MCMC calculations are method="BRugs" or method="R2WinBUGS", the former using the OpenBUGS software, whilst the latter uses WinBUGS. To implement these methods, users require either package to be installed on their system.

References

O'Quigley J., Pepe M., Fisher L. Continuous reassessment method: a practical design for phase I clinical trials in cancer. Biometrics (1990) 46: 33--48. Babb J., Rogatko A., Zacks S. Cancer phase I clinical trials: efficient dose escalation with overdose control. Statistics in Medicine (1998) 17: 1103--1120. Neuenschwander B., Branson M., Gsponer T. Critical aspects of the Bayesian approach to phase I cancer trials. Statistics in Medicine (2008) 27: 2420--2439.

See Also

print.bcrm, print.bcrm.sim, plot.bcrm

Examples

Run this code
## Dose-escalation cancer trial example as described in Neuenschwander et al 2008.
## Pre-defined doses
dose<-c(1,2.5,5,10,15,20,25,30,40,50,75,100,150,200,250)
## Pre-specified probabilities of toxicity
## [dose levels 11-15 not specified in the paper, and are for illustration only]
p.tox0<-c(0.010,0.015,0.020,0.025,0.030,0.040,0.050,0.100,0.170,0.300,0.400,0.500,0.650
  ,0.800,0.900)
## Data from the first 5 cohorts of 18 patients
tox<-c(0,0,0,0,0,0,2,0,0,0,0,0,0,0,0)
notox<-c(3,4,5,4,0,0,0,0,0,0,0,0,0,0,0)
## Target toxicity level
target.tox<-0.30

## A 1-parameter power model is used, with standardised doses calculated using 
## the plug-in prior median
## Prior for alpha is lognormal with mean 0 (on log scale) 
## and standard deviation 1.34 (on log scale)
## The recommended dose for the next cohort if posterior mean is used
Power.LN.bcrm<-bcrm(N=18,tox=tox,notox=notox,p.tox0=p.tox0,dose=dose,ff="power"
  ,prior.alpha=list(3,0,1.34^2),target.tox=target.tox,constrain=FALSE
  ,sdose.calculate="median",pointest="mean")
print(Power.LN.bcrm)
plot(Power.LN.bcrm)

## Simulate 10 replicate trials of size 36 (cohort size 3) using this design 
## with constraint (i.e. no dose-skipping) and starting at lowest dose
## True probabilities of toxicity are set to pre-specified probabilities (p.tox0) 
Power.LN.bcrm.sim<-bcrm(N=36,p.tox0=p.tox0,dose=dose,ff="power"
  ,prior.alpha=list(3,0,1.34^2),target.tox=target.tox,constrain=TRUE
  ,sdose.calculate="median",pointest="mean",start=1,simulate=TRUE,nsims=10,truep=p.tox0)
print(Power.LN.bcrm.sim)

Run the code above in your browser using DataLab