Dear all,
Now I'm trying to draw a Kaplan-Meier Curve without the plot of censored observations by using proc lifetest (The SAS code is as follows).
However the NOCENSPLOT option does not work well on my environment (SAS ver.9.2.), though the plot of censored observations can be suppressed by using CENSOREDSYMBOL option (i.e. CENSOREDSYMBOL=none). Why is this?
Additionally, if the ODS GRAPHICS option is specified (i.e. "ods graphics on;"), the plot of censored observations cannot be suppressed by using NOCENSPLOT option or CENSOREDSYMBOL option.
How can I get the K-M curve without the plot of censored observations when the ODS GRAPHICS option is specified?
I'd appreciate it if someone would tell me how to do it.
Thanks in advance.
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
;
run;
proc lifetest data=BMT plots=survival(atrisk=0 to 2500 by 500) NOCENSPLOT;
time T * Status(0);
strata Group;
run;
proc lifetest data=BMT plots=survival(atrisk=0 to 2500 by 500) CENSOREDSYMBOL=NONE;
time T * Status(0);
strata Group;
run;
ods graphics on;
proc lifetest data=BMT plots=survival(atrisk=0 to 2500 by 500) CENSOREDSYMBOL=NONE;
time T * Status(0);
strata Group;
run;
ods graphics off;
As per the docs for ods graphics option you're looking for the nocensor option. The options vary by the output type, ie ods graphics and traditional graphics. the nocensplot is for lineprinter not ODS.
read the very fine buried print
Try the following, works on my comp. SAS 9.2.3
ods graphics on;
proc lifetest data=BMT plots=survival(atrisk=0 to 2500 by 500 NOCensor) ;
time T * Status(0);
strata Group;
run;
ods graphics off;
@Reeza: I tried the code you provided, it works.
But the question is, how if we are not removing those censored symbol '+', but changing them to 'Dot's?
I don't see any option for changing cencored symbols.
Any help?
If you're using the default SAS graphics you can change the censored symbol (check the docs for this option).
If you're using ODS graphics then you need to modify the templates. Fortunately its a fairly easy change.
Get your template using the following code:
proc template;
source Stat.Lifetest.Graphics.Productlimitsurvival;
run;
It appeaers in your log. Copy the template and put proc template at the start and a run at the end.
proc template;
copied code goes here;
run;
Then find and change the following part:
if (PLOTCENSORED=1)
scatterplot y=CENSORED x=TIME / markerattrs=(symbol=plus size=8px) name="Censored" legendlabel="Censored";
It'll be in the code twice so make sure you change both locations. You're looking to change the symbol=plus to whatever you need it to be. You might need to play with it, but if you make a mistake, just delete it (see below) and start over.
When you're done, delete your template from the 'library' by using the following:
proc template;
delete Stat.Lifetest.Graphics.Productlimitsurvival;
run;
Can also see SAS modifieable template here:
Dear Reeza,
Thank you for your helpful advice!
I really appreciate it.
Yasu
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.