inst/doc/A360-Combinations.R

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7, fig.height = 5
)

## ----message=FALSE------------------------------------------------------------
library(escalation)

num_doses <- c(3, 5)
target <- 0.3

## -----------------------------------------------------------------------------
boin_fitter <- get_boin_comb(
  num_doses = num_doses, target = target
)

## -----------------------------------------------------------------------------
model <- get_boin_comb(
  num_doses = num_doses, target = target, 
  p.saf = 0.18, p.tox = 0.42
)

## -----------------------------------------------------------------------------
outcomes <- "1.1NNN 2.1NNNNNNT 2.2NNNNNT"

## -----------------------------------------------------------------------------
set.seed(2025)
fit <- model %>% fit(outcomes)

## -----------------------------------------------------------------------------
fit %>% continue()

## -----------------------------------------------------------------------------
fit %>% recommended_dose()

## -----------------------------------------------------------------------------
model <- get_boin_comb(num_doses = num_doses, target = target)  %>%
   stop_at_n(n = 12) %>%
   select_boin_comb_mtd()

outcomes <- '1.1NNN 1.2NTN 1.2NNN 2.1TNT'
model %>% fit(outcomes) %>% recommended_dose()

## -----------------------------------------------------------------------------
set.seed(2025)
model <- get_boin_comb(num_doses = num_doses, target = target)  %>%
   stop_when_n_at_dose(n = 3, dose = "recommended")

outcomes <- '1.1NNN 2.1NTN'
x <- model %>% fit(outcomes) 
recommended_dose(x)

## -----------------------------------------------------------------------------
continue(x)

## -----------------------------------------------------------------------------
set.seed(2025)
model <- get_boin_comb(num_doses = num_doses, target = target)  %>%
   stop_when_n_at_dose(n = 3, dose = c(2, 1))

outcomes <- '1.1NNN 2.1NTN'
x <- model %>% fit(outcomes) 
recommended_dose(x)
continue(x)

## ----error=TRUE---------------------------------------------------------------
try({
cohort_sizes <- c(3, 3)
paths <- model %>% 
  get_dose_paths(
    cohort_sizes = cohort_sizes, 
    previous_outcomes = '1NNN', next_dose = 2
  )
})

## -----------------------------------------------------------------------------
model <- get_boin_comb(num_doses = num_doses, target = target)  %>%
   stop_at_n(n = 12) %>%
   select_boin_comb_mtd()

## -----------------------------------------------------------------------------
true_prob_tox <- matrix(c(0.1, 0.2, 0.3, 0.4, 0.5,
                          0.25, 0.35, 0.45, 0.55, 0.65,
                          0.3, 0.4, 0.5, 0.6, 0.7),
                        nrow = num_doses[1],
                        ncol = num_doses[2],
                        byrow = TRUE)
true_prob_tox

## -----------------------------------------------------------------------------
set.seed(2025)
sims <- model %>%
  simulate_trials(num_sims = 10, true_prob_tox = true_prob_tox)

## -----------------------------------------------------------------------------
sims

## -----------------------------------------------------------------------------
num_patients(sims)

## -----------------------------------------------------------------------------
num_doses(sims)

## -----------------------------------------------------------------------------
dose_indices(sims)

## -----------------------------------------------------------------------------
dose_strings(sims)

## -----------------------------------------------------------------------------
recommended_dose(sims, dose_string = TRUE)

## -----------------------------------------------------------------------------
recommended_dose(sims, dose_string = FALSE)

## -----------------------------------------------------------------------------
n_at_dose(sims)

## -----------------------------------------------------------------------------
n_at_dose(sims, dose = "recommended")

## -----------------------------------------------------------------------------
n_at_recommended_dose(sims)

## -----------------------------------------------------------------------------
tox_at_dose(sims)

## -----------------------------------------------------------------------------
num_tox(sims)

## -----------------------------------------------------------------------------
eff_at_dose(sims) %>% head(2)

## -----------------------------------------------------------------------------
num_eff(sims)

## -----------------------------------------------------------------------------
prob_recommend(sims)

## -----------------------------------------------------------------------------
prob_administer(sims, method = 0)

## -----------------------------------------------------------------------------
prob_administer(sims, method = 1)

## -----------------------------------------------------------------------------
trial_duration(sims)

## -----------------------------------------------------------------------------
summary(sims)

## -----------------------------------------------------------------------------
tibble::as_tibble(sims)

## -----------------------------------------------------------------------------
model1 <- get_boin_comb(
  num_doses = num_doses, target = target, 
  p.saf = 0.6 * target, p.tox = 1.4 * target
) %>% 
  stop_at_n(n = 12) %>%
   select_boin_comb_mtd()

model2 <- get_boin_comb(
  num_doses = num_doses, target = target, 
  p.saf = 0.5 * target, p.tox = 1.5 * target
) %>% 
  stop_at_n(n = 12) %>%
   select_boin_comb_mtd()

designs <- list(
  model1 = model1,
  model2 = model2
)

set.seed(2025)
sims <- simulate_compare(
  designs = designs,
  num_sims = 10,
  true_prob_tox = true_prob_tox
)
convergence_plot(sims)

## -----------------------------------------------------------------------------
tibble::as_tibble(sims)

Try the escalation package in your browser

Any scripts or data that you put into this service are public.

escalation documentation built on Nov. 5, 2025, 7:15 p.m.