Get Operating Characteristics for the BF-BOIN Design
get.oc.bf.RdGet Operating Characteristics for the BF-BOIN Design
Usage
get.oc.bf(
ntrial = 1000,
seed = 3262,
target = 0.25,
p.true = c(0.1, 0.3, 0.5),
ncohort = 10,
cohortsize = 3,
n.earlystop = 100,
startdose = 1,
titration = FALSE,
p.saf = 0.6 * target,
p.tox = 1.4 * target,
cutoff.eli = 0.95,
extrasafe = FALSE,
offset = 0.05,
boundMTD = FALSE,
n.cap = 12,
end.backfill = TRUE,
n.per.month = 3,
dlt.window = 1,
p.response.true = c(1, 1, 1),
three.plus.three = FALSE,
accrual = "uniform",
backfill.assign = "highest"
)Arguments
- ntrial
the total number of trials to be simulated
- seed
the random number seed for simulation
- target
the target DLT rate
- p.true
a vector containing the true toxicity probabilities of the investigational dose levels.
- 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
n.earlystop, stop the trial and select the MTD based on the observed data. The default valuen.earlystop=100essentially turns off this type of early stopping.- startdose
the starting dose level for the trial
- titration
set
titration=TRUEto perform dose escalation with cohort size = 1 to accelerate dose escalation at the begining of the trial.- p.saf
the highest toxicity probability that is deemed subtherapeutic (i.e. below the MTD) such that dose escalation should be undertaken. The default value is
p.saf=0.6*target.- p.tox
the lowest toxicity probability that is deemed overly toxic such that deescalation is required. The default value is
p.tox=1.4*target).- cutoff.eli
the cutoff to eliminate an overly toxic dose for safety. We recommend the default value of (
cutoff.eli=0.95) for general use.- extrasafe
set
extrasafe=TRUEto impose a more stringent stopping rule- offset
a small positive number (between
0and0.5) to control how strict the stopping rule is whenextrasafe=TRUE. A larger value leads to a more strict stopping rule. The default valueoffset=0.05generally works well.- boundMTD
set
boundMTD=TRUEto impose the condition: the isotonic estimate of toxicity probability for the selected MTD must be less than de-escalation boundary.- n.cap
permanently close a dose for backfilling if the number of patients assigned to the dose reaches
n.cap- end.backfill
when the dose escalation ends, the backfilling by definition also ends. Default is TRUE.
- n.per.month
patient accrual rate per month
- dlt.window
DLT assessment window (months)
- p.response.true
a vector containing the true response probabilities of the investigational dose levels
- three.plus.three
modify the decision from de-escalation to stay when observing 1 DLT out of 3 patients
- accrual
"uniform" or "poisson", according to whether accrual distribution is uniform (consistent with Shiny App) or a Poisson process (consistent with publication)
- backfill.assign
How to assign backfill dose given the open backfill doses. Options are "highest" (default), "lowest", or "random".
Value
get.oc.bf() returns the operating characteristics of the BOIN design as a list,
including:
(1) selection percentage at each dose level ($selpercent),
(2) the average number of patients treated at each dose level ($npatients),
(3) the percentage of patients treated at each dose level on average ($percentpatients),
(4) the average number of toxicities observed at each dose level ($ntox),
(5) the average number of toxicities in total ($totaltox),
(6) the average number of patients in total($totaln),
(7) the percentage of early stopping without selecting the MTD ($percentstop),
(8) the average duration of the trial (duration).
References
Zhao Y, Yuan Y, Korn EL, Freidlin B. Backfilling patients in phase I dose-escalation trials using Bayesian optimal interval design (BOIN). Clinical Cancer Research. 2024 Feb 16;30(4):673-9.
Examples
get.oc.bf(ntrial = 1000,
seed = 9,
target = 0.25,
p.true = c(0.1, 0.5),
ncohort = 10,
cohortsize = 3,
n.earlystop = 9,
startdose = 1,
titration = FALSE,
cutoff.eli = 0.95,
extrasafe = TRUE,
offset = 0.1,
boundMTD=FALSE,
n.cap = 12,
end.backfill = TRUE,
n.per.month = 1,
dlt.window = 1,
p.response.true = c(0.001, 0.001))
#> $selpercent
#> [1] 78.7 17.1
#>
#> $npatients
#> 1 2
#> 10.890 7.638
#>
#> $percentpatients
#> 1 2
#> 58.77591 41.22409
#>
#> $ntox
#> 1 2
#> 1.057 3.877
#>
#> $totaltox
#> [1] 4.934
#>
#> $totaln
#> [1] 18.528
#>
#> $percentstop
#> [1] 4.2
#>
#> $duration
#> [1] 21.29058
#>