Get Operating Characteristics for the BF-BOIN Design
get.oc.bf.Rd
Get 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=100
essentially turns off this type of early stopping.- startdose
the starting dose level for the trial
- titration
set
titration=TRUE
to 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=TRUE
to impose a more stringent stopping rule- offset
a small positive number (between
0
and0.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.05
generally works well.- boundMTD
set
boundMTD=TRUE
to 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] 10.890 7.638
#>
#> $percentpatients
#> [1] 58.77591 41.22409
#>
#> $ntox
#> [1] 1.057 3.877
#>
#> $totaltox
#> [1] 4.934
#>
#> $totaln
#> [1] 18.528
#>
#> $percentstop
#> [1] 4.2
#>
#> $duration
#> [1] 21.29058
#>