# Power Calculation With Stratification Variables

#### Kaifeng Lu

#### 12/15/2021

This R Markdown document illustrates the power calculation in the presence of stratification variables. This example is taken from EAST 6.4 section 56.7 on lung cancer patients comparing two treatment groups in a target patient population with some prior therapy. There are three stratification variables:

- type of cancer cell (small, adeno, large, squamous)

- age in years (<=50, >50)

- performance status score (<=50, >50-<=70, >70)

We consider a three stage Lan-DeMets O’Brien-Fleming group sequential design. The stratum fractions are

    p1 = c(0.28, 0.13, 0.25, 0.34)
    p2 = c(0.28, 0.72)
    p3 = c(0.43, 0.37, 0.2)
    stratumFraction = p1 %x% p2 %x% p3

Using the small cancer cell, age <=50, and performance status score <=50 as the reference stratum, the hazard ratios are

    theta1 = c(1, 2.127, 0.528, 0.413)
    theta2 = c(1, 0.438)
    theta3 = c(1, 0.614, 0.159)

If the hazard rate of the reference stratum is 0.009211, then the hazard rate for the control group is

    lambda2 = 0.009211*exp(log(theta1) %x% log(theta2) %x% log(theta3))

The hazard ratio of the active treatment group versus the control group is 0.4466.

In addition, we assume an enrollment period of 24 months with a constant enrollment rate of 12 patients per month to enroll 288 patients, and the target number of events of 66.

First we obtain the calendar time at which 66 events will occur.

    library(lrstat)
    caltime(nevents = 66, accrualDuration = 24, accrualIntensity = 12,
            stratumFraction = stratumFraction,
            lambda1 = 0.4466*lambda2, lambda2 = lambda2,
            followupTime = 100)

    ## [1] 54.92197

Therefore, the follow-up time for the last enrolled patient is 30.92 months. Now we can evaluate the power using the lrpower function.

    lrpower(kMax = 3,
            informationRates = c(0.333, 0.667, 1),
            alpha = 0.025, typeAlphaSpending = "sfOF",
            accrualIntensity = 12,
            stratumFraction = stratumFraction,
            lambda1 = 0.4466*lambda2,
            lambda2 = lambda2,
            accrualDuration = 24,
            followupTime = 30.92)

    ##                          stage 1 stage 2 stage 3
    ## informationRates           0.333   0.667   1.000
    ## efficacyBounds             3.712   2.511   1.993
    ## futilityBounds              -Inf    -Inf   1.993
    ## cumulativeRejection        0.028   0.524   0.882
    ## cumulativeFutility         0.000   0.000   0.118
    ## cumulativeAlphaSpent       0.000   0.006   0.025
    ## numberOfEvents            21.977  44.020  65.997
    ## numberOfSubjects         288.000 288.000 288.000
    ## analysisTime              24.873  39.040  54.920
    ## efficacyHR                 0.205   0.469   0.611
    ## futilityHR                   Inf     Inf   0.611
    ## efficacyP                  0.000   0.006   0.023
    ## futilityP                  1.000   1.000   0.023
    ## information                5.489  10.980  16.419
    ## logRankHR                  0.462   0.460   0.458
    ## overallReject              0.882
    ## alpha                      0.025
    ## numberOfEvents            65.997
    ## expectedNumberOfEvents    53.850
    ## numberOfSubjects         288.000
    ## expectedNumberOfSubjects 288.000
    ## studyDuration             54.920
    ## expectedStudyDuration     46.192
    ## accrualDuration           24.000
    ## followupTime              30.920
    ## fixedFollowup              0.000
    ## rho1                       0.000
    ## rho2                       0.000

Therefore, the overall power is about 88% for the stratified analysis. This is confirmed by the simulation below.

    lrsim(kMax = 3,
          informationTime = c(0.333, 0.667, 1),
          criticalValues = c(3.710, 2.511, 1.993),
          accrualIntensity = 12,
          stratumFraction = stratumFraction,
          lambda1 = 0.4466*lambda2,
          lambda2 = lambda2,
          accrualDuration = 24,
          followupTime = 30.92,
          plannedEvents = c(22, 44, 66),
          maxNumberOfIterations = 1000,
          seed = 314159)

    ##                          stage 1 stage 2 stage 3
    ## cumulativeRejection        0.006   0.486   0.885
    ## cumulativeFutility         0.000   0.006   0.115
    ## numberOfEvents            22.000  44.000  66.000
    ## numberOfSubjects         279.320 288.000 288.000
    ## analysisTime              24.980  39.166  54.663
    ## overallReject              0.885
    ## expectedNumberOfEvents    55.044
    ## expectedNumberOfSubjects 287.990
    ## expectedStudyDuration     47.015