getDesignGroupSequential()
getDesignInverseNormal()
getDesignFisher()
getDesignConditionalDunnett()Where Statistical Innovation Meets Open Source Excellence
April 13, 2026
rpactcrmPackrpactrpact?What are the advantages of using rpact instead of other software like SAS, nQuery, or East?
rpact based on user feedback and the latest methodological researchrpactrpact through our GitHub repository and RPACT User Grouprpact user testimonialsrpact is by far the easiest to use.” (Professor Daniel Lakens, Human-Technology Interaction Group, Eindhoven University of Technology, The Netherlands)rpact is just amazing.” (Biostatistician)rpact, complemented with a huge internal webportal of supporting code, documentation, internal case studies, repository of health authority questions, etc. for all clinical trial design purposes” (see paper)rpact for the design of group-sequential and adaptive trials at our company. The package is continuously evolving and includes state-of-the-art methods such as estimation of unbiased treatment effects or MAMS. The vignettes and the Shiny app allow for quick and easy integration in day-to-day work of trial statisticians. We are impressed by the high quality of the package and the excellent support by RPACT.” (Biostatistics director of a pharmaceutical company)rpact package and shiny app might be a bit of a game-changer on this front, as it makes the required calculations a lot easier to perform.” (Professor Daniel Lakens, Human-Technology Interaction Group, Eindhoven University of Technology, The Netherlands)Why is rpact a reliable R package?
testPackage(): installation qualification on a client computer or company serverWe assume that base/core R is validated/reliable (see R-FDA.pdf)
Sample size and power can be calulcated for testing:
Sample size calculation for a continuous endpoint
Sequential analysis with a maximum of 3 looks (group sequential design), one-sided overall significance level 2.5%, power 80%. The results were calculated for a two-sample t-test, H0: mu(1) - mu(2) = 0, H1: effect = 2, standard deviation = 5.
| Stage | 1 | 2 | 3 |
|---|---|---|---|
| Planned information rate | 33.3% | 66.7% | 100% |
| Cumulative alpha spent | 0.0001 | 0.0060 | 0.0250 |
| Stage levels (one-sided) | 0.0001 | 0.0060 | 0.0231 |
| Efficacy boundary (z-value scale) | 3.710 | 2.511 | 1.993 |
| Futility boundary (z-value scale) | 0 | 0 | |
| Efficacy boundary (t) | 4.690 | 2.152 | 1.384 |
| Futility boundary (t) | 0 | 0 | |
| Cumulative power | 0.0204 | 0.4371 | 0.8000 |
| Number of subjects | 69.9 | 139.9 | 209.8 |
| Expected number of subjects under H1 | 170.9 | ||
| Overall exit probability (under H0) | 0.5001 | 0.1309 | |
| Overall exit probability (under H1) | 0.0684 | 0.4202 | |
| Exit probability for efficacy (under H0) | 0.0001 | 0.0059 | |
| Exit probability for efficacy (under H1) | 0.0204 | 0.4167 | |
| Exit probability for futility (under H0) | 0.5000 | 0.1250 | |
| Exit probability for futility (under H1) | 0.0480 | 0.0035 |
Legend:
Obtain operating characteristics of different designs:
In general, everything runs with the R standard functions which are always present in R: so-called R generics.
print()summary()plot()as.data.frame()length()names()Example: getDesignInverseNormal() produces the output:

Example: getDesignInverseNormal(kMax = 2) produces the output:

Analysis results (means of one group, group sequential design)
Design parameters
Default parameters
Stage results
Analysis results
rpactVarious learning concepts available:
Further information, installation, and usage:
rpact R code examples demonstrating the methods implemented in the package
crmPackcrmPack?What are the advantages of using crmPack instead of other software e.g. Addplan, FACTS, East?
crmPack based on user feedback and the latest methodological researchcrmPackcrmPack through our GitHub repository and RPACT User GroupcrmPack user testimonialscrmPack successfully for clinical trials in the regulatory context, and we appreciate the flexibility that you can adapt it to your needs.” (Merck KgaA)crmPack without requiring in-depth knowledge of R programming. Comprehensive supporting documentation, available vignettes and well structured code base enables easy implementation of new design features.” (Bayer)crmPack was not yet available and especially the simulation part was a little cumbersome. In the meantime, crmPack is our standard package used for CRM dose-escalation methods. Based on crmPack we also developed templates for the protocol sections and appendix, which includes simulations for different assumed dose-toxicity relationships. With the help of crmPack a model based dose escalation design is no longer a burden also for new-comers and colleagues who have not worked in early development before.” (Roche)
Table taken from “Moving Beyond 3+3: The Future of Clinical Trial Design”
With crmPack we aimed to make it easy for everyone to use model-based designs in their dose escalation studies. And indeed, we were successful!
The package provides:

Generic flow chart for model-based dose escalation design
crmPack package structure parallels the flow chart
crmPack package framework
# install.packages(crmPack)
library(crmPack)
empty_data <- Data(doseGrid = c(1, 3, seq(from = 5, to = 100, by = 5)))
# Initialize the CRM model.
my_model <- LogisticLogNormal(
mean = c(-4, 0.5),
cov = matrix(c(8, -2, -2, 2), nrow = 2),
ref_dose = 50
)
# Get prior samples and plot.
mcmc_opts <- McmcOptions()
prior_samples <- mcmc(empty_data, my_model, mcmc_opts)
plot(prior_samples, my_model, empty_data)# 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 <- CohortSizeConst(3)
# Choose the rule for stopping.
my_stopping1 <- StoppingMinCohorts(nCohorts = 3)
my_stopping2 <- StoppingTargetProb(
target = c(0.2, 0.35),
prob = 0.5
)
my_stopping3 <- StoppingMinPatients(nPatients = 20)
my_stopping <- (my_stopping1 & my_stopping2) | my_stopping3
# Choose the rule for dose increments.
my_increments <- IncrementsRelative(
intervals = c(0, 20),
increments = c(1, 0.5)
)
# Initialize the design.
design <- Design(
model = my_model,
nextBest = my_next_best,
stopping = my_stopping,
increments = my_increments,
cohort_size = my_size,
data = empty_data,
startingDose = 3
)
# Examine possible outcomes.
examine(design) dose DLTs nextDose stop increment
1 3 0 5 FALSE 67
2 3 1 1 FALSE -67
3 3 2 NA FALSE NA
4 3 3 NA FALSE NA
5 5 0 10 FALSE 100
6 5 1 10 FALSE 100
7 5 2 1 FALSE -80
8 5 3 NA FALSE NA
9 10 0 20 FALSE 100
10 10 1 20 FALSE 100
11 10 2 10 FALSE 0
12 10 3 5 FALSE -50
13 20 0 30 FALSE 50
14 20 1 30 FALSE 50
15 20 2 20 FALSE 0
16 20 3 10 FALSE -50
17 30 0 45 FALSE 50
18 30 1 45 FALSE 50
19 30 2 30 FALSE 0
20 30 3 20 FALSE -33
21 45 0 65 FALSE 44
22 45 1 65 FALSE 44
23 45 2 45 FALSE 0
24 45 3 35 FALSE -22
25 65 0 85 TRUE 31
26 65 1 65 TRUE 0
27 65 2 55 TRUE -15
28 65 3 50 TRUE -23
Summary of 10 simulations
Target toxicity interval was 20, 35 %
Target dose interval corresponding to this was 17.5, 19.3
Intervals are corresponding to 10 and 90 % quantiles
Number of patients overall : mean 21 (21, 21)
Number of patients treated above target tox interval : mean 10 (9, 12)
Proportions of DLTs in the trials : mean 24 % (19 %, 29 %)
Mean toxicity risks for the patients on active : mean 27 % (21 %, 34 %)
Doses selected as MTD : mean 17 (15, 20.5)
True toxicity at doses selected : mean 21 % (7 %, 46 %)
Proportion of trials selecting target MTD: 0 %
Dose most often selected as MTD: 15
Observed toxicity rate at dose most often selected: 8 %
Fitted toxicity rate at dose most often selected : mean 21 % (16 %, 23 %)
Stop reason triggered:
≥ 3 cohorts dosed : 100 %
P(0.2 ≤ prob(DLE | NBD) ≤ 0.35) ≥ 0.5 : 10 %
≥ 20 patients dosed : 100 %
Lots of documentation is available on the crmPack website: crmPack.org
It includes:

What are the advantages of using RPACT Cloud instead of directly using the R package rpact or other software e.g. Addplan or East?
rpact package validation












































































rpactIn the near future you will see in rpact:
crmPackIn the near future you will see in crmPack:
TODO: Can Friedrich give me some items for this?
In 2026 we are developing “RPACT Code” (working title), a next-generation AI system that helps statisticians design clinical trials using natural language, while ensuring that all results are computed deterministically and reproducibly in R.
Unlike typical AI coding tools, this system will:
rpact and crmPackrpact is our validated R package for group sequential and adaptive designs, with a focus on confirmatory clinical trialscrmPack is our R package for model-based dose escalation designsrpact, with a focus on ease of use and accessibility