Skip to contents

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.

Author

Dominic Magirr

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
# }