Apply group sequential stopping rules to test statistics
Source:R/apply_stopping_rule_z.R
apply_stopping_rule_z.Rd
Group sequential designs allow investigators to perform pre-planned interim assessments of futility or efficacy in an ongoing trial while preserving the Familywise Type I Error Rate (FWER). Differences between the observed information levels and those specified in the initial design require the boundaries to be updated in order to preserve FWER control. This function allows users to update the boundaries according to observed information levels, apply stopping rules, and return their resulting decisions.
Usage
apply_stopping_rule_z(
test_statistics,
trial_design,
information_fraction,
information_target
)
Arguments
- test_statistics
A numeric vector of standardized test statistics
- trial_design
A
TrialDesignGroupSequential object
created byrpact::getDesignGroupSequential()
- information_fraction
A numeric vector containing the observed information fractions
- information_target
A numeric scalar containing the target information level, created by
required_information_single_stage()
Value
A list containing an updated TrialDesignGroupSequential object
object, the resulting decision, and supporting data.
See also
required_information_single_stage()
and
required_information_mw_single_stage()
for obtaining the target
information level for a single stage design;
rpact::getDesignGroupSequential()
for obtaining trial_design
, and
required_information_sequential()
for adjusting the information
level to multi-stage designs.
Examples
# Two-sided design with O'Brien-Fleming efficacy stopping and non-binding
# O'Brien Fleming Beta Spending Futility with 2 interim analyses at 50% and
# 75%
# Create Initial `TrialDesignGroupSequential` Object:
two_sided_of_efficacy_nb_of_futility_0 <-
rpact::getDesignGroupSequential(
alpha = 0.05, # 5% Type I Error
beta = 1 - 0.80, # 80% Power
sided = 2, # Two-Sided Test
# Interim analyses at 50%, 75%, 100% of Information Target
informationRates = c(0.5, 0.75, 1),
# Efficacy and Non-Binding Futility Stopping using O'Brien-Fleming
# alpha- and beta- spending functions
typeOfDesign = "asOF",
typeBetaSpending = "bsOF",
bindingFutility = FALSE
)
# Test Statistics at Interim Analysis 1
test_statistics_1 <- c(1.0)
# Observed information fraction at 1st analysis = 52.5% vs. 50% in design
information_fraction_1 <- c(0.525)
information_target <- 50
analysis_decision_1 <-
apply_stopping_rule_z(
test_statistics = test_statistics_1,
trial_design = two_sided_of_efficacy_nb_of_futility_0,
information_fraction = information_fraction_1,
information_target = information_target
)
# Test Statistics at Interim Analysis 2
test_statistics_2 <- c(1.0, 2.2)
# Observed information fraction at 2nd analysis = 74.5% vs. 75% in design
information_fraction_2 <- c(0.525, 0.745)
analysis_decision_2 <-
apply_stopping_rule_z(
test_statistics = test_statistics_2,
trial_design =
# Use updated design from analysis 1
analysis_decision_1$trial_design_updated,
information_fraction = information_fraction_2,
information_target = information_target
)
# Test Statistics at Interim Analysis 3
test_statistics_3 <- c(1.0, 2.2, 2.3)
# Observed information fraction at 3rd analysis = 102% vs. 100% in design
information_fraction_3 <- c(0.525, 0.745, 1.02)
analysis_decision_3 <-
apply_stopping_rule_z(
test_statistics = test_statistics_3,
trial_design =
# Use updated design from analysis 1
analysis_decision_2$trial_design_updated,
information_fraction = information_fraction_3,
information_target = information_target
)