Type: Package
Title: Backfill Bayesian Optimal Interval Design Using Efficacy and Toxicity
Version: 1.0.0
Description: Implements the Backfill Bayesian Optimal Interval Design (BF-BOIN-ET), a novel clinical trial methodology for dose optimization that simultaneously consider both efficacy and toxicity outcome as described in (Takeda et al (2025) <doi:10.1002/pst.2470>). The package has been extended to include a seamless two-stage phase I/II trial design with backfill and joint efficacy and toxicity monitoring as described in (Takeda et al (2026) <doi:10.1002/pst.70092>).
License: GPL-3
Encoding: UTF-8
RoxygenNote: 7.3.3
Imports: Iso, copula, dplyr, tidyselect, magrittr, BOP2FE, boinet, BOIN
NeedsCompilation: no
Packaged: 2026-04-13 02:42:34 UTC; A4021579
Author: Jing Zhu [cre, aut], Kentaro Takeda [aut], Yimer Belay Birlie [aut]
Maintainer: Jing Zhu <zhujing716@gmail.com>
Repository: CRAN
Date/Publication: 2026-04-14 09:10:09 UTC

backboinet

Description

Obtain the operating characteristics of the backfill bayesian optimal interval design using efficacy and toxicity outcomes for dose optimization within fixed scenarios

Usage

get.oc.backboinet(
  target_T = 0.3,
  toxprob,
  target_E = 0.25,
  effprob,
  n.dose,
  startdose,
  ncohort,
  cohortsize,
  pT.saf = 0.6 * target_T,
  pT.tox = 1.4 * target_T,
  pE.saf = 0.6 * target_E,
  alpha.T1 = 0.5,
  alpha.E1 = 0.5,
  tau.T,
  tau.E,
  te.corr = 0.2,
  gen.event.time = "weibull",
  accrual,
  gen.enroll.time = "uniform",
  n.elimination = 6,
  stopping.npts = 12,
  suspend = 0,
  stopping.prob.T = 0.95,
  stopping.prob.E = 0.9,
  ppsi01 = 0,
  ppsi00 = 40,
  ppsi11 = 60,
  ppsi10 = 100,
  n.sim = 1000,
  seed.sim = 100
)

Arguments

target_T

Target toxicity probability. The default value is target_T=0.3. When observing 1 DLT out of 3 patients and the target DLT rate is between 0.25 and 0.279, the decision is to stay at the current dose due to a widely accepted practice.

toxprob

Vector of true toxicity probability.

target_E

The minimum required efficacy probability. The default value is target_E=0.25.

effprob

Vector of true efficacy probability.

n.dose

Number of dose.

startdose

Starting dose. The lowest dose is generally recommended.

ncohort

Number of cohort.

cohortsize

Cohort size.

pT.saf

Highest toxicity probability that is deemed sub-therapeutic such that dose-escalation should be pursued. The default value is pT.saf=target_T*0.6.

pT.tox

Lowest toxicity probability that is deemed overly toxic such that dose de-escalation is needed. The default value is pT.tox=target_T*1.4.

pE.saf

Minimum probability deemed efficacious such that the dose levels with less than delta1 are considered sub-therapeutic. The default value is pE.saf=target_E*0.6.

alpha.T1

Probability that toxicity event occurs in the late half of toxicity assessment window. The default value is alpha.T1=0.5.

alpha.E1

Probability that efficacy event occurs in the late half of assessment window. The default value is alpha.E1=0.5.

tau.T

Toxicity assessment windows (months).

tau.E

Efficacy assessment windows (months).

te.corr

Correlation between toxicity and efficacy probability, specified as Gaussian copula parameter. The default value is te.corr=0.2.

gen.event.time

Method to generate the time to first toxicity and efficacy outcome. Weibull distribution is used when gen.event.time ="weibull". Uniform distribution is used when gen.event.time="uniform". The default value is gen.event.time="weibull".

accrual

Accrual rate (months) (patient accrual rate per month).

gen.enroll.time

Method to generate enrollment time. Uniform distribution is used when gen.enroll.time="uniform". Exponential distribution is used when gen.enroll.time="exponential". The default value is gen.enroll.time="uniform".

n.elimination

a minimum sample size for dose elimination. If the number of patients treated at the current dose reaches n.elimination and meet elimination dose level criteria, eliminate current dose level and higher doses when meet toxicity criteria and eliminate current dose level when meet efficacy criteria. The default value is n.elimination=6.

stopping.npts

Early study termination criteria for the number of patients in the dose-escalation and backfill cohorts. If the number of patients at the current dose reaches this criteria and the same dose level is recommended as the next dose level, the study is terminated. The default value is stopping.npts=12.

suspend

The suspension rule that holds off the decision on dose allocation for the dose-escalation cohort until sufficient toxicity information is available. For example, setting as 0.33 which means one-third of the patients had not completed the toxicity evaluation at the current dose level in the dose escalation cohort. The default value suspend=0 essentially turns off this type of suspending rule, that is all patients should complete the toxicity evaluation at the current dose level in the dose escalation cohort

stopping.prob.T

Early study termination criteria for toxicity, taking a value between 0 and 1. If the posterior probability that toxicity outcome is less than the target toxicity probability (target_T) is larger than this criteria, the dose levels are eliminated from the study. The default value is stopping.prob.T=0.95.

stopping.prob.E

Early study termination criteria for efficacy, taking a value between 0 and 1. If the posterior probability that efficacy outcome is less than the minimum efficacy probability (target_E) is larger than this criteria, the dose levels are eliminated from the study. The default value is stopping.prob.E=0.90.

ppsi01

Score for toxicity=yes and efficacy=no in utility defined by scoring.The default value is psi01=0.

ppsi00

Score for toxicity=no and efficacy=no in utility defined by scoring. The default value is psi00=40.

ppsi11

Score for toxicity=yes and efficacy=yes in utility defined by scoring. The default value is psi11=60.

ppsi10

Score for toxicity=no and efficacy=yes in utility defined by scoring. The default value is psi10=100.

n.sim

Number of simulated trial. The default value is n.sim=1000.

seed.sim

Seed for random number generator. The default value is seed.sim=100.

Details

The backboinet is a function which generates the operating characteristics of the backfill bayesian optimal interval design using efficacy and toxicity outcomes for dose optimization by a simulation study. Users can specify a variety of study settings to simulate studies. The operating characteristics of the design are summarized by the percentage of times that each dose level was selected as optimal biological dose and the average number of patients who were treated at each dose level. The percentage of times that the study was terminated and the expected study duration are also provided.

Value

The backboinet returns a list containing the following components:

toxprob

True toxicity probability.

effprob

True efficacy probability.

phi

Target toxicity probability.

delta

Target efficacy probability.

lambda1

Lower toxicity boundary in dose escalation/de-escalation.

lambda2

Upper toxicity boundary in dose escalation/de-escalation.

eta1

Lower efficacy boundary in dose escalation/de-escalation.

tau.T

Toxicity assessment windows (months).

tau.E

Efficacy assessment windows (months).

suspend

The suspension rule that holds off the decision on dose allocation for the dose-escalation cohort until sufficient toxicity information is available.

accrual

Accrual rate (months) (patient accrual rate per month).

n.patient

Average number of patients who were treated at each dose level in dose-esclation and backfill cohorts

n.bpatient

Average number of back filled patients who were treated at each dose level

n.tox.patient

Average number of patients who experienced toxicity at each dose level in dose-esclation and backfill cohorts

n.eff.patient

Average number of patients who experienced efficacy at each dose level in dose-esclation and backfill cohorts

n.tox.bpatient

Average number of patients who experienced toxicity at each dose level in backfill cohort

n.eff.bpatient

Average number of patients who experienced efficacy at each dose level in backfill cohort

prop.select

Percentage of times that each dose level was selected as optimal biological dose.

prop.stop

Percentage of times that the study was terminated.

duration

Expected study duration (months)

totaln

Total patients

data.obs.n

Record the number of patients in each dose level within the simulations during the trial

obd

Record the optimal dose in each simulation during the trial

backfilltimes

Record how may times we back-filled during the trial

backfillcount

Record the number of back-filled patients in dose level within the simulations during the trial

PCS

The percentage of trials that the optimal dose was correctly selected.

PCA

The percentage of patients that were correctly allocated to the optimal dose.

PTS

The percentage of toxic doses selection.

PTA

The percentage of patients who were allocated to toxic doses.

References

Takeda, K., Zhu, J. and Hirakawa, A. (2025), BF-BOIN-ET: A Backfill Bayesian Optimal Interval Design Using Efficacy and Toxicity Outcomes for Dose Optimization. Pharmaceutical Statistics, 24: e2470. https://doi.org/10.1002/pst.2470

Examples


target_T=0.3
target_E=0.25
toxprob=c(0.03,0.05,0.2,0.22,0.45)
effprob=c(0.05,0.1,0.5,0.68,0.7)
## Not run: 
get.oc.backboinet(target_T=target_T, toxprob=toxprob,target_E=target_E,
effprob=effprob,n.dose=5,startdose=1,ncohort=10,cohortsize=3,
pT.saf=0.6 * target_T,pT.tox = 1.4 * target_T,pE.saf = 0.6 * target_E,
alpha.T1=0.5,alpha.E1=0.5,tau.T=1,tau.E=1,te.corr=0.2,
gen.event.time="weibull",accrual=3,gen.enroll.time="uniform",n.elimination=6,
stopping.npts=12,suspend=0,stopping.prob.T=0.95,stopping.prob.E=0.90,
ppsi01=0,ppsi00=40,ppsi11=60,ppsi10=100,n.sim=2,seed.sim=100)

## End(Not run)

bfboinet_rp2

Description

Obtain the operating characteristics of a seamless two-stage phase I/II trial design with backfill and joint monitoring for dose optimization within fixed scenarios

Usage

get.oc.backboinet_rp2(
  target_T = 0.3,
  toxprob,
  target_E = 0.25,
  effprob,
  n.dose,
  startdose,
  ncohort,
  cohortsize,
  pT.saf = 0.6 * target_T,
  pT.tox = 1.4 * target_T,
  pE.saf = 0.6 * target_E,
  alpha.T1 = 0.5,
  alpha.E1 = 0.5,
  tau.T,
  tau.E,
  te.corr = 0.2,
  gen.event.time = "weibull",
  accrual,
  gen.enroll.time = "uniform",
  n.elimination = 6,
  stopping.npts = 12,
  suspend = 0,
  stopping.prob.T = 0.95,
  stopping.prob.E = 0.9,
  Nesc = 36,
  boundMTD = FALSE,
  estpt.method,
  obd.method,
  w1 = 0.33,
  w2 = 1.09,
  plow.ast = pT.saf,
  pupp.ast = pT.tox,
  qlow.ast = pE.saf/2,
  qupp.ast = target_E,
  stage1.method,
  H0,
  H1,
  nIA.sample,
  nIA = length(nIA.sample),
  method = "power",
  t1e_optimal_pars,
  lambda1_optimal_pars,
  lambda2_optimal_pars,
  grid1_optimal_pars,
  gamma1_optimal_pars,
  gamma2_optimal_pars,
  grid2_optimal_pars,
  eta1_optimal_pars,
  eta2_optimal_pars,
  grid3_optimal_pars,
  ppsi01 = 0,
  ppsi00 = 40,
  ppsi11 = 60,
  ppsi10 = 100,
  n.sim = 1000,
  seed.sim = 100
)

Arguments

target_T

Target toxicity probability. The default value is target_T=0.3. When observing 1 DLT out of 3 patients and the target DLT rate is between 0.25 and 0.279, the decision is to stay at the current dose due to a widely accepted practice.

toxprob

Vector of true toxicity probability.

target_E

The minimum required efficacy probability. The default value is target_E=0.25.

effprob

Vector of true efficacy probability.

n.dose

Number of dose for stage 1.

startdose

Starting dose. The lowest dose is generally recommended.

ncohort

Number of cohort for stage 1.

cohortsize

Cohort size for stage 1.

pT.saf

Highest toxicity probability that is deemed sub-therapeutic such that dose-escalation should be pursued. The default value is pT.saf=target_T*0.6.

pT.tox

Lowest toxicity probability that is deemed overly toxic such that dose de-escalation is needed. The default value is pT.tox=target_T*1.4.

pE.saf

Minimum probability deemed efficacious such that the dose levels with less than delta1 are considered sub-therapeutic. The default value is pE.saf=target_E*0.6.

alpha.T1

Probability that toxicity event occurs in the late half of toxicity assessment window. The default value is alpha.T1=0.5.

alpha.E1

Probability that efficacy event occurs in the late half of assessment window. The default value is alpha.E1=0.5.

tau.T

Toxicity assessment windows (months).

tau.E

Efficacy assessment windows (months).

te.corr

Correlation between toxicity and efficacy probability, specified as Gaussian copula parameter. The default value is te.corr=0.2.

gen.event.time

Method to generate the time to first toxicity and efficacy outcome. Weibull distribution is used when gen.event.time ="weibull". Uniform distribution is used when gen.event.time="uniform". The default value is gen.event.time="weibull".

accrual

Accrual rate (months) (patient accrual rate per month).

gen.enroll.time

Method to generate enrollment time. Uniform distribution is used when gen.enroll.time="uniform". Exponential distribution is used when gen.enroll.time="exponential". The default value is gen.enroll.time="uniform".

n.elimination

to avoid allocating patients to severely toxic doses, dose elimination criteria are applied before the dose allocation decision when n treated at the current dose reaches n.elimination,it is a minimum sample size for dose elimination.The default value is n.elimination=6.

stopping.npts

Early study termination criteria for the number of patients in the dose-escalation and backfill cohorts. If the number of patients at the current dose reaches this criteria and the same dose level is recommended as the next dose level, the study is terminated. The default value is stopping.npts=12.

suspend

The suspension rule that holds off the decision on dose allocation for the dose-escalation cohort until sufficient toxicity information is available. For example, setting as 0.33 which means one-third of the patients had not completed the toxicity evaluation at the current dose level in the dose escalation cohort. The default value suspend=0 essentially turns off this type of suspending rule, that is all patients should complete the toxicity evaluation at the current dose level in the dose escalation cohort

stopping.prob.T

Early study termination criteria for toxicity, taking a value between 0 and 1. If the posterior probability that toxicity outcome is less than the target toxicity probability (target_T) is larger than this criteria, the dose levels are eliminated from the study. The default value is stopping.prob.T=0.95.

stopping.prob.E

Early study termination criteria for efficacy, taking a value between 0 and 1. If the posterior probability that efficacy outcome is less than the minimum efficacy probability (target_E) is larger than this criteria, the dose levels are eliminated from the study. The default value is stopping.prob.E=0.90.

Nesc

the total number of patients () in the dose-escalation cohort (Stage 1) reaches the maximum total number of patients in the dose-escalation cohort (Nesc). The default value is Nesc=36.

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. The default value is boundMTD=FALSE.

estpt.method

Method to estimate the efficacy probability. Fractional polynomial logistic regression is used when estpt.method="fp.logistic". Model averaging of multiple unimodal isotopic regression is used when estpt.method="multi.iso". Observed efficacy probability is used when estpt.method="obs.prob".

obd.method

Method to select the optimal biological dose. Utility defined by weighted function is used when obd.method="utility.weighted". Utility defined by truncated linear function is used when obd.method="utility.truncated.linear". Utility defined by scoring is used when obd.method="utility.scoring". Highest estimated efficacy probability is used when obd.method="max.effprob".

w1

Weight for toxicity-efficacy trade-off in utility defined by weighted function. This must be specified when using obd.method="utility.weighted". The default value is w1=0.33.

w2

Weight for penalty imposed on toxic doses in utility defined by weighted function. This must be specified when using obd.method="utility.weighted". The default value is w2=1.09.

plow.ast

Lower threshold of toxicity linear truncated function. This must be specified when using obd.method="utility.truncated.linear". The default value is plow.ast=pT.saf.

pupp.ast

Upper threshold of toxicity linear truncated function. This must be specified when using obd.method="utility.truncated.linear". The default value is pupp.ast=pT.tox.

qlow.ast

Lower threshold of efficacy linear truncated function. This must be specified when using obd.method="utility.truncated.linear". The default value is qlow.ast=pE.saf/2.

qupp.ast

Upper threshold of efficacy linear truncated function. This must be specified when using obd.method="utility.truncated.linear". The default value is qupp.ast=target_E.

stage1.method

Method to patient assignment for backfilling patients. Pick-the-winner is used when stage1.method="PW". Equal randomization is used when stage1.method="ER".

H0

Stage 2: A numeric value for the response rate under the null hypothesis (toxicity - OR, no toxicity - OR, toxicity - no OR, no toxicity - No OR).

H1

Stage 2: A numeric value for the response rate under the alternative hypothesis.

nIA.sample

Stage 2: A numeric vector representing the additional patients enrolled at each interim analysis. The value at index 'i' indicates the number of patients at interim analysis 'i'. For example, for four interim analyses with total sample sizes of 10, 15, 20, and 30, the vector would be represented as 'n = c(10, 15, 20, 30)'.

nIA

Stage 2: A numeric value for the number of interim analysis. The default value is nIA=length(nIA.sample).

method

Stage 2: A character string specifying the method to use for calculating cutoff values for the efficacy stopping. Options are "power" (default) or "OF" for "O'Brien-Fleming".

t1e_optimal_pars

Stage 2: Desired Type - I error rate. If specified it will only return results with type I error rate less the specified value.

lambda1_optimal_pars

Stage 2: Starting value for 'lambda' values to search.

lambda2_optimal_pars

Stage 2: Ending value for 'lambda' values to search.

grid1_optimal_pars

Stage 2: Number of 'lambda' values to consider between lambda1 and lambda2. A fine grid by 0.01 is recommended.

gamma1_optimal_pars

Stage 2: Starting value for 'gamma' values to search.

gamma2_optimal_pars

Stage 2: Ending value for 'gamma' values to search.

grid2_optimal_pars

Stage 2: Number of 'gamma' values to consider between gamma1 and gamma2. A fine grid by 0.01 is recommended.

eta1_optimal_pars

Stage 2: Starting value for 'eta' values to search.

eta2_optimal_pars

Stage 2: Ending value for 'eta' values to search.

grid3_optimal_pars

Stage 2: Number of eta values to consider between eta1 and eta2. A fine grid by 0.01 is recommended.

ppsi01

Score for toxicity=yes and efficacy=no in utility defined by scoring.The default value is psi01=0.

ppsi00

Score for toxicity=no and efficacy=no in utility defined by scoring. The default value is psi00=40.

ppsi11

Score for toxicity=yes and efficacy=yes in utility defined by scoring. The default value is psi11=60.

ppsi10

Score for toxicity=no and efficacy=yes in utility defined by scoring. The default value is psi10=100.

n.sim

Number of simulated trial. The default value is n.sim=1000.

seed.sim

Seed for random number generator. The default value is seed.sim=100.

Details

The bfboinet_rp2 is a function which generates the operating characteristics of the seamless two-stage Phase I/II trial design integrating dose optimization with efficacy evaluation by a simulation study. Users can specify a variety of study settings to simulate studies. The operating characteristics of the design are summarized by the percentage of times that each dose level was selected as optimal biological dose and the average number of patients who were treated at each dose level. The percentage of times that the study was terminated and the expected study duration are also provided.

Value

The get.oc.backboinet_rp2 returns a list containing the following components:

toxprob

True toxicity probability.

effprob

True efficacy probability.

phi

Target toxicity probability.

delta

Target efficacy probability.

lambda1

Lower toxicity boundary in dose escalation/de-escalation.

lambda2

Upper toxicity boundary in dose escalation/de-escalation.

eta1

Lower efficacy boundary in dose escalation/de-escalation.

tau.T

Toxicity assessment windows (months).

tau.E

Efficacy assessment windows (months).

suspend

The suspension rule that holds off the decision on dose allocation for the dose-escalation cohort until sufficient toxicity information is available.

accrual

Accrual rate (months) (patient accrual rate per month).

n.patient.all

Average number of patients who were treated at each dose level at stage 1 and stage 2.

nptsdosepct.all

The percentage of patients who were treated at each dose level at stage 1 and stage 2.

n.tox.patient.all

Average number of patients who experienced toxicity at each dose level at stage 1 and stage 2.

n.eff.patient.all

Average number of patients who experienced efficacy at each dose level at stage 1 and stage 2.

n.patient.stage2

Average number of patients who were treated at each dose level at stage 2.

n.bpatient

Average number of back filled patients who were treated at each dose level at stage 1.

prop.select

Percentage of times that each dose level was selected as optimal biological dose at stage 1 and stage 2.

MTD.select

Percentage of times that each dose level was selected as maximum tolerated dose at stage 1 and stage 2.

claim.select

Percentage of times that each dose level was claimed efficacy at stage 1 and stage 2.

prop.stop

Percentage of times that the study was terminated at stage 1.

duration

Expected study duration (months) at stage 1 and stage 2.

duration1

Expected study duration (months) at stage 1.

duration2

Expected study duration (months) at stage 2.

totaln

Total patients at stage 1 and stage 2.

data.obs.n

Record the number of patients in each dose level within the simulations during the trial at stage 1 and stage 2.

data.obs.n.stage2

Record the number of patients in each dose level within the simulations during the trial at stage 2.

data.obs.n.stage1

Record the number of patients in each dose level within the simulations during the trial at stage 1.

obd

Record the optimal dose in each simulation during the trial at stage 1 and stage 2.

claim

Record the optimal dose with efficacy in each simulation during the trial at stage 1 and stage 2.

PCS

The percentage of trials that the optimal dose was correctly selected at stage 1 and stage 2.

PCC

The percentage of patients that efficacy were correctly allocated to the optimal dose at stage 1 and stage 2.

PTS

The percentage of toxic doses selection at stage 1 and stage 2.

PTA

The percentage of patients who were allocated to toxic doses at stage 1 and stage 2.

boundary_tab.all.out

Futility and efficacy stopping boundaries at stage 2.

lambda

Lambda values for cut-off probabilitys at stage 2.

gamma

Gamma values for cut-off probability at stage 2.

eta

Eta values for cut-off probability at stage 2.

References

A seamless two-stage phase I/II trial design with backfill and joint efficacy and toxicity monitoring as described in (Takeda et al (2026) <doi:10.1002/pst.70092>.

Examples


target_T=0.3
target_E=0.25
pttt=c(0.02, 0.05, 0.07, 0.10, 0.15)
pee=c(0.05, 0.08, 0.15, 0.30, 0.45)
#####Stage 2####;
H0=c(0.10, 0.15, 0.30, 0.45)
H1=c(0.05, 0.45, 0.15, 0.35)
nIA.sample=c(24,30,36,42,48)
nIA=length(nIA.sample)
t1e_optimal_pars=0.1
lambda1_optimal_pars=0
lambda2_optimal_pars=1
grid1_optimal_pars=101
gamma1_optimal_pars=0
gamma2_optimal_pars=1
grid2_optimal_pars=101
eta1_optimal_pars=0
eta2_optimal_pars=3
grid3_optimal_pars=301
## Not run: 
get.oc.backboinet_rp2(target_T=target_T, toxprob=pttt,target_E=target_E,effprob=pee,n.dose=5,
startdose=1,ncohort=40,cohortsize=3,pT.saf=0.6 * target_T,pT.tox = 1.4 * target_T,
pE.saf = 0.6 * target_E,alpha.T1=0.5,alpha.E1=0.5,tau.T=1,tau.E=1,te.corr=0.2,
gen.event.time="weibull",accrual=3,gen.enroll.time="uniform",n.elimination=6,
stopping.npts=12,suspend=0,stopping.prob.T=0.95,stopping.prob.E=0.90,Nesc=36,
boundMTD = FALSE,estpt.method="obs.prob", obd.method="utility.scoring",
w1= 0.33, w2=1.09,plow.ast=pT.saf, pupp.ast=pT.tox, qlow.ast=pE.saf/2, qupp.ast=target_E,
stage1.method="ER",H0=H0,H1=H1,nIA.sample=nIA.sample,nIA=length(nIA.sample),
t1e_optimal_pars=t1e_optimal_pars,lambda1_optimal_pars=lambda1_optimal_pars,
lambda2_optimal_pars=lambda2_optimal_pars,grid1_optimal_pars=grid1_optimal_pars,
gamma1_optimal_pars=gamma1_optimal_pars,gamma2_optimal_pars=gamma2_optimal_pars,
grid2_optimal_pars=grid2_optimal_pars,eta1_optimal_pars=eta1_optimal_pars,
eta2_optimal_pars=eta2_optimal_pars,grid3_optimal_pars=grid3_optimal_pars,
ppsi01=0,ppsi00=40,ppsi11=60, ppsi10=100,n.sim=1,seed.sim=100)

## End(Not run)


backboinetr

Description

Obtain the operating characteristics of the backfill bayesian optimal interval design using efficacy and toxicity outcomes for dose optimization within random scenarios

Usage

get.oc.backboinetr(
  target_T = 0.3,
  target_Tr = 0.359,
  target_E = 0.25,
  target_Er = 0.197,
  n.dose,
  startdose,
  ncohort,
  cohortsize,
  pT.saf = 0.6 * target_T,
  pT.tox = 1.4 * target_T,
  pE.saf = 0.6 * target_E,
  alpha.T1 = 0.5,
  alpha.E1 = 0.5,
  tau.T,
  tau.E,
  te.corr = 0.2,
  gen.event.time = "weibull",
  accrual,
  gen.enroll.time = "uniform",
  n.elimination = 6,
  stopping.npts = 12,
  suspend = 0,
  stopping.prob.T = 0.95,
  stopping.prob.E = 0.9,
  ppsi01 = 0,
  ppsi00 = 40,
  ppsi11 = 60,
  ppsi10 = 100,
  n.sim = 10000,
  seed.sim = 30
)

Arguments

target_T

Target toxicity probability. The default value is target_T=0.3. When observing 1 DLT out of 3 patients and the target DLT rate is between 0.25 and 0.279, the decision is to stay at the current dose due to a widely accepted practice.

target_Tr

The upper boundary for the toxicity when generating the random scenarios. The default value is target_Tr=0.359.

target_E

The minimum required efficacy probability. The default value is target_E=0.25.

target_Er

The lower boundary for the efficacy when generating the random scenarios. The default value is target_Er=0.197.

n.dose

Number of dose.

startdose

Starting dose. The lowest dose is generally recommended.

ncohort

Number of cohort.

cohortsize

Cohort size.

pT.saf

Highest toxicity probability that is deemed sub-therapeutic such that dose-escalation should be pursued. The default value is pT.saf=target_T*0.6.

pT.tox

Lowest toxicity probability that is deemed overly toxic such that dose de-escalation is needed. The default value is pT.tox=target_T*1.4.

pE.saf

Minimum probability deemed efficacious such that the dose levels with less than delta1 are considered sub-therapeutic. The default value is pE.saf=target_E*0.6.

alpha.T1

Probability that toxicity event occurs in the late half of toxicity assessment window. The default value is alpha.T1=0.5.

alpha.E1

Probability that efficacy event occurs in the late half of assessment window. The default value is alpha.E1=0.5.

tau.T

Toxicity assessment windows (months).

tau.E

Efficacy assessment windows (months).

te.corr

Correlation between toxicity and efficacy probability, specified as Gaussian copula parameter. The default value is te.corr=0.2.

gen.event.time

Method to generate the time to first toxicity and efficacy outcome. Weibull distribution is used when gen.event.time ="weibull". Uniform distribution is used when gen.event.time="uniform". The default value is gen.event.time="weibull".

accrual

Accrual rate (months) (patient accrual rate per month).

gen.enroll.time

Method to generate enrollment time. Uniform distribution is used when gen.enroll.time="uniform". Exponential distribution is used when gen.enroll.time="exponential". The default value is gen.enroll.time="uniform".

n.elimination

a minimum sample size for dose elimination. If the number of patients treated at the current dose reaches n.elimination and meet elimination dose level criteria, eliminate current dose level and higher doses when meet toxicity criteria and eliminate current dose level when meet efficacy criteria. The default value is n.elimination=6.

stopping.npts

Early study termination criteria for the number of patients in the dose-escalation and backfill cohorts. If the number of patients at the current dose reaches this criteria and the same dose level is recommended as the next dose level, the study is terminated. The default value is stopping.npts=12.

suspend

the suspension rule that holds off the decision on dose allocation for the dose-escalation cohort until sufficient toxicity information is available. For example, setting as 0.33 which means one-third of the patients had not completed the toxicity evaluation at the current dose level in the dose escalation cohort. The default value suspend=0 essentially turns off this type of suspending rule, that is all patients should complete the toxicity evaluation at the current dose level in the dose escalation cohort

stopping.prob.T

Early study termination criteria for toxicity, taking a value between 0 and 1. If the posterior probability that toxicity outcome is less than the target toxicity probability (target_T) is larger than this criteria, the dose levels are eliminated from the study. The default value is stopping.prob.T=0.95.

stopping.prob.E

Early study termination criteria for efficacy, taking a value between 0 and 1. If the posterior probability that efficacy outcome is less than the minimum efficacy probability (target_E) is larger than this criteria, the dose levels are eliminated from the study. The default value is stopping.prob.E=0.90.

ppsi01

Score for toxicity=yes and efficacy=no in utility defined by scoring.The default value is psi01=0.

ppsi00

Score for toxicity=no and efficacy=no in utility defined by scoring. The default value is psi00=40.

ppsi11

Score for toxicity=yes and efficacy=yes in utility defined by scoring. The default value is psi11=60.

ppsi10

Score for toxicity=no and efficacy=yes in utility defined by scoring. The default value is psi10=100.

n.sim

Number of simulated trial. The default value is n.sim=10000.

seed.sim

Seed for random number generator. The default value is seed.sim=30.

Details

The backboinetr is a function which generates the operating characteristics of the backfill bayesian optimal interval design using efficacy and toxicity outcomes for dose optimization by a simulation study. Users can specify a variety of study settings to simulate studies. The operating characteristics of the design are summarized by the percentage of times that each dose level was selected as optimal biological dose and the average number of patients who were treated at each dose level. The percentage of times that the study was terminated and the expected study duration are also provided.

Value

The backboinetr returns a list containing the following components:

toxprob

The random true toxicity probability.

effprob

The random true efficacy probability.

phi

Target toxicity probability.

delta

Target efficacy probability.

target_Tr

The upper boundary for the toxicity when generating the random scenarios.

target_Er

The lower boundary for the efficacy when generating the random scenarios.

bd.true

The target optimal dose (OD) level when generating the random scenarios.

mtd.true

The maximum tolerated dose (MTD) level when generating the random scenarios.

lambda1

Lower toxicity boundary in dose escalation/de-escalation.

lambda2

Upper toxicity boundary in dose escalation/de-escalation.

eta1

Lower efficacy boundary in dose escalation/de-escalation.

tau.T

Toxicity assessment windows (months).

tau.E

Efficacy assessment windows (months).

suspend

The suspension rule that holds off the decision on dose allocation for the dose-escalation cohort until sufficient toxicity information is available.

accrual

Accrual rate (months) (patient accrual rate per month).

n.patient

Average number of patients who were treated at each dose level in dose-esclation and backfill cohorts

n.bpatient

Average number of back filled patients who were treated at each dose level

n.tox.patient

Average number of patients who experienced toxicity at each dose level in dose-esclation and backfill cohorts

n.eff.patient

Average number of patients who experienced efficacy at each dose level in dose-esclation and backfill cohorts

n.tox.bpatient

Average number of patients who experienced toxicity at each dose level in backfill cohort

n.eff.bpatient

Average number of patients who experienced efficacy at each dose level in backfill cohort

prop.select

Percentage of times that each dose level was selected as optimal biological dose.

prop.stop

Percentage of times that the study was terminated.

duration

Expected study duration (months)

totaln

Total patients

data.obs.n

Record the number of patients in each dose level within the simulations during the trial

obd

Record the optimal dose in each simulation during the trial

backfilltimes

Record how may times we back-filled during the trial

backfillcount

Record the number of back-filled patients in dose level within the simulations during the trial

PCS

The percentage of trials that the optimal dose was correctly selected.

PCA

The percentage of patients that were correctly allocated to the optimal dose.

PTS

The percentage of toxic doses selection.

PTA

The percentage of patients who were allocated to toxic doses.

References

Takeda, K., Zhu, J. and Hirakawa, A. (2025), BF-BOIN-ET: A Backfill Bayesian Optimal Interval Design Using Efficacy and Toxicity Outcomes for Dose Optimization. Pharmaceutical Statistics, 24: e2470. https://doi.org/10.1002/pst.2470

Examples


target_T=0.3
target_E=0.25
## Not run: 
get.oc.backboinetr(target_T=target_T,target_Tr=0.359,target_E=target_E,
target_Er=0.197,n.dose=5,startdose=1,ncohort=10,cohortsize=3,
pT.saf=0.6 * target_T,pT.tox = 1.4 * target_T,pE.saf = 0.6 * target_E,
alpha.T1=0.5,alpha.E1=0.5,tau.T=1,tau.E=1,te.corr=0.2,
gen.event.time="weibull",accrual=3,gen.enroll.time="uniform",n.elimination=6,
stopping.npts=12,suspend=0,stopping.prob.T=0.95,stopping.prob.E=0.90,
ppsi01=0,ppsi00=40,ppsi11=60,ppsi10=100,n.sim=2,seed.sim=30)

## End(Not run)

select_mtd

Description

Obtain the maximum tolerated dose (MTD) of the backfill bayesian optimal interval design using efficacy and toxicity outcomes.

Usage

select_mtd(
  target = 0.3,
  npts,
  ntox,
  cutoff.eli = 0.95,
  extrasafe = FALSE,
  offset = 0.05,
  p.tox = 1.4 * target,
  boundMTD = FALSE,
  n.elimination = 3
)

Arguments

target

Target toxicity probability. The default value is target_T=0.3.

npts

The number of patients enrolled at each dose level.

ntox

Number of patients with dose limiting toxicity (DLT).

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. The default value is extrasafe=FALSE.

offset

A small positive number (between 0 and 0.5) to control how strict the stopping rule is when extrasafe=TRUE. A larger value leads to a more strict stopping rule. The default value offset=0.05 generally works well.

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.

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. The default value is boundMTD=FALSE.

n.elimination

The sample size cutoff for elimination. The default is n.elimination=3.

Value

select_mtd() returns the selected dose.

References

1. Liu S. and Yuan, Y. (2015). Bayesian optimal interval designs for phase I clinical trials, Journal of the Royal Statistical Society: Series C , 64, 507-523. 2. Yuan, Y., Hess, K. R., Hilsenbeck, S. G., & Gilbert, M. R. (2016). Bayesian optimal interval design: a simple and well-performing design for phase I oncology trials. Clinical Cancer Research, 22(17), 4291-4301. 3. Zhou, H., Yuan, Y., & Nie, L. (2018). Accuracy, safety, and reliability of novel phase I trial designs. Clinical Cancer Research, 24(18), 4357-4364. 4. Zhou, Y., Lin, R., Kuo, Y. W., Lee, J. J., & Yuan, Y. (2021). BOIN Suite: A Software Platform to Design and Implement Novel Early-Phase Clinical Trials. JCO Clinical Cancer Informatics, 5, 91-101. 5. Takeda K, Xia Q, Liu S, Rong A. TITE-gBOIN: Time-to-event Bayesian optimal interval design to accelerate dose-finding accounting for toxicity grades. Pharm Stat. 2022 Mar;21(2):496-506. doi: 10.1002/pst.2182. Epub 2021 Dec 3. PMID: 34862715. 6. Yuan, Y., Lin, R., Li, D., Nie, L. and Warren, K.E. (2018). Time-to-event Bayesian Optimal Interval Design to Accelerate Phase I Trials. Clinical Cancer Research, 24(20): 4921-4930. 7. Rongji Mu, Ying Yuan, Jin Xu, Sumithra J. Mandrekar, Jun Yin, gBOIN: A Unified Model-Assisted Phase I Trial Design Accounting for Toxicity Grades, and Binary or Continuous End Points, Journal of the Royal Statistical Society Series C: Applied Statistics, Volume 68, Issue 2, February 2019, Pages 289–308, https://doi.org/10.1111/rssc.12263. 8. Lin R, Yuan Y. Time-to-event model-assisted designs for dose-finding trials with delayed toxicity. Biostatistics. 2020 Oct 1;21(4):807-824. doi: 10.1093/biostatistics/kxz007. PMID: 30984972; PMCID: PMC8559898. 9. Hsu C, Pan H, Mu R (2022). _UnifiedDoseFinding: Dose-Finding Methods for Non-Binary Outcomes_. R package version 0.1.9, <https://CRAN.R-project.org/package=UnifiedDoseFinding>.

Examples

target<-0.3
y<-c(0,0,1,2,3,0)
n<-c(3,3,6,9,9,0)
select_mtd(target=target,npts=n,ntox=y)