Documentation Example 6 for PROC POWER
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: pwrex06 */
/* TITLE: Documentation Example 6 for PROC POWER */
/* (Comparing Two Survival Curves) */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: power */
/* sample size */
/* power analysis */
/* log-rank test */
/* PROCS: POWER */
/* DATA: */
/* */
/* SUPPORT: John Castelloe */
/* REF: */
/* MISC: */
/****************************************************************/
data survcurvedata;
lambda = -log(0.5)/5;
do time = 0 to 5 by 0.1;
surv1 = exp(-lambda*time);
if (time<=0.05) then surv2 = 1;
else if (time>=0.995 and time<=1.05) then surv2 = 0.95;
else if (time>=1.995 and time<=2.05) then surv2 = 0.9;
else if (time>=2.995 and time<=3.05) then surv2 = 0.75;
else if (time>=3.995 and time<=4.05) then surv2 = 0.7;
else if (time>=4.995 and time<=5.05) then surv2 = 0.6;
else surv2 = .;
output;
end;
run;
proc template;
define statgraph survcurves;
begingraph;
layout lattice / rows=1 columns=1;
layout overlay /
yaxisopts=( display=ALL label="Prob (Survival Time >= t)")
xaxisopts=( display=ALL label="t")
pad=10;
seriesplot x=time y=surv1 /
name = "std"
lineattrs=(pattern=solid)
legendlabel = "Standard Treatment (exponential)";
seriesplot x=time y=surv2 /
name = "pro"
lineattrs=(pattern=shortdash)
display=all
markerattrs=(symbol = circle)
legendlabel = "Proposed Treatment (piecewise linear)";
discretelegend "std" "pro" /
location=inside
autoalign=(topright)
across=1
border=true;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=survcurvedata template=survcurves;
run;
proc power;
twosamplesurvival test=logrank
curve("Standard") = 5 : 0.5
curve("Proposed") = (1 to 5 by 1):(0.95 0.9 0.75 0.7 0.6)
groupsurvival = "Standard" | "Proposed"
accrualtime = 2
followuptime = 3
groupmedlosstimes = 10 | 20 5
power = 0.8
npergroup = .;
run;