Learn R Programming

simFastBOIN (version 1.3.2)

get_boin_decision: Generate Dose Decision Table for BOIN Design

Description

Create a pre-computed lookup table that maps (number of DLTs, number of patients) pairs to dose decisions (Escalate, De-escalate, Stay, or Eliminate). This table is generated once before the trial and consulted repeatedly during dose assignment.

Usage

get_boin_decision(target, lambda_e, lambda_d, max_sample_size, cutoff_eli)

Value

A character matrix with dose decisions:

  • Rows represent cumulative number of DLTs (0 to max_sample_size)

  • Columns represent cumulative number of patients (1 to max_sample_size)

  • Cell values are decisions: "E" (Escalate), "D" (De-escalate), "DE" (De-escalate & Eliminate), "S" (Stay), or NA (logically impossible)

Arguments

target

Numeric. The target toxicity probability (e.g., 0.30 for 30%).

lambda_e

Numeric. Escalation boundary from get_boin_boundary(). Doses with observed toxicity rate <= lambda_e trigger escalation.

lambda_d

Numeric. De-escalation boundary from get_boin_boundary(). Doses with observed toxicity rate >= lambda_d trigger de-escalation.

max_sample_size

Numeric. Maximum sample size (number of patients) for table columns. Typically 18-30 for phase I trials.

cutoff_eli

Numeric. Cutoff probability for dose elimination. Default is 0.95. If Pr(p > target | data) > cutoff_eli, dose is marked for elimination.

Details

Decision rules applied in order:

  1. Rule DE: If n >= 3 and Pr(p > target | data) > cutoff_eli, eliminate dose

  2. Rule E: If observed toxicity rate <= lambda_e, escalate

  3. Rule D: If observed toxicity rate >= lambda_d, de-escalate

  4. Rule S: Otherwise, stay at current dose

The posterior probability Pr(p > target | data) is computed using Beta-Binomial conjugate prior with uniform prior (Beta(1,1)).

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
# Generate decision table for 30% target toxicity rate
boin_bound <- get_boin_boundary(target = 0.30)
DECISION <- get_boin_decision(
  target = 0.30,
  lambda_e = boin_bound$lambda_e,
  lambda_d = boin_bound$lambda_d,
  max_sample_size = 18,
  cutoff_eli = 0.95
)
print(DECISION)

Run the code above in your browser using DataLab