gsDesign()
is used to find boundaries and trial size required for a group sequential design.
gsDesign(k=3, test.type=4, alpha=0.025, beta=0.1, astar=0,
delta=0, n.fix=1, timing=1, sfu=sfHSD, sfupar=-4,
sfl=sfHSD, sflpar=-2, tol=0.000001, r=18, n.I = 0,
maxn.IPlan = 0, nFixSurv=0, endpoint=NULL, delta1=1, delta0=0,overrun=0)
Number of analyses planned, including interim and final.
1=
one-sided
2=
two-sided symmetric
3=
two-sided, asymmetric, beta-spending with binding lower bound
4=
two-sided, asymmetric, beta-spending with non-binding lower bound
5=
two-sided, asymmetric, lower bound spending under the null hypothesis with binding lower bound
6=
two-sided, asymmetric, lower bound spending under the null hypothesis with non-binding lower bound. See details, examples and manual.
Type I error, always one-sided. Default value is 0.025.
Type II error, default value is 0.1 (90% power).
Normally not specified. If test.type=5
or 6
, astar
specifies the total
probability of crossing a lower bound at all analyses combined.
This will be changed to \(1 - \)alpha
when default value of 0 is used.
Since this is the expected usage, normally astar
is not specified by the user.
Effect size for theta under alternative hypothesis. This can be set to the standardized effect size to generate a sample size if n.fix=NULL
. See details and examples.
Sample size for fixed design with no interim; used to find maximum group sequential sample size. For a time-to-event outcome, input number of events required for a fixed design rather than sample size
and enter fixed design sample size (optional) in nFixSurv
.
See details and examples.
Sets relative timing of interim analyses. Default of 1 produces equally spaced analyses.
Otherwise, this is a vector of length k
or k-1
.
The values should satisfy 0 < timing[1] < timing[2] < ... < timing[k-1] <
timing[k]=1
.
A spending function or a character string indicating a boundary type (that is, “WT” for Wang-Tsiatis bounds, “OF” for O'Brien-Fleming bounds and “Pocock” for Pocock bounds).
For one-sided and symmetric two-sided testing is used to completely specify spending (test.type=1, 2
), sfu
.
The default value is sfHSD
which is a Hwang-Shih-DeCani spending function.
See details, Spending function overview, manual and examples.
Real value, default is \(-4\) which is an O'Brien-Fleming-like conservative bound when used with the default Hwang-Shih-DeCani spending function. This is a real-vector for many spending functions.
The parameter sfupar
specifies any parameters needed for the spending function specified by sfu
; this will be ignored for spending functions (sfLDOF
, sfLDPocock
)
or bound types (“OF”, “Pocock”) that do not require parameters.
Specifies the spending function for lower boundary crossing probabilities when asymmetric, two-sided testing is performed (test.type = 3
,
4
, 5
, or 6
).
Unlike the upper bound, only spending functions are used to specify the lower bound.
The default value is sfHSD
which is a Hwang-Shih-DeCani spending function.
The parameter sfl
is ignored for one-sided testing (test.type=1
) or symmetric 2-sided testing (test.type=2
).
See details, spending functions, manual and examples.
Real value, default is \(-2\), which, with the default Hwang-Shih-DeCani spending function, specifies a less conservative spending rate than the default for the upper bound.
Tolerance for error (default is 0.000001). Normally this will not be changed by the user. This does not translate directly to number of digits of accuracy, so use extra decimal places.
Integer value controlling grid for numerical integration as in Jennison and Turnbull (2000);
default is 18, range is 1 to 80.
Larger values provide larger number of grid points and greater accuracy.
Normally r
will not be changed by the user.
Used for re-setting bounds when timing of analyses changes from initial design; see examples.
Used for re-setting bounds when timing of analyses changes from initial design; see examples.
If a time-to-event variable is used, nFixSurv
computed as the sample size from nSurvival
may be entered to have gsDesign
compute the total sample size required as well as the number of events at each analysis that will be returned in n.fix
; this is rounded up to an even number.
An optional character string that should represent the type of endpoint used for the study. This may be used by output functions. Types most likely to be recognized initially are "TTE" for time-to-event outcomes with fixed design sample size generated by nSurvival()
and "Binomial" for 2-sample binomial outcomes with fixed design sample size generated by nBinomial()
.
delta1
and delta0
may be used to store information about the natural parameter scale compared to delta
that is a standardized effect size. delta1
is the alternative hypothesis parameter value on the natural parameter scale (e.g., the difference in two binomial rates).
delta0
is the null hypothesis parameter value on the natural parameter scale.
Scalar or vector of length k-1
with patients enrolled that are not included in each interim analysis.
An object of the class gsDesign
. This class has the following elements and upon return from
gsDesign()
contains:
As input.
As input.
As input.
As input.
As input, except when test.type=5
or 6
and astar
is input as 0; in this case
astar
is changed to 1-alpha
.
The standardized effect size for which the design is powered. Will be as input to gsDesign()
unless it was input as 0; in that case, value will be computed to give desired power for fixed design with input
sample size n.fix
.
Sample size required to obtain desired power when effect size is delta
.
A vector of length k
containing the portion of the total planned information or sample size at each analysis.
As input.
As input.
Vector of length k
. If values are input, same values are output.
Otherwise, n.I
will contain the sample size required at each analysis
to achieve desired timing
and beta
for the output value of delta
.
If delta=0
was input, then this is the sample size required for the specified group sequential design when a fixed design requires a sample size of n.fix
.
If delta=0
and n.fix=1
then this is the relative sample size compared to a fixed design; see details and examples.
As input.
As input.
Sample size for Lachin and Foulkes method when nSurvival
is used for fixed design input. If nSurvival
is used to compute n.fix
, then nFixSurv
is inflated by the same amount as n.fix
and stored in nSurv
. Note that if you use gsSurv
for time-to-event sample size, this is not needed and a more complete output summary is given.
As input.
As input.
As input.
As input.
Upper bound spending function, boundary and boundary crossing probabilities under the NULL and alternate hypotheses. See Spending function overview and manual for further details.
Lower bound spending function, boundary and boundary crossing probabilities at each analysis.
Lower spending is under alternative hypothesis (beta spending) for test.type=3
or 4
.
For test.type=2
, 5
or 6
, lower spending is under the null hypothesis.
For test.type=1
, output value is NULL
. See Spending function overview and manual.
Standarized effect size under null (0) and alternate hypothesis. If delta
is input, theta[1]=delta
. If n.fix
is input, theta[1]
is computed using a standard sample size formula (pseudocode): ((Zalpha+Zbeta)/theta[1])^2=n.fix
.
For test.type=4
or 6
, this contains false positive probabilities under the null hypothesis assuming that crossing a futility bound does not stop the trial.
Expected sample size accounting for early stopping. For time-to-event outcomes, this would be the expected number of events (although gsSurv
will give expected sample size). For information-based-design, this would give the expected information when the trial stops. If overrun
is specified, the expected sample size includes the overrun at each interim.
Many parameters normally take on default values and thus do not require explicit specification.
One- and two-sided designs are supported. Two-sided designs may be symmetric or asymmetric.
Wang-Tsiatis designs, including O'Brien-Fleming and Pocock designs can be generated.
Designs with common spending functions as well as other built-in and user-specified functions for Type I error and
futility are supported.
Type I error computations for asymmetric designs may assume binding or non-binding lower bounds.
The print function has been extended using print.gsDesign()
to print gsDesign
objects; see examples.
The user may ignore the structure of the value returned by gsDesign()
if the standard
printing and plotting suffice; see examples.
delta
and n.fix
are used together to determine what sample size output options the user seeks.
The default, delta=0
and n.fix=1
, results in a ‘generic’ design that may be used with any sampling
situation. Sample size ratios are provided and the user multiplies these times the sample size for a fixed design
to obtain the corresponding group sequential analysis times. If delta>0
, n.fix
is ignored, and
delta
is taken as the standardized effect size - the signal to noise ratio for a single observation;
for example, the mean divided by the standard deviation for a one-sample normal problem.
In this case, the sample size at each analysis is computed.
When delta=0
and n.fix>1
, n.fix
is assumed to be the sample size for a fixed design
with no interim analyses. See examples below.
Following are further comments on the input argument test.type
which is used to control what type of error measurements are used in trial design.
The manual may also be worth some review in order to see actual formulas for boundary crossing probabilities for the various options.
Options 3 and 5 assume the trial stops if the lower bound is crossed for Type I and Type II error computation (binding lower bound).
For the purpose of computing Type I error, options 4 and 6 assume the trial continues if the lower bound is crossed (non-binding lower bound); that is a Type I error can be made by crossing an upper bound after crossing a previous lower bound.
Beta-spending refers to error spending for the lower bound crossing probabilities
under the alternative hypothesis (options 3 and 4).
In this case, the final analysis lower and upper boundaries are assumed to be the same.
The appropriate total beta spending (power) is determined by adjusting the maximum sample size
through an iterative process for all options.
Since options 3 and 4 must compute boundary crossing probabilities under both the null and alternative hypotheses,
deriving these designs can take longer than other options.
Options 5 and 6 compute lower bound spending under the null hypothesis.
Jennison C and Turnbull BW (2000), Group Sequential Methods with Applications to Clinical Trials. Boca Raton: Chapman and Hall.
gsDesign package overview, gsDesign print, summary and table summary functions, Plots for group sequential designs, gsProbability
,
Spending function overview, Wang-Tsiatis Bounds
# NOT RUN {
# symmetric, 2-sided design with O'Brien-Fleming-like boundaries
# lower bound is non-binding (ignored in Type I error computation)
# sample size is computed based on a fixed design requiring n=800
x <- gsDesign(k=5, test.type=2, n.fix=800)
# note that "x" below is equivalent to print(x) and print.gsDesign(x)
x
plot(x)
plot(x, plottype=2)
# Assuming after trial was designed actual analyses occurred after
# 300, 600, and 860 patients, reset bounds
y <- gsDesign(k=3, test.type=2, n.fix=800, n.I=c(300,600,860),
maxn.IPlan=x$n.I[x$k])
y
# asymmetric design with user-specified spending that is non-binding
# sample size is computed relative to a fixed design with n=1000
sfup <- c(.033333, .063367, .1)
sflp <- c(.25, .5, .75)
timing <- c(.1, .4, .7)
x <- gsDesign(k=4, timing=timing, sfu=sfPoints, sfupar=sfup, sfl=sfPoints,
sflpar=sflp,n.fix=1000)
x
plot(x)
plot(x, plottype=2)
# same design, but with relative sample sizes
gsDesign(k=4, timing=timing, sfu=sfPoints, sfupar=sfup, sfl=sfPoints,
sflpar=sflp)
# }
Run the code above in your browser using DataLab