Learn R Programming

simFastBOIN (version 1.3.2)

get_boin_boundary: Calculate BOIN Escalation and De-escalation Boundaries

Description

Compute the escalation and de-escalation boundaries for the Bayesian Optimal Interval (BOIN) design based on the target toxicity probability. These boundaries are used to determine dose escalation and de-escalation decisions during the trial.

Usage

get_boin_boundary(target, p_saf = NULL, p_tox = NULL)

Value

A list containing:

lambda_e

Numeric. Escalation boundary: toxicity rate threshold for escalation

lambda_d

Numeric. De-escalation boundary: toxicity rate threshold for de-escalation

Arguments

target

Numeric. The target toxicity probability (e.g., 0.30 for 30%). Should be between 0 and 1.

p_saf

Numeric. The toxicity probability threshold for safe (subtherapeutic) dose. Default is 0.6 * target. Doses with observed toxicity rate <= p_saf trigger escalation.

p_tox

Numeric. The toxicity probability threshold for overly toxic dose. Default is 1.4 * target. Doses with observed toxicity rate >= p_tox trigger de-escalation.

Details

Based on Bayesian theory with three-point hypothesis, these boundaries are computed to optimally balance exploration and exploitation in dose finding. The default values (p_saf = 0.6 * target, p_tox = 1.4 * target) are recommended and generally yield excellent operating characteristics.

References

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.

Examples

Run this code
# Calculate boundaries for 30% target toxicity rate
boin_bound <- get_boin_boundary(target = 0.30)
print(boin_bound)
# $lambda_e
# [1] 0.236
# $lambda_d
# [1] 0.359

# Calculate boundaries for 25% target with custom thresholds
boin_bound_custom <- get_boin_boundary(
  target = 0.25,
  p_saf = 0.12,
  p_tox = 0.40
)
print(boin_bound_custom)

# Compare boundaries for different target rates
targets <- c(0.20, 0.25, 0.30, 0.35)
boundaries <- lapply(targets, get_boin_boundary)
names(boundaries) <- paste0("Target_", targets * 100, "%")
print(boundaries)

Run the code above in your browser using DataLab