Skip to contents

Group sequential design using weighted log-rank test under non-proportional hazards

Usage

gs_design_wlr(
  enrollRates = tibble::tibble(Stratum = "All", duration = c(2, 2, 10), rate = c(3, 6,
    9)),
  failRates = tibble::tibble(Stratum = "All", duration = c(3, 100), failRate =
    log(2)/c(9, 18), hr = c(0.9, 0.6), dropoutRate = rep(0.001, 2)),
  ratio = 1,
  weight = wlr_weight_fh,
  approx = "asymptotic",
  alpha = 0.025,
  beta = 0.1,
  IF = NULL,
  analysisTimes = 36,
  binding = FALSE,
  upper = gs_b,
  upar = gsDesign(k = 3, test.type = 1, n.I = c(0.25, 0.75, 1), sfu = sfLDOF, sfupar =
    NULL)$upper$bound,
  lower = gs_b,
  lpar = c(qnorm(0.1), -Inf, -Inf),
  h1_spending = TRUE,
  test_upper = TRUE,
  test_lower = TRUE,
  r = 18,
  tol = 1e-06
)

Arguments

enrollRates

enrollment rates

failRates

failure and dropout rates

ratio

Experimental:Control randomization ratio (not yet implemented)

weight

weight of weighted log rank test

  • "1"=unweighted,

  • "n"=Gehan-Breslow,

  • "sqrtN"=Tarone-Ware,

  • "FH_p[a]_q[b]"= Fleming-Harrington with p=a and q=b

approx

approximate estimation method for Z statistics

  • "event driven" = only work under proportional hazard model with log rank test

  • "asymptotic"

alpha

One-sided Type I error

beta

Type II error

IF

Targeted information fraction at each analysis

analysisTimes

Minimum time of analysis

binding

indicator of whether futility bound is binding; default of FALSE is recommended

upper

Function to compute upper bound

upar

Parameter passed to upper()

lower

Function to compute lower bound

lpar

Parameter passed to lower()

h1_spending

Indicator that lower bound to be set by spending under alternate hypothesis (input failRates) if spending is used for lower bound

test_upper

indicator of which analyses should include an upper (efficacy) bound; single value of TRUE (default) indicates all analyses; otherwise, a logical vector of the same length as info should indicate which analyses will have an efficacy bound

test_lower

indicator of which analyses should include an lower bound; single value of TRUE (default) indicates all analyses; single value FALSE indicated no lower bound; otherwise, a logical vector of the same length as info should indicate which analyses will have a lower bound

r

Integer, at least 2; default of 18 recommended by Jennison and Turnbull

tol

Tolerance parameter for boundary convergence (on Z-scale)

Specification

The contents of this section are shown in PDF user manual only.

Examples

library(dplyr)
library(mvtnorm)
library(gsDesign)

enrollRates <- tibble::tibble(Stratum = "All", duration = 12, rate = 500/12)

failRates <- tibble::tibble(Stratum = "All",
                            duration = c(4, 100),
                            failRate = log(2) / 15,  # median survival 15 month
                            hr = c(1, .6),
                            dropoutRate = 0.001)


x <- gsDesign::gsSurv( k = 3 , test.type = 4 , alpha = 0.025 ,
                       beta = 0.2 , astar = 0 , timing = c( 1 ) ,
                       sfu = sfLDOF , sfupar = c( 0 ) , sfl = sfLDOF ,
                       sflpar = c( 0 ) , lambdaC = c( 0.1 ) ,
                       hr = 0.6 , hr0 = 1 , eta = 0.01 ,
                       gamma = c( 10 ) ,
                       R = c( 12 ) , S = NULL ,
                       T = 36 , minfup = 24 , ratio = 1 )

# User defined boundary
gs_design_wlr(enrollRates = enrollRates, failRates = failRates,
             ratio = 1, alpha = 0.025, beta = 0.2,
             weight = function(x, arm0, arm1){
                 gsdmvn:::wlr_weight_fh(x, arm0, arm1, rho = 0, gamma = 0.5)
             },
             upar = x$upper$bound,
             lpar = x$lower$bound,
             analysisTimes = c(12, 24, 36))
#> $enrollRates
#> # A tibble: 1 × 3
#>   Stratum duration  rate
#>   <chr>      <dbl> <dbl>
#> 1 All           12  30.6
#> 
#> $failRates
#> # A tibble: 2 × 5
#>   Stratum duration failRate    hr dropoutRate
#>   <chr>      <dbl>    <dbl> <dbl>       <dbl>
#> 1 All            4   0.0462   1         0.001
#> 2 All          100   0.0462   0.6       0.001
#> 
#> $bounds
#> # A tibble: 6 × 11
#>   Analysis Bound  Time     N Events      Z Probability   AHR theta  info info0
#>      <int> <chr> <dbl> <dbl>  <dbl>  <dbl>       <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1        1 Upper    12  368.   79.0  3.71      0.00356 0.781 0.626  2.65  2.66
#> 2        2 Upper    24  368.  181.   2.51      0.504   0.666 0.765 11.3  11.6 
#> 3        3 Upper    36  368.  244.   1.99      0.800   0.639 0.732 20.0  20.9 
#> 4        1 Lower    12  368.   79.0 -0.236     0.105   0.781 0.626  2.65  2.66
#> 5        2 Lower    24  368.  181.   1.17      0.157   0.666 0.765 11.3  11.6 
#> 6        3 Lower    36  368.  244.   1.99      0.200   0.639 0.732 20.0  20.9 
#> 

# Boundary derived by spending function
gs_design_wlr(enrollRates = enrollRates, failRates = failRates,
             ratio = 1, alpha = 0.025, beta = 0.2,
             weight = function(x, arm0, arm1){
                  gsdmvn:::wlr_weight_fh(x, arm0, arm1, rho = 0, gamma = 0.5)
             },
             upper = gs_spending_bound,
             upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025),
             lower = gs_spending_bound,
             lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.2),
             analysisTimes = c(12, 24, 36))
#> $enrollRates
#> # A tibble: 1 × 3
#>   Stratum duration  rate
#>   <chr>      <dbl> <dbl>
#> 1 All           12  24.0
#> 
#> $failRates
#> # A tibble: 2 × 5
#>   Stratum duration failRate    hr dropoutRate
#>   <chr>      <dbl>    <dbl> <dbl>       <dbl>
#> 1 All            4   0.0462   1         0.001
#> 2 All          100   0.0462   0.6       0.001
#> 
#> $bounds
#> # A tibble: 6 × 11
#>   Analysis Bound  Time     N Events      Z  Probability   AHR theta  info info0
#>      <int> <chr> <dbl> <dbl>  <dbl>  <dbl>        <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1        1 Upper    12  288.   61.9  6.18  0.0000000671 0.781 0.626  2.08  2.09
#> 2        2 Upper    24  288.  142.   2.80  0.301        0.666 0.765  8.86  9.07
#> 3        3 Upper    36  288.  191.   1.97  0.800        0.639 0.732 15.7  16.4 
#> 4        1 Lower    12  288.   61.9 -2.43  0.000431     0.781 0.626  2.08  2.09
#> 5        2 Lower    24  288.  142.   0.925 0.0882       0.666 0.765  8.86  9.07
#> 6        3 Lower    36  288.  191.   1.97  0.2          0.639 0.732 15.7  16.4 
#>