| Title: | Operating Characteristics for the Bayesian Optimal Interval Design with Back Filling |
|---|---|
| Description: | Calculate the operating characteristics of the Bayesian Optimal Interval with Back Filling Design for dose escalation in early-phase oncology trials. |
| Authors: | Dominic Magirr [aut, cre, cph], Bairu Zhang [aut] |
| Maintainer: | Dominic Magirr <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.1.1 |
| Built: | 2026-05-28 08:06:56 UTC |
| Source: | https://github.com/openpharma/bfboin |
Get Operating Characteristics for the BF-BOIN Design
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" )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" )
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 |
startdose |
the starting dose level for the trial |
titration |
set |
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.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 of ( |
extrasafe |
set |
offset |
a small positive number (between |
boundMTD |
set |
n.cap |
permanently close a dose for backfilling if the number of patients assigned
to the dose reaches |
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". |
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).
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.
Shiny app: https://biostatistics.mdanderson.org/shinyapps/BF-BOIN/
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))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))
Simulate one BF-BOIN trial
sim.one.trial( trial.id = 1, 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" )sim.one.trial( trial.id = 1, 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" )
trial.id |
an ID for the trial |
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 |
startdose |
the starting dose level for the trial |
titration |
set |
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.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 of ( |
extrasafe |
set |
offset |
a small positive number (between |
boundMTD |
set |
n.cap |
permanently close a dose for backfilling if the number of patients assigned
to the dose reaches |
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". |
A data frame with the number of patients and number of DLTs at each dose level