Group-Sequential Procedures with Multiple Hypotheses.
MultiGroupSequential
It is often challenging to strongly control the family-wise type-1 error rate in the group-sequential trials with multiple endpoints (hypotheses). The inflation of type-1 error rate comes from two sources (1) repeated testing individual hypothesis and (2) simultaneous testing multiple hypotheses. The MultiGroupSequential package is intended to help researchers to tackle this challenge.
The procedures provided include the sequential procedures described in Luo and Quan (2023) and the graphical procedure proposed by Maurer and Bretz (2013). Luo and Quan (2023) describes three procedures and functions to implement these procedures
seqgspgx()
implements a sequential graphical procedure based on the group-sequential p-values.seqgsphh()
implements a sequential Hochberg/Hommel procedure based on the group-sequential p-values.seqqvalhh()
implements a sequential Hochberg/Hommel procedure based on the q-values.
In addition, seqmbgx()
implements the sequential graphical procedure described in Maurer and Bretz (2013).
Installation
You can install the released version of MultiGroupSequential from CRAN:
install.packages("MultiGroupSequential")
Usage
For example, to use the sequential graphical procedure based on group sequential p-values.
- The input matrix
pm
has- Rows for different hypotheses, and
- Columns for the group sequential p-values at different times.
alpha
is the overall family-wise type-1 error rate.W
is the weights of the graph assigned to each hypothesis, whereasG
holds the transition matrix of the graph.
The procedures implemented here will usually give output list with elements:
rejected
: the index set of rejected hypothesesdecisionsm
: rejection decision for each hypothesis (row) at each time point (column)cumdecisionsm
: cumulative rejection decision for each hypothesis (row) at each time point (column)
library(MultiGroupSequential)
seqgspgx(
pm = rbind(c(0.02, 0.03, 0.01), c(0.03, 0.04, 0.01)),
alpha = 0.025,
W = c(0.6, 0.4),
G = rbind(c(0, 1), c(1, 0))
)
#> $rejected
#> [1] 1 2
#>
#> $decisionsm
#> [,1] [,2] [,3]
#> [1,] 0 0 1
#> [2,] 0 0 1
#>
#> $cumdecisionsm
#> [,1] [,2] [,3]
#> [1,] 0 0 1
#> [2,] 0 0 1