The POWER Procedure

TWOSAMPLESURVIVAL Statement

TWOSAMPLESURVIVAL <options> ;

The TWOSAMPLESURVIVAL statement performs power and sample size analyses for comparing two survival curves. The log-rank, Gehan, and Tarone-Ware rank tests are supported.

Summary of Options

Table 71.23 summarizes the options available in the TWOSAMPLESURVIVAL statement.

Table 71.23: TWOSAMPLESURVIVAL Statement Options

Option

Description

Define analysis

TEST=

Specifies the statistical analysis

Specify analysis information

ACCRUALTIME=

Specifies the accrual time

ALPHA=

Specifies the significance level

FOLLOWUPTIME=

Specifies the follow-up time

SIDES=

Specifies the number of sides and the direction of the statistical test or confidence interval

TOTALTIME=

Specifies the total time

Specify effects

CURVE=

Defines a survival curve

GROUPMEDSURVTIMES=

Specifies the median survival times in each group

GROUPSURVEXPHAZARDS=

Specifies exponential hazard rates of the survival curve for each group

GROUPSURVIVAL=

Specifies the survival curve for each group

HAZARDRATIO=

Specifies the hazard ratio

REFSURVEXPHAZARD=

Specifies the exponential hazard rate of the survival curve for the reference group

REFSURVIVAL=

Specifies the survival curve for the reference group

Specify loss information

GROUPLOSS=

Specifies the exponential loss survival curve for each group

GROUPLOSSEXPHAZARDS=

Specifies the exponential hazards of the loss in each group

GROUPMEDLOSSTIMES=

Specifies the median times of the loss in each group

Specify sample size and allocation

ACCRUALRATEPERGROUP=

Specifies the common accrual rate per group

ACCRUALRATETOTAL=

Specifies the total accrual rate

EVENTSTOTAL=

Specifies the expected total number of events

GROUPACCRUALRATES=

Specifies the accrual rate for each group

GROUPNS=

Specifies the two group sample sizes

GROUPWEIGHTS=

Specifies the sample size allocation weights for the two groups

NFRACTIONAL

Enables fractional input and output for sample sizes

NPERGROUP=

Specifies the common sample size per group

NTOTAL=

Specifies the sample size

Specify power

POWER=

Specifies the desired power of the test

Specify computational method

NSUBINTERVAL=

Specifies the number of subintervals per unit time

Control ordering in output

OUTPUTORDER=

Controls the output order of parameters


Table 71.24 summarizes the valid result parameters for different analyses in the TWOSAMPLESURVIVAL statement.

Table 71.24: Summary of Result Parameters in the TWOSAMPLESURVIVAL Statement

Analyses

Solve For

Syntax

TEST=GEHAN

Power

POWER=.

 

Sample size

NTOTAL=.

   

NPERGROUP=.

   

EVENTSTOTAL=.

   

ACCRUALRATETOTAL=.

   

ACCRUALRATEPERGROUP=.

TEST=LOGRANK

Power

POWER=.

 

Sample size

NTOTAL=.

   

NPERGROUP=.

   

EVENTSTOTAL=.

   

ACCRUALRATETOTAL=.

   

ACCRUALRATEPERGROUP=.

TEST=TARONEWARE

Power

POWER=.

 

Sample size

NTOTAL=.

   

NPERGROUP=.

   

EVENTSTOTAL=.

   

ACCRUALRATETOTAL=.

   

ACCRUALRATEPERGROUP=.


Dictionary of Options

ACCRUALRATEPERGROUP=number-list
ACCRUALRATEPERG=number-list
ARPERGROUP=number-list
ARPERG=number-list

specifies the common accrual rate per group or requests a solution for the common accrual rate per group with a missing value (ACCRUALRATEPERGROUP=.). The accrual rate per group is the number of subjects in each group that enters the study per time unit during the accrual period. Use of this option implicitly specifies a balanced design. The NFRACTIONAL option is automatically enabled when the ACCRUALRATEPERGROUP= option is used. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

ACCRUALRATETOTAL=number-list
ARTOTAL=number-list

specifies the total accrual rate or requests a solution for the accrual rate with a missing value (ACCRUALRATETOTAL=.). The total accrual rate is the total number of subjects that enter the study per time unit during the accrual period. The NFRACTIONAL option is automatically enabled when the ACCRUALRATETOTAL= option is used. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

ACCRUALTIME=number-list | MAX
ACCTIME=number-list | MAX
ACCRUALT=number-list | MAX
ACCT=number-list | MAX

specifies the accrual time. Accrual is assumed to occur uniformly from time 0 to the time specified by the ACCRUALTIME= option. If the GROUPSURVIVAL= or REFSURVIVAL= option is used, then the value of the total time (the sum of accrual and follow-up times) must be less than or equal to the largest time in each multipoint (piecewise linear) survival curve. If the ACCRUALRATEPERGROUP=, ACCRUALRATETOTAL=, or GROUPACCRUALRATES= option is used, then the accrual time must be greater than 0. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

ACCRUALTIME=MAX can be used when each scenario in the analysis contains at least one piecewise linear survival curve (in the GROUPSURVIVAL= or REFSURVIVAL= option). It causes the accrual time to be automatically set, separately for each scenario, to the maximum possible time supported by the piecewise linear survival curve(s) in that scenario. It is not compatible with the FOLLOWUPTIME=MAX option or the TOTALTIME= option.

ALPHA=number-list

specifies the level of significance of the statistical test. The default is 0.05, corresponding to the usual 0.05 $\times $ 100% = 5% level of significance. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

CURVE("label")=points

defines a survival curve.

For the CURVE= option,

label

identifies the curve in the output and with the GROUPLOSS=, GROUPSURVIVAL=, and REFSURVIVAL= options.

points

specifies one or more (time, survival) pairs on the curve, where the survival value denotes the probability of surviving until at least the specified time.

A single-point curve is interpreted as exponential, and a multipoint curve is interpreted as piecewise linear. Points can be expressed in either of two forms:

  • a series of time:survival pairs separated by spaces. For example:

          1:0.9 2:0.7 3:0.6
    
  • a DOLIST of times enclosed in parentheses, followed by a colon (:), followed by a DOLIST of survival values enclosed in parentheses. For example:

          (1 to 3 by 1):(0.9 0.7 0.6)
    

    The DOLIST format is the same as in the DATA step.

Points can also be expressed as combinations of the two forms. For example:

      1:0.9 2:0.8 (3 to 6 by 1):(0.7 0.65 0.6 0.55)

The points have the following restrictions:

  • The time values must be nonnegative and strictly increasing.

  • The survival values must be strictly decreasing.

  • The survival value at a time of 0 must be equal to 1.

  • If there is only one point, then the time must be greater than 0, and the survival value cannot be 0 or 1.

EVENTSTOTAL=number-list
EVENTTOTAL=number-list
EETOTAL=number-list

specifies the expected total number of events—that is, deaths, whether observed or censored—during the entire study period, or requests a solution for this parameter with a missing value (EVENTSTOTAL=.). The NFRACTIONAL option is automatically enabled when the EVENTSTOTAL= option is used. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

FOLLOWUPTIME=number-list | MAX
FUTIME=number-list | MAX
FOLLOWUPT=number-list | MAX
FUT=number-list | MAX

specifies the follow-up time, the amount of time in the study past the accrual time. If the GROUPSURVIVAL= or REFSURVIVAL= option is used, then the value of the total time (the sum of accrual and follow-up times) must be less than or equal to the largest time in each multipoint (piecewise linear) survival curve. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

FOLLOWUPTIME=MAX can be used when each scenario in the analysis contains at least one piecewise linear survival curve (in the GROUPSURVIVAL= or REFSURVIVAL= option). It causes the follow-up time to be automatically set, separately for each scenario, to the maximum possible time supported by the piecewise linear survival curve(s) in that scenario. It is not compatible with the ACCRUALTIME=MAX option or the TOTALTIME= option.

GROUPACCRUALRATES=grouped-number-list
GACCRUALRATES=grouped-number-list
GROUPARS=grouped-number-list
GARS=grouped-number-list

specifies the accrual rate for each group. The groupwise accrual rates are the numbers of subjects in each group that enters the study per time unit during the accrual period. The NFRACTIONAL option is automatically enabled when the GROUPACCRUALRATES= option is used. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

GROUPLOSS=grouped-name-list
GLOSS=grouped-name-list

specifies the exponential loss survival curve for each group, by using labels specified with the CURVE= option. Loss is assumed to follow an exponential curve, indicating the expected rate of censoring (in other words, loss to follow-up) over time. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-name-list.

GROUPLOSSEXPHAZARDS=grouped-number-list
GLOSSEXPHAZARDS=grouped-number-list
GROUPLOSSEXPHS=grouped-number-list
GLOSSEXPHS=grouped-number-list

specifies the exponential hazards of the loss in each group. Loss is assumed to follow an exponential curve, indicating the expected rate of censoring (in other words, loss to follow-up) over time. If none of the GROUPLOSSEXPHAZARDS=, GROUPLOSS=, and GROUPMEDLOSSTIMES= options are used, the default of GROUPLOSSEXPHAZARDS=(0 0) indicates no loss to follow-up. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

GROUPMEDLOSSTIMES=grouped-number-list
GMEDLOSSTIMES=grouped-number-list
GROUPMEDLOSSTS=grouped-number-list
GMEDLOSSTS=grouped-number-list

specifies the median times of the loss in each group. Loss is assumed to follow an exponential curve, indicating the expected rate of censoring (in other words, loss to follow-up) over time. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

GROUPMEDSURVTIMES=grouped-number-list
GMEDSURVTIMES=grouped-number-list
GROUPMEDSURVTS=grouped-number-list
GMEDSURVTS=grouped-number-list

specifies the median survival times in each group. When the GROUPMEDSURVTIMES= option is used, the survival curve in each group is assumed to be exponential. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

GROUPNS=grouped-number-list
GNS=grouped-number-list

specifies the two group sample sizes. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

GROUPSURVEXPHAZARDS=grouped-number-list
GSURVEXPHAZARDS=grouped-number-list
GROUPSURVEXPHS=grouped-number-list
GEXPHS=grouped-number-list

specifies exponential hazard rates of the survival curve for each group. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

GROUPSURVIVAL=grouped-name-list
GSURVIVAL=grouped-name-list
GROUPSURV=grouped-name-list
GSURV=grouped-name-list

specifies the survival curve for each group, by using labels specified with the CURVE= option. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-name-list.

GROUPWEIGHTS=grouped-number-list
GWEIGHTS=grouped-number-list

specifies the sample size allocation weights for the two groups. This option controls how the total sample size is divided between the two groups. Each pair of values for the two groups represents relative allocation weights. Additionally, if the NFRACTIONAL option is not used, the total sample size is restricted to be equal to a multiple of the sum of the two group weights (so that the resulting design has an integer sample size for each group while adhering exactly to the group allocation weights). Values must be integers unless the NFRACTIONAL option is used. The default value is (1 1), a balanced design with a weight of 1 for each group. See the section Specifying Value Lists in Analysis Statements for information about specifying the grouped-number-list.

HAZARDRATIO=number-list
HR=number-list

specifies the hazard ratio of the second group’s survival curve to the first group’s survival curve. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

NFRACTIONAL
NFRAC

enables fractional input and output for sample sizes. This option is automatically enabled when any of the following options are used: ACCRUALRATEPERGROUP=, ACCRUALRATETOTAL=, EVENTSTOTAL=, and GROUPACCRUALRATES=. See the section Sample Size Adjustment Options for information about the ramifications of the presence (and absence) of the NFRACTIONAL option.

NPERGROUP=number-list
NPERG=number-list

specifies the common sample size per group or requests a solution for the common sample size per group with a missing value (NPERGROUP=.). Use of this option implicitly specifies a balanced design. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

NSUBINTERVAL=number-list
NSUBINTERVALS=number-list
NSUB=number-list
NSUBS=number-list

specifies the number of subintervals per unit time to use in internal calculations. Higher values increase computational time and memory requirements but generally lead to more accurate results. The default value is 12. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

NTOTAL=number-list

specifies the sample size or requests a solution for the sample size with a missing value (NTOTAL=.). See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

OUTPUTORDER=INTERNAL
OUTPUTORDER=REVERSE
OUTPUTORDER=SYNTAX

controls how the input and default analysis parameters are ordered in the output. OUTPUTORDER=INTERNAL (the default) arranges the parameters in the output according to the following order of their corresponding options:

The OUTPUTORDER=SYNTAX option arranges the parameters in the output in the same order in which their corresponding options are specified in the TWOSAMPLESURVIVAL statement. The OUTPUTORDER=REVERSE option arranges the parameters in the output in the reverse of the order in which their corresponding options are specified in the TWOSAMPLESURVIVAL statement.

POWER=number-list

specifies the desired power of the test or requests a solution for the power with a missing value (POWER=.). The power is expressed as a probability, a number between 0 and 1, rather than as a percentage. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

REFSURVEXPHAZARD=number-list
REFSURVEXPH=number-list

specifies the exponential hazard rate of the survival curve for the first (reference) group. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

REFSURVIVAL=name-list
REFSURV=name-list

specifies the survival curve for the first (reference) group, by using labels specified with the CURVE= option. See the section Specifying Value Lists in Analysis Statements for information about specifying the name-list.

SIDES=keyword-list

specifies the number of sides (or tails) and the direction of the statistical test or confidence interval. See the section Specifying Value Lists in Analysis Statements for information about specifying the keyword-list. Valid keywords and their interpretation are as follows:

1

one-sided with alternative hypothesis in same direction as effect

2

two-sided

U

upper one-sided with the alternative hypothesis favoring better survival in the second group

L

lower one-sided with the alternative hypothesis favoring better survival in the first (reference) group

The default value is 2.

TEST=GEHAN
TEST=LOGRANK
TEST=TARONEWARE

specifies the statistical analysis. TEST=GEHAN specifies the Gehan rank test. TEST=LOGRANK (the default) specifies the log-rank test. TEST=TARONEWARE specifies the Tarone-Ware rank test.

TOTALTIME=number-list | MAX
TOTALT=number-list | MAX

specifies the total time, which is equal to the sum of accrual and follow-up times. If the GROUPSURVIVAL= or REFSURVIVAL= option is used, then the value of the total time must be less than or equal to the largest time in each multipoint (piecewise linear) survival curve. See the section Specifying Value Lists in Analysis Statements for information about specifying the number-list.

TOTALTIME=MAX can be used when each scenario in the analysis contains at least one piecewise linear survival curve (in the GROUPSURVIVAL= or REFSURVIVAL= option). It causes the total time to be automatically set, separately for each scenario, to the maximum possible time supported by the piecewise linear survival curve(s) in that scenario. It is not compatible with the ACCRUALTIME=MAX option or the FOLLOWUPTIME=MAX option.

Restrictions on Option Combinations

To specify the survival curves, choose one of the following parameterizations:

To specify the study time, use any two of the following three options:

  • accrual time (by using the ACCRUALTIME= option)

  • follow-up time (by using the FOLLOWUPTIME= option)

  • total time, the sum of accrual and follow-up times (by using the TOTALTIME= option)

To specify the sample size and allocation, choose one of the following parameterizations:

The values of parameters that involve expected number of events or accrual rate are converted internally to the analogous sample size parameterization (that is, the NPERGROUP=, NTOTAL=, or GROUPNS= option) for the purpose of sample size adjustments according to the presence or absence of the NFRACTIONAL option.

To specify the exponential loss curves, choose one of the following parameterizations:

Option Groups for Common Analyses

This section summarizes the syntax for the common analyses supported in the TWOSAMPLESURVIVAL statement.

Log-Rank Test for Two Survival Curves

You can use the NPERGROUP= option in a balanced design and specify piecewise linear or exponential survival curves by using the CURVE= and GROUPSURVIVAL= options, as in the following statements. Default values for the SIDES=, ALPHA=, NSUBINTERVAL=, and GROUPLOSSEXPHAZARDS= options specify a two-sided test with a significance level of 0.05, an assumption of no loss to follow-up, and the use of 12 subintervals per unit time in computations.

proc power;
   twosamplesurvival test=logrank
      curve("Control")   = (1 2 3):(0.8 0.7 0.6)
      curve("Treatment") = (5):(.6)
      groupsurvival = "Control" | "Treatment"
      accrualtime = 2
      followuptime = 1
      npergroup = 50
      power = .;
run;

In the preceding example, the Control curve is piecewise linear (since it has more than one point), and the Treatment curve is exponential (since it has only one point).

You can also specify an unbalanced design by using the NTOTAL= and GROUPWEIGHTS= options and specify piecewise linear or exponential survival curves with proportional hazards by using the CURVE=, REFSURVIVAL=, and HAZARDRATIO= options:

proc power;
   twosamplesurvival test=logrank
      curve("Control")   = (1 2 3):(0.8 0.7 0.6)
      refsurvival = "Control"
      hazardratio = 1.5
      accrualtime = 2
      followuptime = 1
      groupweights = (1 2)
      ntotal = .
      power = 0.8;
run;

Instead of computing sample size, you can compute the accrual rate by using the ACCRUALRATETOTAL= option:

proc power;
   twosamplesurvival test=logrank
      curve("Control")   = (1 2 3):(0.8 0.7 0.6)
      refsurvival = "Control"
      hazardratio = 1.5
      accrualtime = 2
      followuptime = 1
      groupweights = (1 2)
      accrualratetotal = .
      power = 0.8;
run;

or the expected number of events by using the EVENTSTOTAL= option:

proc power;
   twosamplesurvival test=logrank
      curve("Control")   = (1 2 3):(0.8 0.7 0.6)
      refsurvival = "Control"
      hazardratio = 1.5
      accrualtime = 2
      followuptime = 1
      groupweights = (1 2)
      eventstotal = .
      power = 0.8;
run;

You can also specify sample sizes with the GROUPNS= option and specify exponential survival curves in terms of median survival times:

proc power;
   twosamplesurvival test=logrank
      groupmedsurvtimes = (16 22)
      accrualtime = 6
      totaltime = 18
      groupns = 40 | 60
      power = .;
run;

You can also specify exponential survival curves in terms of the hazard ratio and reference hazard. The default value of the GROUPWEIGHTS= option specifies a balanced design.

proc power;
   twosamplesurvival test=logrank
      hazardratio = 1.2
      refsurvexphazard = 0.7
      accrualtime = 2
      totaltime = 4
      ntotal = 100
      power = .;
run;

You can also specify exponential survival curves in terms of the individual hazards, as in the following statements:

proc power;
   twosamplesurvival test=logrank
      groupsurvexphazards = 0.7 | 0.84
      accrualtime = 2
      totaltime = 4
      ntotal = .
      power = 0.9;
run;
Gehan Rank Test for Two Survival Curves

In addition to the log-rank test, you can also specify the Gehan tank test, as in the following statements. Default values for the SIDES=, ALPHA=, NSUBINTERVAL=, and GROUPLOSSEXPHAZARDS= options specify a two-sided test with a significance level of 0.05, an assumption of no loss to follow-up, and the use of 12 subintervals per unit time in computations.

proc power;
   twosamplesurvival test=gehan
      groupmedsurvtimes = 5 | 7
      accrualtime = 3
      totaltime = 6
      npergroup = .
      power = 0.8;
run;
Tarone-Ware Rank Test for Two Survival Curves

You can also specify the Tarone-Ware tank test, as in the following statements. Default values for the SIDES=, ALPHA=, NSUBINTERVAL=, and GROUPLOSSEXPHAZARDS= options specify a two-sided test with a significance level of 0.05, an assumption of no loss to follow-up, and the use of 12 subintervals per unit time in computations.

proc power;
   twosamplesurvival test=taroneware
      groupmedsurvtimes = 5 | 7
      accrualtime = 3
      totaltime = 6
      npergroup = 100
      power = .;
run;