gsBinomialExact: 3.4: One-Sample Binomial Routines

Description Usage Arguments Details Value Note Author(s) References See Also Examples

View source: R/gsBinomialExact.R

Description

gsBinomialExact computes power/Type I error and expected sample size for a group sequential design in a single-arm trial with a binary outcome. This can also be used to compare event rates in two-arm studies. The print function has been extended using print.gsBinomialExact to print gsBinomialExact objects; see examples. Similarly, a plot function has been extended using plot.gsBinomialExact to plot gsBinomialExact objects; see examples.

binomialSPRT computes a truncated binomial sequential probability ratio test (SPRT) which is a specific instance of an exact binomial group sequential design for a single arm trial with a binary outcome.

nBinomial1Sample uses exact binomial calculations to compute power and sample size for single arm binomial experiments.

Usage

1
2
3
4
5
6
7
8
9
gsBinomialExact(k=2, theta=c(.1, .2), n.I=c(50, 100), a=c(3, 7), b=c(20,30))
binomialSPRT(p0,p1,alpha,beta,minn,maxn)
nBinomial1Sample(p0 = 0.90, p1=0.95, 
                 alpha = 0.025, beta=NULL, 
                 n = 200:250, outtype=1, conservative=FALSE)
## S3 method for class 'gsBinomialExact'
plot(x,plottype=1,...)
## S3 method for class 'binomialSPRT'
plot(x,plottype=1,...)

Arguments

k

Number of analyses planned, including interim and final.

theta

Vector of possible underling binomial probabilities for a single binomial sample.

n.I

Sample size at analyses (increasing positive integers); vector of length k.

a

Number of "successes" required to cross lower bound cutoffs to reject p1 in favor of p0 at each analysis; vector of length k; -1 means no lower bound.

b

Number of "successes" required to cross upper bound cutoffs for rejecting p0 in favor of p1 at each analysis; vector of length k.

p0

Lower of the two response (event) rates hypothesized.

p1

Higher of the two response (event) rates hypothesized.

alpha

Nominal probability of rejecting response (event) rate p0 when it is true.

beta

Nominal probability of rejecting response (event) rate p1 when it is true.

minn

Minimum sample size at which sequential testing begins.

maxn

Maximum sample size.

x

Item of class gsBinomialExact or binomialSPRT for print.gsBinomialExact. Item of class gsBinomialExact for plot.gsBinomialExact. Item of class binomialSPRT for item of class binomialSPRT.

plottype

1 produces a plot with counts of response at bounds (for binomialSPRT, also produces linear SPRT bounds); 2 produces a plot with power to reject null and alternate response rates as well as the probability of not crossing a bound by the maximum sample size; 3 produces a plot with the response rate at the boundary as a function of sample size when the boundary is crossed; 6 produces a plot of the expected sample size by the underlying event rate (this assumes there is no enrollment beyond the sample size where the boundary is crossed).

n

sample sizes to be considered for nBinomial1Sample. These should be ordered from smallest to largest and be > 0.

outtype

Operative when beta != NULL. 1 means routine will return a single integer sample size while for output=2 or 3 a data frame is returned (see Value).

conservative

operative when outtype=1 or 2 and beta != NULL. Default FALSE selects minimum sample size for which power is at least 1-beta. When conservative=TRUE, the minimum sample sample size for which power is at least 1-beta and there is no larger sample size in the input n where power is less than 1-beta.

...

arguments passed through to ggplot.

Details

gsBinomialExact is based on the book "Group Sequential Methods with Applications to Clinical Trials," Christopher Jennison and Bruce W. Turnbull, Chapter 12, Section 12.1.2 Exact Calculations for Binary Data. This computation is often used as an approximation for the distribution of the number of events in one treatment group out of all events when the probability of an event is small and sample size is large.

An object of class gsBinomialExact is returned. On output, the values of theta input to gsBinomialExact will be the parameter values for which the boundary crossing probabilities and expected sample sizes are computed.

Note that a[1] equal to -1 lower bound at n.I[1] means 0 successes continues at interim 1; a[2]==0 at interim 2 means 0 successes stops trial for futility at 2nd analysis. For final analysis, set a[k] equal to b[k]-1 to incorporate all possibilities into non-positive trial; see example.

The sequential probability ratio test (SPRT) is a sequential testing scheme allowing testing after each observation. This likelihood ratio is used to determine upper and lower cutoffs which are linear and parallel in the number of responses as a function of sample size. binomialSPRT produces a variation the the SPRT that tests only within a range of sample sizes. While the linear SPRT bounds are continuous, actual bounds are the integer number of response at or beyond each linear bound for each sample size where testing is performed. Because of the truncation and discretization of the bounds, power and Type I error achieve will be lower than the nominal levels specified by alpha and beta which can be altered to produce desired values that are achieved by the planned sample size. See also example that shows computation of Type I error when futility bound is considered non-binding.

Note that if the objective of a design is to demonstrate that a rate (e.g., failure rate) is lower than a certain level, two approaches can be taken. First, 1 minus the failure rate is the success rate and this can be used for planning. Second, the role of beta becomes to express Type I error and alpha is used to express Type II error.

Plots produced include boundary plots, expected sample size, response rate at the boundary and power.

gsBinomial1Sample uses exact binomial computations based on the base R functions qbinom() and pbinom(). The tabular output may be convenient for plotting. Note that input variables are largely not checked, so the user is largely responsible for results; it is a good idea to do a run with outtype=3 to check that you have done things appropriately. If n is not ordered (a bad idea) or not sequential (maybe OK), be aware of possible consequences.

Value

gsBinomialExact() returns a list of class gsBinomialExact and gsProbability (see example); when displaying one of these objects, the default function to print is print.gsProbability(). The object returned from gsBinomialExact() contains the following elements:

k

As input.

theta

As input.

n.I

As input.

lower

A list containing two elements: bound is as input in a and prob is a matrix of boundary crossing probabilities. Element i,j contains the boundary crossing probability at analysis i for the j-th element of theta input. All boundary crossing is assumed to be binding for this computation; that is, the trial must stop if a boundary is crossed.

upper

A list of the same form as lower containing the upper bound and upper boundary crossing probabilities.

en

A vector of the same length as theta containing expected sample sizes for the trial design corresponding to each value in the vector theta.

binomialSPRT produces an object of class binomialSPRT that is an extension of the gsBinomialExact class. The values returned in addition to those returned by gsBinomialExact are:

intercept

A vector of length 2 with the intercepts for the two SPRT bounds.

slope

A scalar with the common slope of the SPRT bounds.

alpha

As input. Note that this will exceed the actual Type I error achieved by the design returned.

beta

As input. Note that this will exceed the actual Type II error achieved by the design returned.

p0

As input.

p1

As input.

nBinomial1Sample produces an integer if the input outtype=1 and a data frame with the following values otherwise:

p0

Input null hypothesis event (or response) rate.

p1

Input alternative hypothesis (or response) rate; must be > p0.

alpha

Input Type I error.

beta

Input Type II error except when input is NULL in which case realized Type II error is computed.

alphaR

Type I error achieved for each output value of n; less than or equal to the input value alpha.

Power

Power achived for each output value of n.

n

sample size.

b

cutoff given n to control Type I error; value is NULL if no such value exists.

Note

The manual is not linked to this help file, but is available in library/gsdesign/doc/gsDesignManual.pdf in the directory where R is installed.

Author(s)

Jon Hartzel, Yevgen Tymofyeyev and Keaven Anderson keaven\_anderson@merck.

References

Jennison C and Turnbull BW (2000), Group Sequential Methods with Applications to Clinical Trials. Boca Raton: Chapman and Hall.

Code for nBinomial1Sample was based on code developed by marc_schwartz@me.com.

See Also

gsProbability

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
33
34
35
36
37
38
39
40
41
42
43
44
zz <- gsBinomialExact(k=3,theta=seq(0,1,0.1), n.I=c(12,24,36),
        a=c(-1, 0, 11),  b=c( 5, 9, 12))

# let's see what class this is
class(zz)

# because of "gsProbability" class above, following is equivalent to 
# print.gsProbability(zz)
zz
# also plot (see also plots below for \code{binomialSPRT})
# add lines using geom_line()
plot(zz) + geom_line()

# now for SPRT examples
x <- binomialSPRT(p0=.05,p1=.25,alpha=.1,beta=.2)
# boundary plot
plot(x)
# power plot
plot(x,plottype=2)
# Response (event) rate at boundary
plot(x,plottype=3)
# Expect sample size at boundary crossing or end of trial
plot(x,plottype=6)

# sample size for single arm exact binomial

# plot of table of power by sample size
nb1 <- nBinomial1Sample(p0 = 0.05, p1=0.2,alpha = 0.025, beta=.2, n = 25:40, outtype=3)
nb1
library(scales)
ggplot(nb1,aes(x=n,y=Power))+geom_line()+geom_point()+scale_y_continuous(labels=percent)

# simple call with same parameters to get minimum sample size yielding desired power
nBinomial1Sample(p0 = 0.05, p1=0.2,alpha = 0.025, beta=.2, n = 25:40)

# change to 'conservative' if you want all larger sample
# sizes to also provide adequate power
nBinomial1Sample(p0 = 0.05, p1=0.2,alpha = 0.025, beta=.2, n = 25:40, conservative=TRUE)

# print out more information for the selected derived sample size
nBinomial1Sample(p0 = 0.05, p1=0.2,alpha = 0.025, beta=.2, n = 25:40, conservative=TRUE,outtype=2)

# what happens if input sample sizes not sufficient?
nBinomial1Sample(p0 = 0.05, p1=0.2,alpha = 0.025, beta=.2, n = 25:30)

gsDesign documentation built on May 2, 2019, 4:49 p.m.