corrBounds: Rejection Boundaries Of Correlated Tests in Group Sequential...

View source: R/corrBounds.R

corrBoundsR Documentation

Rejection Boundaries Of Correlated Tests in Group Sequential Design Using Time-To-Event Endpoints

Description

This function calculates the rejection boundaries in p value (significance level) and z value in group sequential design based on the alpha spending function for each test using the log-rank test (He et al 2021).

Usage

corrBounds(
  sf = list(sfuA = gsDesign::sfLDOF, sfuB = gsDesign::sfLDOF),
  eAandB = c(126, 210),
  eAnotB = c(0, 0),
  eBnotA = c(54, 90),
  r = list(AandB = 1/2, AnotB = 0, BnotA = 1/2),
  rA = 1/2,
  rB = 1/2,
  gamma = 0.8,
  strat.ana = c("Y", "N"),
  alpha = 0.025,
  w = c(1/3, 2/3),
  epsA = c(NA, NA),
  epsB = c(1, 1),
  method = c("Balanced Allocation", "Customized Allocation")
)

Arguments

sf

Spending functions for tests A and B. Default sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), both tests are based on O'Brien Fleming spending boundary. Refer to gsDesign() function for other choices of spending functions.

eAandB

Number of events in subjects included in both population A and population B. For group sequential design, eAandB is a vector by each analysis.

eAnotB

Number of events in subjects included in population A but not in population B.

eBnotA

Number of events in subjects included in population B but not in population A.

r

A vector of proportions of experimental subjects in each of subgroup: Both in A and B, A not B, B not A. For randomization stratified by A and B, then r$AandB = r$AnotB = BcA.

rA

Proportion of experimental subjects among those included in population A.

rB

Proportion of experimental subjects among those included in population B.

gamma

Proportion of subjects included in both A and B among all subjects in A or B. rA, rB and gamma are required parameter for unstratified analysis; They are not required for stratified analysis.

strat.ana

stratified analysis flag, "Y" or "N". Default, "Y". The stratified analysis means that testing HA is stratified by B, and vice versa.

alpha

Overall one-sided type I error for all primary hypothesis tests. Default 0.025.

w

A vector of proportions for type I error allocation to all primary hypotheses. The sum of w must be 1.

epsA

A vector of efficiency factors for testing Ha at all analyses.

epsB

A vector of efficiency factors for testing Hb at all analyses. epsA and epsB are required when method = "Customized Allocation". At analysis k, either epsAk or epsBk is required, but not both. The unspecified will be determined. For example, epsA = c(1, NA) and epsB = c(NA, 1): At the 1st analysis, Ha rejection boundary is the same as the boundary based on alpha-splitting method, and the benefit from the correlation is fully captured to Hb to improve its rejection boundary. At the 2nd analysis, Hb's rejection boundary is the same as the alpha-splitting approach, and the benefit from the correlation is fully captured to Ha. In order to insure the improved rejection boundary is no worse than the alpha-splitting method, epsA and epsB is must be at least 1, and also capped by the acceptable value when the other one is 1.

method

The method for alpha adjustment: "Balanced Allocation" or "Customized Allocation". "Balanced Allocation" = the adjustment is equally allocated to all primary hypotheses. "Customized Allocation" = the adjustment is made according to pre-specified levels for some hypotheses. Default "Balanced Allocation".

Value

An object with values

  • overall.alpha Overall type I error allocated to the family-wise type I error, Ha, and Hb.

    • FW.alpha Family-wise type I error, default 0.025 one-sided.

    • alphaA Overall alpha for testing A

    • alphaB Overall alpha for testing B

    • side Side of test. Always one-sided, 1.

  • bd: Data frame includes the rejection boundaries before and after improvements.

    • timingA Timing of analysis in terms of information fraction for testing A

    • bd.pA0 P value bound for the alpha-splitting approach

    • bd.zA0 z value bound for the alpha-splitting approach

    • bd.pA Improved p value bound incorporating the correlation

    • bd.zA Improved z value bound incorporating the correlation

    • epsA Efficiency factor for testing A, defined as the ratio of improved p bound and the p bound from alpha-splitting method

    • timingB Timing of analysis in terms of information fraction for testing B

    • bd.pB0 P value bound for the alpha-splitting approach

    • bd.zB0 z value bound for the alpha-splitting approach

    • bd.pB Improved p value bound incorporating the correlation

    • bd.zB Improved z value bound incorporating the correlation

    • epsB Efficiency factor for testing B, defined as the ratio of improved p bound and the p bound from alpha-splitting method

  • max.eps: Data frame of maximum epsA and epsB at each analysis. In order to ensure the improved bound is not worse than the alpha-splitting approach, epsA and epsB should be within the range of [1, max.epsA] and [1, max.epsB]. max.epsAk is obtained by passing all improvement of the bound to test A at analysis k while keeping the bound for test B same as the alpha-splitting approach. max.epsBk is also determined similarly. This range is useful for customized setting of epsA and epsB.

  • corr: Correlation matrix of the logrank test statistics

  • cov: Covariance matrix of the logrank scores for (Z_Ak, Z_Bk, Z_Ak', Z_Bk'), where k' > k

  • method: Method for allocation of the improvements

  • strat: Flag for stratified analysis "Y" or "N", as user input.

@references He P, Ni P, Zhang F, and Yu C. Group Sequential Monitoring and Study Design for Time-to-Event Endpoints in Overlapping Populations. Manuscript submitted, 2021

Examples

#Example 1. A subgroup (S) and overall population: at the same DCO, the numbers 
#of target events are 100(eS) and 150 (eT) respectively. 1:1 randomization.
#1/3 alpha is allocated to S and 2/3 allocated to overall population. 

#(1a) Default method: Balanced allocation; stratified analysis
#stratified Analysis by default
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(100), eAnotB = c(0), eBnotA = c(50),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana=c("Y", "N"),alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,NA), epsB=c(1,1),
   method=c("Balanced Allocation", "Customized Allocation"))

#(1b) Default method: Balanced allocation; unstratified analysis
#For unstratified analysis, gamma is required.
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(100), eAnotB = c(0), eBnotA = c(50),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana="N",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,NA), epsB=c(1,1),
   method=c("Balanced Allocation", "Customized Allocation"))
   
#(1c) Customized Allocation with the subgroup alpha fixed at the initial alpha
#stratified Analysis
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(100), eAnotB = c(0), eBnotA = c(50),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana=c("Y"),alpha=0.025, w=c(1/3, 2/3),epsA = c(1), epsB=c(NA),
   method=c("Customized Allocation"))

#(1d) Customized Allocation with the subgroup alpha fixed at the initial alpha
#unstratified Analysis
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(100), eAnotB = c(0), eBnotA = c(50),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana=c("N"),alpha=0.025, w=c(1/3, 2/3),epsA = c(1), epsB=c(NA),
   method=c("Customized Allocation"))
   
#####
#Example 2. Group sequential design. O'Brien Fleming spending function
#is used for both tests Ha and Hb. One IA and FA are performed. The number
#of events at IA and FA in each set of patients are: (126, 210), (0,0), (54,90) 
#for in A and B, in A not B, in B not A respectively. So the events ratio
#at IA for testing Ha is 126/180 = 0.7; and for testing Hb is 210 / 300 = 0.70.
#The overall type I error is split as 1/3 alpha and 2/3 alpha.

#(2a) stratified Analysis by default
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana="Y",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,NA), epsB=c(1,1),
   method=c("Balanced Allocation", "Customized Allocation"))
   
##(2b)unstratified Analysis    
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana="N",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,NA), epsB=c(1,1),
   method="Balanced Allocation")
   
#(2c) Improve Ha only. stratified Analysis by default
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana="Y",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,NA), epsB=c(1,1),
   method="Customized Allocation")
   
#(2d)Improve Ha only. unstratified Analysis    
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana="N",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,NA), epsB=c(1,1),
   method="Customized Allocation")
   
#(2e) Improve Hb only. stratified Analysis by default
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana="Y",alpha=0.025, w=c(1/3, 2/3),epsA = c(1,1), epsB=c(NA,NA),
   method="Customized Allocation")
   
#(2f)Improve Hb only. unstratified Analysis    
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana="N",alpha=0.025, w=c(1/3, 2/3),epsA = c(1,1), epsB=c(NA,NA),
   method="Customized Allocation")
   
#(2g) Improve Ha at IA and improve Hb at FA. stratified Analysis by default
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana="Y",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,1), epsB=c(1,NA),
   method="Customized Allocation")
   
#(2h)Improve Ha at IA and improve Hb at FA. unstratified Analysis    
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana="N",alpha=0.025, w=c(1/3, 2/3),epsA = c(NA,1), epsB=c(1,NA),
   method="Customized Allocation")
   
#(2i) Improve Hb at IA and improve Ha at FA. stratified Analysis by default
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = NA,
   strat.ana="Y",alpha=0.025, w=c(1/3, 2/3),epsA = c(1,NA), epsB=c(NA,1),
   method="Customized Allocation")
   
#(2j)Improve Hb at IA and improve Ha at FA. unstratified Analysis    
corrBounds(sf=list(sfuA=gsDesign::sfLDOF, sfuB=gsDesign::sfLDOF), 
   eAandB = c(126, 210), eAnotB = c(0,0), eBnotA = c(54, 90),
   r=list(AandB = 1/2, AnotB=0, BnotA=1/2), rA=1/2, rB=1/2, gamma = 0.8,
   strat.ana="N",alpha=0.025, w=c(1/3, 2/3),epsA = c(1,NA), epsB=c(NA,1),
   method="Customized Allocation")
   

phe2189/corrTests documentation built on Oct. 7, 2022, 11:13 a.m.