各位小伙伴大家好啊~我是奕嶙,过年在家实在是懒的动啊,在推出第一篇关于sas的推送一个月之后,今天终于把第二篇憋出来啦,今天给大家介绍如何用sas软件进行生存分析,之后会陆续把sas的其他用法补上哦~
我之前的文章包括如下:
1. 如何使用SAS软件实现logistic回归分析
2. 如何使用SPSS实现logistic回归分析
3. 如何利用SPSS实现多元线性回归(哑变量设置与分析)
更多数据分析知识,请关注纯学术的公,众号:全哥的学习生涯
1.相关概念:
生存分析是将事件发生的结果和出现这一结果所经历的时间结合起来进行分析的一种统计分析方法,不仅考虑事件是否出现,而且也考虑事件出现的时间长短。
失效事件:失效事件是反映治疗效果特征的事件,又称为死亡事件、终点事件,比如患者因某病死亡、患者某病复发等。
起始事件:起始事件是反映生存时间起始特征的事件,比如疾病确诊、某种治疗开始、接触毒物等。
生存时间:生存时间是任何两个有联系的事件之间的事件间隔,常用符号t来表示。
完全数据:在临床上对病人进行随访时,一部分研究对象可以观察到死亡,从而得到准确的生存时间,其所提供的信息是完全的,称为完全数据。
截尾数据:有一部分病人,由于中途失访、死于其他原因或观察结束时仍然存活,对这部分病人无法知道准确的生存时间,只知道其生存时间比观察到的时间要长,它提供不完全的信息,称为不完全数据,也叫截尾数据。
生存分析的基本方法:主要有生存率的估计、生存率的比较和Cox回归分析。
2.代码实现:
2.1数据的准备:
data a ;
input t gender age group status@@;
#这里有五个变量,分别为生存时间、性别、年龄、分组、结局(0代表完全数据,1代表截尾数据)。如果数据是以频数的形式出现,可以再多加一个频数变量,在进行生存分析时用freq语句指定频数变量。
cards;
10 0 27 1 1
1 0 47 1 0
5 1 40 1 1
34 1 37 0 1
…
;
run;
2.2. 生存率的估计及比较:
proc lifetest data=a plots=survival(cb);
#proc lifetest语句执行生存分析过程,该语句比较重要的选项如下:
选项功能
Method= 指定生存函数的估计方法,method=pl表示使用Kaplan-Meier法,此选项为默认选项;method=lt表示使用寿命表法。
Plots= 绘制生存曲线图。常用选项为plots=survival,表示绘制生存曲线图,如果需要估计生存曲线可信区间可以加上(cb)。
strata group;
#指定用于进行生存率比较的变量,该语句用于对组别做单因素分析,比较不同组别的生存率。若比较不同性别的生存率把“group”替换为“gender”即可。若只估计生存率而不进行比较可以不要该语句。
time t*status(1);
#估计生存率,括号内的值代表截尾数据
run;
2.3 Cox回归分析:
proc phreg data=a;
strata gender;
#指定分层变量。
model t*status(1)=age group;
#定义模型。如果想要分析两个变量间的交互作用,需要把两个变量的交互项生成一个新变量,再把这个新变量放入model语句中,创建新变量的语句可以放在input语句后,也可以放在model语句后,如果交互项中包含时间变量,则必须要放在model语句后。
#model语句常用的选项如下:
选项功能
Selection= 指定变量筛选的方法,常用的有backward,forward,stepwise,score
Slentry= 指定变量选入标准
Slstay= 指定变量剔除标准
rl 输出风险比HR及其可信区间
run;
2.4 结果如下:
生存率的比较:
Cox回归:
进行cox回归需要满足等比例风险假设,对于比例风险的判定可以在过程步中使用assess语句的PH选项,例如:assess var=(group) ph;也可以在模型中加入研究因素与时间的交互项来判定。如果不满足等比例风险假设,可以将不成比例关系的协变量作为分层变量,再进行cox回归分析,此种方法的缺点是不能分析该分层变量的效应;也可以在模型中加入时间与研究因素的交互项来进行分析。更多数据分析知识,请关注纯学术的公,众号:全哥的学习生涯