心有阳光 发表于 2019-10-22 14:39:53

SAS生存曲线的绘制


SAS生存曲线的绘制

生存分析
嗯,既然分析就需要有数据,下面数据是很久以前百度生存分析的时候,在网上找的用作测试的数据集。

上面数据group表示组别,t表示存活的时间(月),censor表示删失。

在proc lifetest过程中一般是可以直接输出生存分析的图,自带输出的图是有点难看的,而且不能很自由的控制...所以呀,往往我们不直接采用proc lifetest过程步输出图,而是自己来画图...下面来看看proc lifetest自带图的效果...
proc lifetest data=have method=kmplots=survival;
time t * censor(0);
strata group ;
run;

上面过程输出的图如下


虽然不可否认内容都在

但是也不得不承认还是比较丑的

为了画出看着顺眼的图,就得稍微变通一下

1.先采用ods output语句,将生存分析的数据集输出。
ods listing;
ods exclude all;
ods outputSurvivalplot=want ;
proc lifetest data=have method=kmplots=survival;
time t * censor(0);
strata group ;
run;
ods listing close;
ods listing;
ods exclude none;
ods output Survivalplot=want会生成一个数据集want。


2.将数据集中率转换成百分比,也就是乘以100,这样会好看一些。


3.在做完以上操作后就可以用procsgplot来画图了,当然也能通过gtl画,今天这里就仅使用procsgplot语句画图.
ods rtf file="C:\Users\Administrator.BF-20180423ODYZ\Desktop\日常练习\Macro_Test\test.rtf";
ods graphics / width=600px height=450px border=off;
proc sgplot data=want noborder ;
    styleattrs datacontrastcolors=( blue red) datalinepatterns=(solid shortdash) datasymbols=(circle triangle);
    step x=time y=Survival / group=stratum name='L1' ;
    scatter x=time y=censored/ group=stratum    name='L2' ;
    keylegend 'L1' / location=outsideborderACROSS=2 ;
    keylegend 'L2' / location=inside position=topright   border   title="删失"ACROSS=2 ;
    xaxis label="生存时间(月)"values=(0 20 40 6080 100 120) ;
    yaxis label="生存率(%)";
run;
run;
ods rtf close;

输出结果如下

显然是比系统自带输出的要好看很多。
页: [1]
查看完整版本: SAS生存曲线的绘制