The Stochastic Curtailment method of Boundary Construction

Share:

Description

The function SC is used in calls to the functions GrpSeqBnds and PwrGSD as a possible setting for the arguments EfficacyBoundary and FutilityBoundary, in specification of the method whereby efficacy and or futility boundaries are to be constructed. The Stochastic Curtailment method is one of four currently availiable choices, the others being LanDemets, Haybittle and user specified.

Usage

1
SC(be.end, prob, drift.end = NULL, from = NULL, to = NULL)

Arguments

be.end

The value of the efficacy criterion in the scale of a standardized normal. This should be set to something further from the null than the single test $Z_alpha$. For example if the total type I error probability is 0.05 in a two sided test of the null than set be.end to 2.10 or larger (instead of 1.96).

prob

The criterion, a probability to be exceeded in order to stop. 0.90 or above is a good choice. See detail below.

drift.end

Required only if you are using SC to set the FutilityBoundary. In this case, set drift.end to the value of the drift function anticipated at the end of the trial. See detail below.

from

WARNING EXPERIMENTAL: you can actually construct boundaries via a hybrid of the 3 boundary construction methods, LanDemets, SC, and 'user specified'. When using a hybrid boundry, set the argument EfficacyBoundary or FutilityBoundary respectively, to a list with components LanDemets, SC, or user specified numbers. In the former two cases, from and to are used in LanDemets and also in SC to stipulate how many interim analyses they are in effect. See the help for GrpSeqBnds and PwrGSD

to

See above.

Details

When the stochastic curtailment procedure is used to construct the efficacy boundary, i.e. EfficacyBoundary=SC(...), the efficacy criterion is reached when the conditional probability, under the null hypothesis, that the last analysis results in statistical significance, given the present value of the statistic, exceeds 'prob'. In of itself, this doesn't produce a boundary on the scale of a standard normal, but it is easily converted to one as is done here. When this is used to construct a futility boundary, i.e. FutilityBoundary=SC(...), the futility criterion is reached when the conditional probability, under the design alternative hypothesis, that the last analysis does not result in statistical significance, given the present value of the statistic, exceeds 'prob'. The design alternative corresponds to a drift function, which is the expected value of the statistic normalized to have variance equal to the information fraction at each interim analysis. For the unweighted log-rank statistic, the drift function is $(V_T)^(1/2)$ B f, where B is the logged relative risk, $V_T$ is the variance at the end of the trial and f is the information fraction. If the two trial arms are balanced and the number at risk is roughly constant throughout the trial then $V_T = pi (1-pi) N_T$, where $pi$ is the constant proportion at risk in one of the trial arms and $N_T$ is the anticipated number of events.

Value

An object of class boundary.construction.method which is really a list with the following components. The print method displays the original call.

type

Gives the boundary construction method type, which is the character string "SC"

be.end

The numeric value passed to the argument 'be.end', which is the value of the efficacy criterion in the scale of a standardized normal.

prob

The numeric value passed to the argument 'prob', which is the probability to be exceeded in order to stop.

drift.end

The numeric value passed to the argument 'drift.end', which is the value of the drift function at the end of the trial. See details.

from

The numeric value passed to the argument 'from'. See above.

to

The numeric value passed to the argument 'to'. See above.

call

returns the call

Note

The print method returns the call by default

Author(s)

Grant Izmirlian

References

see references under PwrGSD

See Also

LanDemets, GrpSeqBnds, PwrGSD

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
## example 1: what is the result of calling a Boundary Construction Method function
    ## A call to 'SC' just returns the call
    SC(be.end=2.10, prob=0.90)
    
    ## It does arguement checking...this results in an error
    ## Not run: 
      SC(be.end=2.10)
    
## End(Not run)
    
    ## but really its value is a list with the a component containing
    ## the boundary method type, "LanDemts", and components for each
    ## of the arguments.
    names(SC(be.end=2.10, prob=0.90))

    SC(be.end=2.10, prob=0.90, drift.end=2.34)$type
    SC(be.end=2.10, prob=0.90, drift.end=2.34)$be.end
    SC(be.end=2.10, prob=0.90, drift.end=2.34)$prob
    SC(be.end=2.10, prob=0.90, drift.end=2.34)$drift.end

## example 2: ...But the intended purpose of the spending functions its
    ## intended purpose is in constructing calls to 'GrpSeqBnds' and to 'PwrGSD':
     

    frac <- c(0.07614902,0.1135391,0.168252,0.2336901,0.3186155,
              0.4164776,0.5352199,0.670739,0.8246061,1)
    drift <- c(0.3836636,0.5117394,0.6918584,0.8657705,1.091984,
	      1.311094,1.538582,1.818346,2.081775,2.345386)

    test <- GrpSeqBnds(frac=frac, EfficacyBoundary=LanDemets(alpha=0.05, spending=ObrienFleming),
                       FutilityBoundary=SC(be.end=2.10, prob=0.90, drift.end=drift[10]),
                       drift=drift)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.