Preface

The gsDesign package supports group sequential clinical trial design. While there is a strong focus on designs using \(\alpha\)- and \(\beta\)-spending functions, Wang-Tsiatis designs, including O’Brien-Fleming and Pocock designs, are also available. The ability to design with non-binding futility rules is an important feature to control Type I error in a manner acceptable to regulatory authorities.

The routines are designed to provide simple access to commonly used designs using default arguments. Standard, published spending functions are supported as well as the ability to write custom spending functions. A gsDesign class is defined and returned by the gsDesign() function. A plot function for this class provides a wide variety of plots: boundaries, power, estimated treatment effect at boundaries, conditional power at boundaries, spending function plots, expected sample size plot, and B-values at boundaries. Using function calls to access the package routines provides a powerful capability to derive designs or output formatting that could not be anticipated through a GUI interface. However, basic functionality is provided with the Shiny interface at https://rinpharma.shinyapps.io/gsdesign/. This enables the user to easily create designs with features they desire, such as designs with minimum expected sample size.

In addition to straightforward group sequential design, the gsDesign package provides tools to effectively adapt clinical trials during execution. First, the spending function approach to design allows altering timing of analyses during the course of the trial. Information-based timing of analyses allows adaptation of sample size or number of events to ensure adequate power for a trial. Finally, gsDesign provides a routine that enable design adaptation using conditional error and conditional power.

In summary, the intent of the gsDesign package is to easily create, fully characterize, and even optimize routine group sequential trial designs, as well as to provide a tool to derive and evaluate innovative designs.

Version history

Version 2.2 adds high-quality plots using the ggplot2 package and additional calculations available for Bayesian calculation such as predictive power and computing probability of success by averaging power over a prior distribution for treatment effect. A GUI interface is also available through the gsDesignExplorer R package that is available separately (not on CRAN); a separate manual is also available.

Version 2.3 provides boundary summary functions gsBoundSummary() and xtable.gsDesign(). The provide many summary values for design boundaries for on-screen (gsBoundSummary()) and LaTeX (xtable.gsDesign()) output. Fixes for plotting for one-sided designs are also made in this version.

Version 2.4 adds functions and plots summarizing treatment effect approximations based on interim Z-statistics.

Version 2.5 adds posterior distribution computation for the parameter of interest, \(\theta\), as well as prediction intervals.

Version 2.6 adds the chapter on sample size re-estimation based on conditional power.

Version 3.6 adds conditional error spending functions proposed by Xi and Gallo (sfXG1(), sfXG2(), sfXG3()), the binomialPowerTable() function for power tables across control rates and treatment effects, and expanded output formatting with as_gt() and as_rtf() for publication-quality tables. A new gsBoundSummary() argument alpha supports display of efficacy bounds at multiple \(\alpha\) levels. Multiple new vignettes are added covering conditional error spending, binomial two-sample designs, and the toInteger() function.

Version 3.9 adds Schoenfeld and Freedman methods for sample size and power for time-to-event studies in nSurv() and gsSurv(), complementing the existing Lachin and Foulkes method. Corrected weighting for stratified time-to-event studies is also included. The package now requires R \(\geq\) 4.1.0 for the native pipe operator.

The current development version introduces several major features. Three-boundary designs (test.type = 7 and 8) support simultaneous monitoring for efficacy, futility, and potential harm, motivated by FDA guidance on overall survival monitoring in oncology trials. Selective bound testing via testUpper, testLower, and testHarm parameters allows fine-grained control over which bounds are active at each interim analysis. The gsSurvPower() function computes power for a group sequential survival design under alternative assumptions, enabling “what-if” sensitivity analyses. Bidirectional hazard ratio support (hr > hr0) enables design for time-to-response and safety endpoints. The sequentialPValue() function computes sequential \(p\)-values for multiplicity control in group sequential designs.

Upper Gwynedd, Pennsylvania
Keaven M. Anderson