crmPack: Dose Escalation Trial Design, Simulation and Analysis

A validated, open source, free-of-charge R software package

Author

Daniel Sabanés Bové, Friedrich Pahlke

License Check 🛠 Test Coverage Total downloads Monthly downloads Lifecycle: stable

crmPack is a comprehensive validated, open source, free-of-charge R software package for:

  • Dose escalation trial planning
  • Dose escalation trial design evaluation and simulation
  • Dose escalation trial data analysis

Functional Range

  • Dose escalation trial design, simulation and analysis
  • Binary, time-to-event, dual efficacy/safety, ordinal outcomes
  • Backfill cohorts
  • >15 different models
  • >14 different recommendation options
  • >19 different stopping rules
  • >9 cohort size rules
  • >9 increment rules
  • Reporting functionality (using knitr)

Installation

Installation from CRAN

# The easiest way to get crmPack is to install it from cran:
install.packages("crmPack")

Installation of the Developer Version

To use a feature from the development version, you can install the development version of crmPack from GitHub.

# install.packages("pak")
pak::pak("openpharma/crmPack")

Learn To Use crmPack

We recommend two ways to learn how to use crmPack:

  1. Use the crmPack vignettes
  2. Book a training: www.rpact.com/services

Vignettes

Online Help

The online documentation (help files) can be opened here: openpharma.github.io/crmPack/latest-tag/reference

Inline Help

# display the manual of the package
crmPackHelp()

Getting Started

library(crmPack)

# display the manual of the package
crmPackHelp()

# Define the dose grid.
empty_data <- Data(doseGrid = c(1, 3, 5, 10, 15, 20, 25, 40, 50, 80, 100))

# Initialize the CRM model.
model <- LogisticLogNormal(
  mean = c(-0.85, 1),
  cov = matrix(c(1, -0.5, -0.5, 1), nrow = 2),
  ref_dose = 56
)

# Choose the rule for selecting the next dose.
my_next_best <- NextBestNCRM(
  target = c(0.2, 0.35),
  overdose = c(0.35, 1),
  max_overdose_prob = 0.25
)

# Choose the rule for the cohort size.
my_size_1 <- CohortSizeRange(
  intervals = c(0, 30),
  cohort_size = c(1, 3)
)
my_size_2 <- CohortSizeDLT(
  intervals = c(0, 1),
  cohort_size = c(1, 3)
)
my_size <- maxSize(my_size_1, my_size_2)

# Choose the rule for stopping.
my_stopping_1 <- StoppingMinCohorts(nCohorts = 3)
my_stopping_2 <- StoppingTargetProb(
  target = c(0.2, 0.35),
  prob = 0.5
)
my_stopping_3 <- StoppingMinPatients(nPatients = 20)
my_stopping <- (my_stopping_1 & my_stopping_2) | my_stopping_3

# Choose the rule for dose increments.
my_increments <- IncrementsRelative(
  intervals = c(0, 20),
  increments = c(1, 0.33)
)

# Initialize the design.
design <- Design(
  model = model,
  nextBest = my_next_best,
  stopping = my_stopping,
  increments = my_increments,
  cohort_size = my_size,
  data = empty_data,
  startingDose = 3
)

# Define the true function.
my_truth <- function(dose) {
  alpha0 <- 7
  alpha1 <- 8
  ref_dose <- 56
  stand_log_dose <- log(dose / ref_dose)
  plogis(alpha0 + alpha1 * stand_log_dose)
}

# Run the simulation on the desired design.
# We only generate 1 trial outcome here for illustration, for the actual study
# this should be increased of course.
options <- McmcOptions(
  burnin = 100,
  step = 1,
  samples = 2000
)
time <- system.time(my_sims <- simulate(design,
  args = NULL,
  truth = my_truth,
  nsim = 1,
  seed = 819,
  mcmcOptions = options,
  parallel = FALSE
))[3]

User Concept

Workflow

The typical dose escalation trial design simulation workflow is as follows:

  • Define the dose grid using the Data() function
  • Initialize the model using one of the model functions, e.g., LogisticLogNormal()
  • Choose the rules for
  • Initialize the design using the Design() function
  • Define the true dose-response relationship as a function
  • Run the simulation using the simulate() function

RPACT Connect

Connecting you to insights, downloads, and premium support now also for crmPack: connect.rpact.com

Validation

Please contact us to learn how to use crmPack on FDA/GxP-compliant validated corporate computer systems and how to get a copy of the formal validation documentation that is customized and licensed for exclusive use by your company, e.g., to fulfill regulatory requirements.

About

crmPack is a comprehensive validated1 R package for dose escalation trial design, simulation and analysis. It has been developed as an open source collaboration since 2014. Please see here for the full list of authors, copyright holders and how to cite the package correctly.

Since September 2025, the crmPack package is maintained and supported by RPACT.

For more information please see the benefits of the Service Level Agreement

  • RPACT is a company which offers
    • enterprise software development services
    • technical support for the crmPack package
    • consultancy and user training for clinical research using R
    • validated software solutions and R package development for clinical research

For more information please visit www.rpact.com/services

Contact

  • For general requests please send an email to
  • Please send your support request to
  • Or use our contact information at www.rpact.com/contact

Bugs and Issues

Please use the github bug report form to submit bug descriptions and issues in a systematic way: github.com/openpharma/crmPack/issues

Footnotes

  1. The crmPack validation documentation is available exclusively for our RPACT customers and supporting companies. For more information please see the Service Level Agreement↩︎

Reuse