cpower
Power of Cox/logrank TwoSample Test
Assumes exponential distributions for both treatment groups. Uses the GeorgeDesu method along with formulas of Schoenfeld that allow estimation of the expected number of events in the two groups. To allow for dropins (noncompliance to control therapy, crossover to intervention) and noncompliance of the intervention, the method of Lachin and Foulkes is used.
Usage
cpower(tref, n, mc, r, accrual, tmin, noncomp.c=0, noncomp.i=0, alpha=0.05, nc, ni, pr=TRUE)
Arguments
 tref
 time at which mortalities estimated
 n

total sample size (both groups combined). If allocation is unequal
so that there are not
n/2
observations in each group, you may specify the sample sizes innc
andni
.  mc
 trefyear mortality, control
 r

% reduction in
mc
by intervention  accrual
 duration of accrual period
 tmin
 minimum followup time
 noncomp.c
 % noncompliant in control group (dropins)
 noncomp.i
 % noncompliant in intervention group (nonadherers)
 alpha
 type I error probability. A 2tailed test is assumed.
 nc
 number of subjects in control group
 ni

number of subjects in intervention group.
nc
andni
are specified exclusive ofn
.  pr

set to
FALSE
to suppress printing of details
Details
For handling noncompliance, uses a modification of formula (5.4) of
Lachin and Foulkes. Their method is based on a test for the difference
in two hazard rates, whereas cpower
is based on testing the difference
in two log hazards. It is assumed here that the same correction factor
can be approximately applied to the log hazard ratio as Lachin and Foulkes applied to
the hazard difference.
Note that Schoenfeld approximates the variance
of the log hazard ratio by 4/m
, where m
is the total number of events,
whereas the GeorgeDesu method uses the slightly better 1/m1 + 1/m2
.
Power from this function will thus differ slightly from that obtained with
the SAS samsizc
program.
Value

power
Side Effects
prints
References
Peterson B, George SL: Controlled Clinical Trials 14:511522; 1993.
Lachin JM, Foulkes MA: Biometrics 42:507519; 1986.
Schoenfeld D: Biometrics 39:499503; 1983.
See Also
Examples
#In this example, 4 plots are drawn on one page, one plot for each
#combination of noncompliance percentage. Within a plot, the
#5year mortality % in the control group is on the xaxis, and
#separate curves are drawn for several % reductions in mortality
#with the intervention. The accrual period is 1.5y, with all
#patients followed at least 5y and some 6.5y.
par(mfrow=c(2,2),oma=c(3,0,3,0))
morts < seq(10,25,length=50)
red < c(10,15,20,25)
for(noncomp in c(0,10,15,1)) {
if(noncomp>=0) nc.i < nc.c < noncomp else {nc.i < 25; nc.c < 15}
z < paste("Dropin ",nc.c,"%, Nonadherence ",nc.i,"%",sep="")
plot(0,0,xlim=range(morts),ylim=c(0,1),
xlab="5year Mortality in Control Patients (%)",
ylab="Power",type="n")
title(z)
cat(z,"\n")
lty < 0
for(r in red) {
lty < lty+1
power < morts
i < 0
for(m in morts) {
i < i+1
power[i] < cpower(5, 14000, m/100, r, 1.5, 5, nc.c, nc.i, pr=FALSE)
}
lines(morts, power, lty=lty)
}
if(noncomp==0)legend(18,.55,rev(paste(red,"% reduction",sep="")),
lty=4:1,bty="n")
}
mtitle("Power vs NonAdherence for Main Comparison",
ll="alpha=.05, 2tailed, Total N=14000",cex.l=.8)
#
# Point sample size requirement vs. mortality reduction
# Root finder (uniroot()) assumes needed sample size is between
# 1000 and 40000
#
nc.i < 25; nc.c < 15; mort < .18
red < seq(10,25,by=.25)
samsiz < red
i < 0
for(r in red) {
i < i+1
samsiz[i] < uniroot(function(x) cpower(5, x, mort, r, 1.5, 5,
nc.c, nc.i, pr=FALSE)  .8,
c(1000,40000))$root
}
samsiz < samsiz/1000
par(mfrow=c(1,1))
plot(red, samsiz, xlab='% Reduction in 5Year Mortality',
ylab='Total Sample Size (Thousands)', type='n')
lines(red, samsiz, lwd=2)
title('Sample Size for Power=0.80\nDropin 15%, Nonadherence 25%')
title(sub='alpha=0.05, 2tailed', adj=0)