5 R做生存分析关于survdiff函数的问题

最近在用R里面的survival包做生存分析,遇到了一些不解。

我之前利用小工具在网上下了临床数据,组成三列,Days、Status(Alive/Dead)以及Group(1/2/3),我想画出不同Group的样本的KM曲线图以及计算Log-rank test的值。

我的代码:survfit(Surv(Days, Status=='Dead') ~Group),这样之后可以画出KM曲线图,如下图所示。

attachments-2018-03-8Rwl105r5a9fd6cf7411b.png

之后,我想算Log-rank test,网上说直接用survdiff就可以看,于是我写了如下代码survdiff(Surv(Days, Status=='Dead')~Group),得到了如下结果:

attachments-2018-03-mXe6Mvex5a9fd3f80c9e7.png

然后,我尝试将Status由Dead改为Alive,其余不变,得到了如下结果:

attachments-2018-03-Sc5eiwwy5a9fd463ab115.png我发现二者的Observed的值不同,前者是Dead的人数,后者是Alive的人数,所对应的p值也不同。

我继续做Cox,coxph(Surv(Days, Status=='Dead')~GROUP, data=mydata),得到下图的结果,其中也有一个Score(logrank) test值。

attachments-2018-03-NDp0Pzt25a9fd6549e74d.png

我想请问:

1、survdiff(Surv(Days, Status=='Dead')~Group)和survdiff(Surv(Days, Status=='Alive')~Group)的具体含义是什么的?如果是 Status=='Dead',得到的是KM曲线中三条曲线的差异程度吗(因为之前画KM的时候用的是Status=='Dead')?通过p<0.05来看是不是有显著差异?

2、Cox得到的Score(logrank) test的p值(p=0.7241)和之前survdiff算出来的0.226差异还是挺大的,用哪一个值更能说明KM曲线中不同曲线的差异?

谢谢老师!

请先 登录 后评论

2 个回答

王晓明 - 武大硕士

surv函数主要是拿来创建一个生存对象。需要输入两个信息,一个是随访的时间(也就是你的代码里的‘Days’),另一个是生存状态,也就是这个人是活的还是死的,你的Status就是为了表示这个生存状态的。TRUE代表死亡,所以应该是Status=='Dead'。如果你写成Status=='Alive'就相当于你把这个样本的生存状态给颠倒了,是错的。不知道这么说你明白了么?

请先 登录 后评论
尚目目

做生存分析最起码 Survival 包的说明书还是要看一下的。time 表示生存时间,status 表示删失,一般就是死亡\复发等这些事件发生与否,所以应该是 Status == 'Dead' 。

请先 登录 后评论