TrialSimulator

Project Status: Active – The project has reached a stable, usable state and is being actively developed.

⚕ No for loop in clinical trial simulation ⚕

TrialSimulator is a system for declaratively implementing clinical trial simulations, inspired by the modular grammar of trial design. You provide the components—arms, endpoint-generation rules, milestones, and analysis methods—specify how they are combined under fixed or adaptive designs, and TrialSimulator takes care of the details, allowing you to focus on the design while it handles the mechanics.

TrialSimulator provides a suite of helper functions to support the full trial life cycle.

Shiny App

An online version of this app is hosted on shinyapps.io.

Validation

The validation documents for this R package are hosted here and are continuously updated.

Installation

Release

You can install the current release version from CRAN with:

install.packages("TrialSimulator")

Development

You can install the development version from GitHub with:

if (!require("remotes")) {
  install.packages("remotes")
}
remotes::install_github(
  "zhangh12/TrialSimulator", 
  build_manual = TRUE, 
  build_vignettes = TRUE, 
  force = TRUE
)

Getting Started

TrialSimulator is designed with a modular architecture, allowing users to systematically construct and simulate clinical trials in a structured and flexible manner. The simulation process is broken down into three key steps:

  1. Defining Endpoints: Specify the treatment endpoints that will be evaluated throughout the trial.
  2. Specifying Milestone: Establish the conditions under which specific milestones (e.g., interim analysis, futility assessment, or stopping rules) will be triggered.
  3. Defining Actions for Milestones: Determine the appropriate actions to be taken once a milestone is triggered, such as adjusting enrollment, terminating treatment arms, or conducting statistical analysis.

To efficiently utilize TrialSimulator for clinical trial simulations, we recommend reading the following vignettes in order: