get.boundary {BOIN}  R Documentation 
Use this function to generate the optimal dose escalation and deescalation boundaries for conducting the trial.
get.boundary(
target,
ncohort,
cohortsize,
n.earlystop = 100,
p.saf = 0.6 * target,
p.tox = 1.4 * target,
cutoff.eli = 0.95,
extrasafe = FALSE,
offset = 0.05
)
target 
the target DLT rate 
ncohort 
the total number of cohorts 
cohortsize 
the cohort size 
n.earlystop 
the early stopping parameter. If the number of patients treated at
the current dose reaches 
p.saf 
the highest toxicity probability that is deemed subtherapeutic
(i.e., below the MTD) such that dose escalation should be made.
The default value is 
p.tox 
the lowest toxicity probability that is deemed overly toxic such
that deescalation is required. The default value is

cutoff.eli 
the cutoff to eliminate an overly toxic dose for safety.
We recommend the default value ( 
extrasafe 
set 
offset 
a small positive number (between 0 and 0.5) to control how strict
the stopping rule is when 
The dose escalation and deescalation boundaries are all we need to run a
phase I trial when using the BOIN design. The decision of which dose to
administer to the next cohort of patients does not require complicated
computations, but only a simple comparison of the observed DLT rate
at the current dose with the dose escalation and deescalation boundaries.
If the observed DLT rate at the current dose is smaller than or equal
to the escalation boundary, we escalate the dose; if the observed toxicity
rate at the current dose is greater than or equal to the deescalation boundary,
we deescalate the dose; otherwise, we retain the current dose. The dose
escalation and deescalation boundaries are chosen to minimize the probability
of assigning patients to subtherapeutic or overly toxic doses, thereby
optimizing patient ethics. get.boundary()
also outputs the elimination
boundary, which is used to avoid treating patients at overly toxic doses based
on the following Bayesian safety rule: if Pr(p_j > \phi  m_j , n_j ) > 0.95
and
n_j \ge 3
, dose levels j
and higher are eliminated from the trial, where p_j
is
the toxicity probability of dose level j
, \phi
is the target DLT rate,
and m_j
and n_j
are the number of toxicities and patients treated at dose level j
.
The trial is terminated if the lowest dose is eliminated.
The BOIN design has two builtin stopping rules: (1) stop the trial if the lowest dose is eliminated
due to toxicity, and no dose should be selected as the MTD; and (2) stop the trial
and select the MTD if the number of patients treated at the current dose reaches
n.earlystop
. The first stopping rule is a safety rule to protect patients
from the case in which all doses are overly toxic. The rationale for the second
stopping rule is that when there is a large number (i.e., n.earlystop
)
of patients assigned to a dose, it means that the dosefinding algorithm has
approximately converged. Thus, we can stop the trial early and select the MTD
to save the sample size and reduce the trial duration. For some applications,
investigators may prefer a more strict safety stopping rule than rule (1) for
extra safety when the lowest dose is overly toxic. This can be achieved by
setting extrasafe=TRUE
, which imposes the following more strict safety
stopping rule: stop the trial if (i) the number of patients treated at the
lowest dose >=3, and (ii) Pr(toxicity\ rate\ of\ the\ lowest\ dose > \code{target}  data)
> \code{cutoff.eli}\code{offset}
. As a tradeoff, the strong stopping rule will decrease the
MTD selection percentage when the lowest dose actually is the MTD.
get.boundary()
returns a list object, including the dose escalation and deescalation
boundaries $lambda_e
and $lambda_d
and the corresponding decision tables
$boundary_tab
and $full_boundary_tab
. If extrasafe=TRUE
, the function also returns
a (more strict) safety stopping boundary $stop_boundary
.
We should avoid setting the values of p.saf
and p.tox
very close to the
target
. This is because the small sample sizes of typical phase I trials prevent us from
differentiating the target DLT rate from the rates close to it. In addition,
in most clinical applications, the target DLT rate is often a rough guess,
and finding a dose level with a DLT rate reasonably close to the target rate
will still be of interest to the investigator. The default values provided by
get.boundary()
are generally reasonable for most clinical applications.
Suyu Liu and Ying Yuan
Liu S. and Yuan, Y. (2015). Bayesian Optimal Interval Designs for Phase I Clinical Trials, Journal of the Royal Statistical Society: Series C, 64, 507523.
Yan, F., Zhang, L., Zhou, Y., Pan, H., Liu, S. and Yuan, Y. (2020).BOIN: An R Package for Designing SingleAgent and DrugCombination DoseFinding Trials Using Bayesian Optimal Interval Designs. Journal of Statistical Software, 94(13),132.<doi:10.18637/jss.v094.i13>.
Yuan Y., Hess K.R., Hilsenbeck S.G. and Gilbert M.R. (2016). Bayesian Optimal Interval Design: A Simple and Wellperforming Design for Phase I Oncology Trials, Clinical Cancer Research, 22, 42914301.
Tutorial: http://odin.mdacc.tmc.edu/~yyuan/Software/BOIN/BOIN2.6_tutorial.pdf
Paper: http://odin.mdacc.tmc.edu/~yyuan/Software/BOIN/paper.pdf
## get the dose escalation and deescalation boundaries for BOIN design with
## the target DLT rate of 0.3, maximum sample size of 30, and cohort size of 3
bound < get.boundary(target=0.3, ncohort=10, cohortsize=3)
summary(bound) # get the descriptive summary of the boundary
plot(bound) # plot the flowchart of the design with boundaries