Update the stopping boundaries of multi-arm multi-stage study at an interim analysis, allowing for unplanned treatment selection and/or sample-size reassessment.
stepdown.update.Rd
Function to update a planned multi-arm multi-stage design to account for unplanned adaptations.
Usage
stepdown.update(current.mams=stepdown.mams(), nobs=NULL,
zscores=NULL, selected.trts=NULL, nfuture=NULL)
Arguments
- current.mams
The planned step-down MAMS design prior to the current interim analysis (=
defaultstepdown.mams()
).- nobs
Cumulative sample sizes observed on each treatment arm up to and including the current interim analysis.
- zscores
Observed vector of test statistics at the current interim analysis.
- selected.trts
The set of experimental treatments to be taken forward to the next stage of testing. This argument should be omitted at the final analysis.
- nfuture
A matrix of future cumulative sample sizes. The number of rows must be equal to the originally planned number of stages (2 or 3) minus the number of stages already observed. The number of columns must be equal to the number of treatment arms (default=
NULL
).
Details
The function implements the ideas described in Magirr et al. (2014) to update a design according to unplanned design modifications. It takes as input the planned multi-arm multi-stage design prior to the interim analysis, together with the actually observed cumulative sample sizes and test statistics. Treatments to be included in future stages, as well as future sample sizes, can be chosen without following pre-specified rules. The output is a new multi-arm multi-stage design for the remaining stages such that the familywise error remains controlled at the pre-specified level.
Value
An object of the class MAMS.stepdown containing the following components:
- l
Lower boundaries.
- u
Upper boundaries.
- sample.sizes
Cumulative sample sizes on each treatment arm.
- K
Number of experimental treatments.
- J
Number of stages in the trial.
- alpha.star
Cumulative familywise error rate spent at each analysis, conditional on results so far.
- selection
Pre-specified method of treatment selection.
- zscores
A list containing the observed test statistics at analyses so far (at the design stage this is NULL).
- selected.trts
A list containing the treatments selected for each stage.
References
Jaki T., Pallmann P. and Magirr D. (2019), The R Package MAMS for Designing Multi-Arm Multi-Stage Clinical Trials, Journal of Statistical Software, 88(4), 1-25. Link: doi:10.18637/jss.v088.i04
Magirr D., Jaki T. and Whitehead J. (2012), A generalized Dunnett test for multi-arm multi-stage clinical studies with treatment selection, Biometrika, 99(2), 494-501. Link: doi:10.1093/biomet/ass002
Magirr D., Stallard N. and Jaki T. (2014), Flexible sequential designs for multi-arm clinical trials, Statistics in Medicine, 33(19), 3269-3279. Link: doi:10.1002/sim.6183
Stallard N. and Todd S. (2003), Sequential designs for phase III clinical trials incorporating treatment selection, Statistics in Medicine, 22(5), 689-703.
Examples
# \donttest{
# 2-stage 3-treatments versus control design
# all promising treatments are selected:
orig_mams <- stepdown.mams(nMat=matrix(c(10, 20), nrow=2, ncol=4),
alpha.star=c(0.01, 0.05), lb=0,
selection="all.promising")
# make adjustment for the observed sample sizes
# not being exactly as planned:
stepdown.update(orig_mams, nobs=c(9, 8, 13, 11), zscores=c(1.1, -0.5, 0.2),
selected.trts=1:3, nfuture=NULL)
#> Design parameters for a 2 stage trial with 3 treatments
#>
#> Stage 1 Stage 2
#> Cumulative sample size (control): 9 20
#> Cumulative sample size per stage (treatment 1 ): 8 20
#> Cumulative sample size per stage (treatment 2 ): 13 20
#> Cumulative sample size per stage (treatment 3 ): 11 20
#>
#> Maximum total sample size: 80
#>
#>
#> Intersection hypothesis H_{ 1 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.09721452
#> Upper boundary 2.33 1.67000000
#> Lower boundary 0.00 1.67000000
#>
#> Intersection hypothesis H_{ 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0
#> Upper boundary 2.33 Inf
#> Lower boundary 0.00 Inf
#>
#> Intersection hypothesis H_{ 1 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.04784817
#> Upper boundary 2.56 1.95000000
#> Lower boundary 0.00 1.95000000
#>
#> Intersection hypothesis H_{ 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.01530737
#> Upper boundary 2.33 1.67000000
#> Lower boundary 0.00 1.67000000
#>
#> Intersection hypothesis H_{ 1 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.0509194
#> Upper boundary 2.56 1.9500000
#> Lower boundary 0.00 1.9500000
#>
#> Intersection hypothesis H_{ 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.005386518
#> Upper boundary 2.55 1.950000000
#> Lower boundary 0.00 1.950000000
#>
#> Intersection hypothesis H_{ 1 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.03294475
#> Upper boundary 2.68 2.10000000
#> Lower boundary 0.00 2.10000000
# make adjustment for the observed sample sizes
# not being exactly as planned. In addition, drop treatment 2:
stepdown.update(orig_mams, nobs=c(9, 8, 13, 11), zscores=c(1.1, -0.5, 0.2),
selected.trts=c(1, 3), nfuture=NULL)
#> Design parameters for a 2 stage trial with 3 treatments
#>
#> Stage 1 Stage 2
#> Cumulative sample size (control): 9 20
#> Cumulative sample size per stage (treatment 1 ): 8 20
#> Cumulative sample size per stage (treatment 2 ): 13 20
#> Cumulative sample size per stage (treatment 3 ): 11 20
#>
#> Maximum total sample size: 80
#>
#>
#> Intersection hypothesis H_{ 1 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.09721452
#> Upper boundary 2.33 1.67000000
#> Lower boundary 0.00 1.67000000
#>
#> Intersection hypothesis H_{ 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0
#> Upper boundary 2.33 Inf
#> Lower boundary 0.00 Inf
#>
#> Intersection hypothesis H_{ 1 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.04784817
#> Upper boundary 2.56 1.95000000
#> Lower boundary 0.00 1.95000000
#>
#> Intersection hypothesis H_{ 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.01530737
#> Upper boundary 2.33 1.67000000
#> Lower boundary 0.00 1.67000000
#>
#> Intersection hypothesis H_{ 1 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.0509194
#> Upper boundary 2.56 1.9500000
#> Lower boundary 0.00 1.9500000
#>
#> Intersection hypothesis H_{ 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.005386518
#> Upper boundary 2.55 1.940000000
#> Lower boundary 0.00 1.940000000
#>
#> Intersection hypothesis H_{ 1 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.0329459
#> Upper boundary 2.68 2.1000000
#> Lower boundary 0.00 2.1000000
# make adjustment for the observed sample sizes not being
# exactly as planned. In addition, drop treatment 2. In addition,
# double the planed cumulative second stage sample sizes:
updated_mams <- stepdown.update(orig_mams, nobs=c(9, 8, 13, 11),
zscores=c(1.1, -0.5, 0.2), selected.trts=c(1, 3),
nfuture=matrix(c(40, 40, 13, 40), nrow=1, ncol=4))
# Account for the observed second stage sample sizes:
stepdown.update(updated_mams, nobs=c(38, 41, 13, 36), zscores=c(1.9, -Inf, 1.2),
selected.trts=NULL)
#> Design parameters for a 2 stage trial with 3 treatments
#>
#> Stage 1 Stage 2
#> Cumulative sample size (control): 9 38
#> Cumulative sample size per stage (treatment 1 ): 8 41
#> Cumulative sample size per stage (treatment 2 ): 13 13
#> Cumulative sample size per stage (treatment 3 ): 11 36
#>
#> Maximum total sample size: 128
#>
#>
#> Intersection hypothesis H_{ 1 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.09721452
#> Upper boundary 2.33 1.64000000
#> Lower boundary 0.00 1.64000000
#>
#> Intersection hypothesis H_{ 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0
#> Upper boundary 2.33 Inf
#> Lower boundary 0.00 Inf
#>
#> Intersection hypothesis H_{ 1 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.04784817
#> Upper boundary 2.56 1.96000000
#> Lower boundary 0.00 1.96000000
#>
#> Intersection hypothesis H_{ 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.01530737
#> Upper boundary 2.33 1.97000000
#> Lower boundary 0.00 1.97000000
#>
#> Intersection hypothesis H_{ 1 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.0509194
#> Upper boundary 2.56 2.0200000
#> Lower boundary 0.00 2.0200000
#>
#> Intersection hypothesis H_{ 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.005386518
#> Upper boundary 2.55 2.310000000
#> Lower boundary 0.00 2.310000000
#>
#> Intersection hypothesis H_{ 1 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.0329481
#> Upper boundary 2.68 2.1900000
#> Lower boundary 0.00 2.1900000
# 'select.best' design. Account for actually observed sample sizes
# in first stage, and drop treatment 2:
orig_mams <- stepdown.mams(nMat=matrix(c(10, 20), nrow=2, ncol=4),
alpha.star=c(0.01, 0.05), lb=0, selection="select.best")
stepdown.update(orig_mams, nobs=c(9, 8, 13, 11), zscores=c(1.1, -0.5, 0.2),
selected.trts=c(1, 3), nfuture=NULL)
#> Design parameters for a 2 stage trial with 3 treatments
#>
#> Stage 1 Stage 2
#> Cumulative sample size (control): 9 20
#> Cumulative sample size per stage (treatment 1 ): 8 20
#> Cumulative sample size per stage (treatment 2 ): 13 20
#> Cumulative sample size per stage (treatment 3 ): 11 20
#>
#> Maximum total sample size: 80
#>
#>
#> Intersection hypothesis H_{ 1 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.09721452
#> Upper boundary 2.33 1.67000000
#> Lower boundary 0.00 1.67000000
#>
#> Intersection hypothesis H_{ 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0
#> Upper boundary 2.33 Inf
#> Lower boundary 0.00 Inf
#>
#> Intersection hypothesis H_{ 1 2 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.05471703
#> Upper boundary 2.56 1.90000000
#> Lower boundary 0.00 1.90000000
#>
#> Intersection hypothesis H_{ 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.01530737
#> Upper boundary 2.33 1.67000000
#> Lower boundary 0.00 1.67000000
#>
#> Intersection hypothesis H_{ 1 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.05471703
#> Upper boundary 2.56 1.92000000
#> Lower boundary 0.00 1.92000000
#>
#> Intersection hypothesis H_{ 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.006198615
#> Upper boundary 2.55 1.910000000
#> Lower boundary 0.00 1.910000000
#>
#> Intersection hypothesis H_{ 1 2 3 }:
#>
#> Stage 1 Stage 2
#> Conditional error 0.00 0.0381898
#> Upper boundary 2.68 2.0500000
#> Lower boundary 0.00 2.0500000
# }