BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
xinjian
Calcite | Level 5

Hi Everyone,

I am doing a survival analysis using PROC lifetest. I want to get failure rate and its confidence interval at 12 month.below is my syntex and output:

proc lifetest data = ll atrisk;

strata intervene;

time month*status(0);

run;

Part of output:

Month

 

Number at risk

observed event

survival

Failure

survival SE

0

 

11

0

1

0

0

2.4658

 

11

1

0.9091

0.0909

0.0867

7.726

 

10

1

0.8182

0.1818

0.1163

8.1205

 

9

1

0.7273

0.2727

0.1343

11.1781

*

8

0

.

.

.

12.3288

*

7

0

.

.

.

12.4603

*

6

0

.

.

.

12.5589

*

5

0

.

.

.

17.3589

 

4

1

0.5455

0.4545

0.1869

23.9014

*

3

0

.

.

.

24.4603

*

2

0

.

.

.

Is there a way to dirrectly get failure rate and its 95%confidence interval?

Many Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

Failure = 1 - Survival. 

You can calculate 1- number to get the failure values from the OUTSURV table. 

 

Regardless here's the way to get SAS to do it, first you need to create the failure plot and specify cl options. Then use the graph to get the values using ODS OUTPUT.  A worked example follows. 

 

I'm also not sure why your code works. There's no survival statement that I can see in the documentation, so it should create an error. 

 

  proc format;
      value risk 1='ALL' 2='AML-Low Risk' 3='AML-High Risk';
    
   data BMT;
      input Group T Status @@;
      format Group risk.;
      label T='Disease Free Time';
      datalines;
   1 2081 0 1 1602 0 1 1496 0 1 1462 0 1 1433 0
   1 1377 0 1 1330 0 1  996 0 1  226 0 1 1199 0
   1 1111 0 1  530 0 1 1182 0 1 1167 0 1  418 1
   1  383 1 1  276 1 1  104 1 1  609 1 1  172 1
   1  487 1 1  662 1 1  194 1 1  230 1 1  526 1
   1  122 1 1  129 1 1   74 1 1  122 1 1   86 1
   1  466 1 1  192 1 1  109 1 1   55 1 1    1 1
   1  107 1 1  110 1 1  332 1 2 2569 0 2 2506 0
   2 2409 0 2 2218 0 2 1857 0 2 1829 0 2 1562 0
   2 1470 0 2 1363 0 2 1030 0 2  860 0 2 1258 0
   2 2246 0 2 1870 0 2 1799 0 2 1709 0 2 1674 0
   2 1568 0 2 1527 0 2 1324 0 2  957 0 2  932 0
   2  847 0 2  848 0 2 1850 0 2 1843 0 2 1535 0
   2 1447 0 2 1384 0 2  414 1 2 2204 1 2 1063 1
   2  481 1 2  105 1 2  641 1 2  390 1 2  288 1
   2  421 1 2   79 1 2  748 1 2  486 1 2   48 1
   2  272 1 2 1074 1 2  381 1 2   10 1 2   53 1
   2   80 1 2   35 1 2  248 1 2  704 1 2  211 1
   2  219 1 2  606 1 3 2640 0 3 2430 0 3 2252 0
   3 2140 0 3 2133 0 3 1238 0 3 1631 0 3 2024 0
   3 1345 0 3 1136 0 3  845 0 3  422 1 3  162 1
   3   84 1 3  100 1 3    2 1 3   47 1 3  242 1
   3  456 1 3  268 1 3  318 1 3   32 1 3  467 1
   3   47 1 3  390 1 3  183 1 3  105 1 3  115 1
   3  164 1 3   93 1 3  120 1 3   80 1 3  677 1
   3   64 1 3  168 1 3   74 1 3   16 1 3  157 1
   3  625 1 3   48 1 3  273 1 3   63 1 3   76 1
   3  113 1 3  363 1
   ;
 

proc lifetest data = bmt atrisk plots=survival(failure cl);
time T*status(0);
strata group ;
ods output failureplot=want;
run; 

 

View solution in original post

4 REPLIES 4
Reeza
Super User

Use outsurv and timelist to specify your intervals. 

 

Note that KM is non parametric so if there isn't an estimate for your specific time point it picks the nearest time with an estimate. 

xinjian
Calcite | Level 5

Hi Reeza,

Thanks for your suggestion, I am still not get failure rate and its CI. Here is my syntax:

proc lifetest data = ll atrisk;

time month*status(0);

strata intervene ;

survival out=out1 ;

run;

proc print data=out1 noobs;

where 3 <=month<=12 & conftype~="";

run;

and my output:

intervene month _CENSOR_ SURVIVAL CONFTYPE SDF_LCL SDF_UCL STRATUM
Intervene 7.72602 0 0.81818 LOGLOG 0.44743 0.95116 1
Intervene 8.12054 0 0.72727 LOGLOG 0.37079 0.90283 1

 Can you help me to get failure rate and its CI?

Thanks

Reeza
Super User

Failure = 1 - Survival. 

You can calculate 1- number to get the failure values from the OUTSURV table. 

 

Regardless here's the way to get SAS to do it, first you need to create the failure plot and specify cl options. Then use the graph to get the values using ODS OUTPUT.  A worked example follows. 

 

I'm also not sure why your code works. There's no survival statement that I can see in the documentation, so it should create an error. 

 

  proc format;
      value risk 1='ALL' 2='AML-Low Risk' 3='AML-High Risk';
    
   data BMT;
      input Group T Status @@;
      format Group risk.;
      label T='Disease Free Time';
      datalines;
   1 2081 0 1 1602 0 1 1496 0 1 1462 0 1 1433 0
   1 1377 0 1 1330 0 1  996 0 1  226 0 1 1199 0
   1 1111 0 1  530 0 1 1182 0 1 1167 0 1  418 1
   1  383 1 1  276 1 1  104 1 1  609 1 1  172 1
   1  487 1 1  662 1 1  194 1 1  230 1 1  526 1
   1  122 1 1  129 1 1   74 1 1  122 1 1   86 1
   1  466 1 1  192 1 1  109 1 1   55 1 1    1 1
   1  107 1 1  110 1 1  332 1 2 2569 0 2 2506 0
   2 2409 0 2 2218 0 2 1857 0 2 1829 0 2 1562 0
   2 1470 0 2 1363 0 2 1030 0 2  860 0 2 1258 0
   2 2246 0 2 1870 0 2 1799 0 2 1709 0 2 1674 0
   2 1568 0 2 1527 0 2 1324 0 2  957 0 2  932 0
   2  847 0 2  848 0 2 1850 0 2 1843 0 2 1535 0
   2 1447 0 2 1384 0 2  414 1 2 2204 1 2 1063 1
   2  481 1 2  105 1 2  641 1 2  390 1 2  288 1
   2  421 1 2   79 1 2  748 1 2  486 1 2   48 1
   2  272 1 2 1074 1 2  381 1 2   10 1 2   53 1
   2   80 1 2   35 1 2  248 1 2  704 1 2  211 1
   2  219 1 2  606 1 3 2640 0 3 2430 0 3 2252 0
   3 2140 0 3 2133 0 3 1238 0 3 1631 0 3 2024 0
   3 1345 0 3 1136 0 3  845 0 3  422 1 3  162 1
   3   84 1 3  100 1 3    2 1 3   47 1 3  242 1
   3  456 1 3  268 1 3  318 1 3   32 1 3  467 1
   3   47 1 3  390 1 3  183 1 3  105 1 3  115 1
   3  164 1 3   93 1 3  120 1 3   80 1 3  677 1
   3   64 1 3  168 1 3   74 1 3   16 1 3  157 1
   3  625 1 3   48 1 3  273 1 3   63 1 3   76 1
   3  113 1 3  363 1
   ;
 

proc lifetest data = bmt atrisk plots=survival(failure cl);
time T*status(0);
strata group ;
ods output failureplot=want;
run; 

 

xinjian
Calcite | Level 5

Reeza,

Thanks for your help!

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 4 replies
  • 6527 views
  • 0 likes
  • 2 in conversation