gsCP() computes conditional boundary crossing probabilities at future planned analyses for a given group sequential design assuming an interim z-statistic at a specified interim analysis.
gsCP() is designed toward computing conditional power for a variety of underlying parameter values,
condPower is built to compute conditional power for a variety of interim test statistic values which is useful for sample size adaptation (see
gsPP() averages conditional power across a posterior distribution to compute predictive power.
gsPI() computes Bayesian prediction intervals for future analyses corresponding to results produced by
gsPosterior() computes the posterior density for the group sequential design parameter of interest given a prior density and an interim outcome that is exact or in an interval.
gsPOS() computes the probability of success for a trial using a prior distribution to average power over a set of
theta values of interest.
gsCPOS() assumes no boundary has been crossed before and including an interim analysis of interest, and computes the probability of success based on this event.
gsPP() take only the interim test statistic into account in computing conditional probabilities, while
gsCPOS() conditions on not crossing any bound through a specified interim analysis.
1 2 3 4 5 6
An object of type
a vector with theta value(s) at which conditional power is to be computed; for
Weights to be used with grid points in
analysis at which interim z-value is given; must be from 1 to
provides a prior distribution in the form produced by
interim z-value at analysis i (scalar)
specific analysis for which prediction is being made; must be
Integer value controlling grid for numerical integration as in Jennison and Turnbull (2000);
default is 18, range is 1 to 80.
Larger values provide larger number of grid points and greater accuracy.
The default of
The level to be used for Bayes credible intervals (which approach confidence intervals for vague priors). The default
See Conditional power section of manual for further clarification. See also Muller and Schaffer (2001) for background theory.
gsCPOS(), the prior distribution for the standardized parameter
theta () for a group sequential design specified through a gsDesign object is specified through the arguments
wgts. This can be a discrete or a continuous probability density function. For a discrete function, generally all weights would be 1. For a continuous density, the
wgts would contain integration grid weights, such as those provided by normalGrid.
gsPosterior, a prior distribution in
prior must be composed of the vectors
z contains points where the prior is evaluated and
density the corresponding density or, for a discrete distribution, the probabilities of each point in
Densities may be supplied as from
normalGrid() where grid weights for numerical integration are supplied in
gridwgts are not supplied, they are defaulted to 1 (equal weighting).
To ensure a proper prior distribution, you must have
sum(gridwgts * density) equal to 1; this is NOT checked, however.
gsCP() returns an object of the class
Based on the input design and the interim test statistic, the output gsDesign object has bounds for test statistics computed based on solely on observations after interim
Boundary crossing probabilities are computed for the input theta values.
See manual and examples.
gsPP() if total==TRUE, returns a real value indicating the predictive power of the trial conditional on the interim test statistic
zi at analysis
i; otherwise returns vector with predictive power for each future planned analysis.
gsPI() returns an interval (or point estimate if
level=0) indicating 100
level% credible interval for the z-statistic at analysis
j conditional on the z-statistic at analysis
The interval does not consider intervending interim analyses.
The probability estimate is based on the predictive distribution used for
gsPP() and requires a prior distribution for the group sequential parameter
theta specified in
gsPosterior() returns a posterior distribution containing the the vector
z input in
prior$z, the posterior density in
density, grid weights for integrating the posterior density as input in
prior$gridwgts or defaulted to a vector of ones, and the product of the output values in
gsPOS() returns a real value indicating the probability of a positive study weighted by the prior distribution input for
gsCPOS() returns a real value indicating the probability of a positive study weighted by the posterior distribution derived from the interim test statistic and the prior distribution input for
theta conditional on an interim test statistic.
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.
Keaven Anderson keaven\_anderson@merck.
Jennison C and Turnbull BW (2000), Group Sequential Methods with Applications to Clinical Trials. Boca Raton: Chapman and Hall.
Proschan, Michael A., Lan, KK Gordon and Wittes, Janet Turk (2006), Statiscal Monitoring of Clinical Trials. NY: Springer.
Muller, Hans-Helge and Schaffer, Helmut (2001), Adaptive group sequential designs for clinical trials: combining the advantages of adaptive and classical group sequential approaches. Biometrics;57:886-891.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
# set up a group sequential design x <- gsDesign(k=5) x # set up a prior distribution for the treatment effect # that is normal with mean .75*x$delta and standard deviation x$delta/2 mu0 <-.75*x$delta sigma0 <- x$delta/2 prior <- normalGrid(mu=mu0, sigma=sigma0) # compute POS for the design given the above prior distribution for theta gsPOS(x=x, theta=prior$z, wgts=prior$wgts) # assume POS should only count cases in prior where theta >= x$delta/2 gsPOS(x=x, theta=prior$z, wgts=prior$wgts*(prior$z>=x$delta/2)) # assuming a z-value at lower bound at analysis 2, what are conditional # boundary crossing probabilities for future analyses # assuming theta values from x as well as a value based on the interim # observed z CP <- gsCP(x, i=2, zi=x$lower$bound) CP # summing values for crossing future upper bounds gives overall # conditional power for each theta value CP$theta t(CP$upper$prob) # compute predictive probability based on above assumptions gsPP(x, i=2, zi=x$lower$bound, theta=prior$z, wgts=prior$wgts) # if it is known that boundary not crossed at interim 2, use # gsCPOS to compute conditional POS based on this gsCPOS(x=x, i=2, theta=prior$z, wgts=prior$wgts) # 2-stage example to compare results to direct computation x<-gsDesign(k=2) z1<- 0.5 n1<-x$n.I n2<-x$n.I-x$n.I thetahat<-z1/sqrt(n1) theta<-c(thetahat, 0 , x$delta) # conditional power direct computation - comparison w gsCP pnorm((n2*theta+z1*sqrt(n1)-x$upper$bound*sqrt(n1+n2))/sqrt(n2)) gsCP(x=x, zi=z1, i=1)$upper$prob # predictive power direct computation - comparison w gsPP # use same prior as above mu0 <- .75 * x$delta * sqrt(x$n.I) sigma2 <- (.5 * x$delta)^2 * x$n.I prior <- normalGrid(mu=.75 * x$delta, sigma=x$delta/2) gsPP(x=x, zi=z1, i=1, theta=prior$z, wgts=prior$wgts) t <- .5 z1 <- .5 b <- z1 * sqrt(t) # direct from Proschan, Lan and Wittes eqn 3.10 # adjusted drift at n.I pnorm(((b - x$upper$bound) * (1 + t * sigma2) + (1 - t) * (mu0 + b * sigma2)) / sqrt((1 - t) * (1 + sigma2) * (1 + t * sigma2))) # plot prior then posterior distribution for unblinded analysis with i=1, zi=1 xp <- gsPosterior(x=x,i=1,zi=1,prior=prior) plot(x=xp$z, y=xp$density, type="l", col=2, xlab=expression(theta), ylab="Density") points(x=x$z, y=x$density, col=1) # add posterior plot assuming only knowlede that interim bound has # not been crossed at interim 1 xpb <- gsPosterior(x=x,i=1,zi=1,prior=prior) lines(x=xpb$z,y=xpb$density,col=4) # prediction interval based in interim 1 results # start with point estimate, followed by 90% prediction interval gsPI(x=x, i=1, zi=z1, j=2, theta=prior$z, wgts=prior$wgts, level=0) gsPI(x=x, i=1, zi=z1, j=2, theta=prior$z, wgts=prior$wgts, level=.9)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.