Type: | Package |
Title: | Operating Characteristics for the Bayesian Optimal Interval Design with Back Filling |
Version: | 0.1.1 |
Description: | Calculate the operating characteristics of the Bayesian Optimal Interval with Back Filling Design for dose escalation in early-phase oncology trials. |
License: | GPL (≥ 3) |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.1 |
Imports: | BOIN, purrr |
Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0), tidyr, dplyr |
Config/testthat/edition: | 3 |
VignetteBuilder: | knitr |
URL: | https://openpharma.github.io/bfboin/ |
NeedsCompilation: | no |
Packaged: | 2025-07-21 15:00:59 UTC; magirdo1 |
Author: | Dominic Magirr [aut, cre, cph], Bairu Zhang [aut] |
Maintainer: | Dominic Magirr <dominic.magirr@novartis.com> |
Repository: | CRAN |
Date/Publication: | 2025-07-22 07:20:12 UTC |
bfboin: 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.
Author(s)
Maintainer: Dominic Magirr dominic.magirr@novartis.com [copyright holder]
Authors:
Bairu Zhang bairu.zhang@novartis.com
See Also
Useful links:
Get Operating Characteristics for the BF-BOIN Design
Description
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 |
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". |
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.
See Also
Shiny app: https://biostatistics.mdanderson.org/shinyapps/BF-BOIN/
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))
Simulate one BF-BOIN trial
Description
Simulate one BF-BOIN trial
Usage
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"
)
Arguments
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". |
Value
A data frame with the number of patients and number of DLTs at each dose level