生存分析方法,你听说过几种?

生存数据

生存分析中的结局不是单一的连续变量或分类变量,而是包含了2个变量,一个是分类变量(是否发生),另一个是连续变量(发生时间)。
想做生存分析的话,需要有两个必须的变量,一个是关心的结局是否发生(通常是二分类,发生或不发生),一个是结局发生的时间。

生存分析的含义

狭义:分析生存率、死亡率之类。
广义:所谓生存和死亡,是一个泛指。任何我们感兴趣的事件,只要有前面说的结局和结局发生时间,都可以用生存分析。
举例:1.研究某病治疗后的复发情况,复发就是“死亡”,未复发就是“生存”。只要有复发的结局(是否复发)以及从治疗后到复发的时间。
2.研究工作后升迁的因素有哪些,升迁就是“死亡”,未升迁就是“生存”。只要有升迁的结局(是否升迁)以及从开始工作到升迁的时间。
3.研究戒烟后复吸的因素,复吸就是“死亡”,未复吸就是“生存”。只要有复吸的结局(是否复吸)以及从戒烟工作到复吸的时间。
简单来说,有一个感兴趣的结局(通常为发生和不发生),并能获得从某一时点到结局发生的时间长度,就可以用生存分析。

为什么要用生存分析?

原因一:假设不使用生存分析,可以分为两类情况:第一种情形是随访时间足够长,例如比较两种药物治疗后的疾病复发情况,假设都观察了10年,所有患者都复发了,那这时候,其实你只需要比较复发时间就行了。就不存在时间点的比较的问题,但是这种情况过于理想,往往是很难实现的。尤其在你研究真正的死亡和生存的时候,不大可能观察一辈子,直至所有人死亡。甚至有可能观察人群还在,观察者先走了。第二种情形就是比较两种药物治疗后的死亡情况,假设观察了3年,计算两组人群的3年死亡率,这时候简单进行分析就损失了信息,比如A组3年死亡率是30%,B组是40%,看起来似乎A组更好,然而如果A组的死亡者大都是第一年死亡,而B组大都是第3年死亡,这时就很难说哪个好。因为毕竟B组的人多活了2年。这种情况下,跟你选择时间点就有很大关系。也许你分析1年死亡率,结果就发生逆转了。使用生存分析就可以解决上述的两种情形出现的缺点的问题了。
原因二:失访问题。所谓失访,失去了随访,也就再也联系不到这个人了,数据自然就缺失了。比如前面说的例子,观察3年死亡率,本来观察了100人,结果有10个人在第二年时候把你电话加入黑名单了,你再也联系不到了,那就是失访了。这种情况下,最后分析数据的时候,只能把这10个人删掉了(当然,也有一些缺失值处理方法,但很多时候可能也就是删掉了)。但是在生存分析中,它的处理方式不一样,它不是简单把这些人删掉,而是利用了他们的信息。因为在生存分析看来,这些人在第二年失访了,起码提供了这样的信息:这些人在第二年仍然活着。尽管信息不全,当仍是一部分信息。生存分析的方法就会利用第二年仍然存活的这种信息,计算一定的结果。相对而言,提供了更多的参考价值。

生存分析中的删失

删失(censor)这个词,不同领域翻译不同,有的翻译为截尾。失访,可以看做是删失的一部分。所谓删失,总的来说就是没有观察到结局,不管是因为什么原因。
观察不到结局,至少有以下几个原因:
1.失访。失去联系了,当然也就不可能观察到结局。
2.意外死亡。本来你想观察肺癌的复发情况,观察时间是3年,结果患者突然在第二年因中风而死亡,那你就观察不到是否肺癌复发。
3.观察对象一直到研究结束仍没有发生结局。比如观察戒烟者重新吸烟,观察1年,有的人一直到观察结束,仍没有吸烟。
以上是常见的三种情形。他们都没有观察到结局,都称为删失。
生存分析中,结局其实只分了两大类:结局发生和删失。有不少人把结局分了好几类,结局发生=1,没有发生=0,失访=2,……。其实没有必要,直接分为两大类:结局发生=1,删失=0。

生存分析的常用方法

生存分析的方法非常多,需要结合研究目的、数据类型等选择不同给的方法。
1.从研究目的来说,不同目的可采用不同方法。简单的组间比较常用Kaplan-Meier法、多因素分析常用COX回归。
2.发生事件的重复性来说,有的事件是可以重复发生的,比如疾病复发、吸烟的复吸、出狱后在入狱,等等;有的则是无重复的,如死亡。无重复结局的较为简单,普通的Cox回归等差不多可以胜任,而重复结局有专门的重复事件的生存分析方法。
3.结局是单一的还是多类的。大多数时候,我们只关注一个结局,如疾病复发、死亡等,这种情况下常规的生存分析方法即可;但有些特殊情况下,我们可能同时关注多个结局,如服药后的主要不良反应,可能同时关心3种主要不良反应(是否发生以及发生时间),这时候需要用特殊的方法,常见的如竞争风险模型。
4.生存时间的分布,很多临床大夫最喜欢用Cox回归,为什么?因为简单,无需考虑分布(这种不用考虑分布的方法通常称为非参数法)。然而,Cox回归并不是在任何时候都能得到最优结果,很多时候,如果生存时间满足一定的分布,此时如果能获得确切的分布,用参数法可能效果更好。常见的参数法如Weibull回归、对数logistic回归等等。
5.异质性问题。异质性这个词听起来太专业化,简单来说就是不一样。多数统计分析方法大都是建立在群体基础上,比如以均值代表两组人的水平来比较,这在每个人的数值差不多的时候是有效,但如果人和人差别太大,就未必有效了(这就是为什么我们做t检验时还得考虑方差齐性的原因)。同样,生存分析也是如此,如果每个人的死亡风险各不相同,比如有的风险变化快一些,有的慢一些,那常规的方法(如Cox回归)就难以胜任,这就是异质性问题。这种时候,我们就需要考虑异质性的方法,常见的如frailty model,通常翻译为脆弱模型。
6.基于离散时间和连续时间。这两个概念很好理解,然而在生存分析中往往不是这么好理解。连续时间,理论上就是说,你得时时刻刻连续观察这个人,看他到底什么时候发生事件结局。离散时间,则是说,你可能每隔1个月(也可能是2个月,1年,等等)看看他发生了结局没有,看看每个月(或每年等)发生了多少例,但不知道他具体哪天发生的。我们目前所用的生存分析方法,绝大多数都是基于连续时间,即假定都是观察到具体时间的。有的尽管听起来不像离散的(如每月观察一次),然后这还取决于我们如何定义时间点,比如你要做一个10年的随访研究,每月观察一次,已经算是一个小的时间点了。如果你做一个感冒治疗的随访,每天观察一次也未必算是一个时间点,也许每半天观察一次都没问题。但是如果你的数据很明显是一个离散时间,那其实现在你用的这些方法其实都未必合适,离散时间也有离散时间的方法,尽管实际中其实很少用。比如logistic回归,有时也会用于离散时间的分析方法。

中位生存时间和中位随访时间

几乎所有的生存分析中,有两个结果几乎是必报道的,一个是生存曲线,一个是中位生存时间。本文直观地介绍一下生存曲线怎么来的,中位生存时间怎么算的。然后顺便说一下中位随访时间怎么算的。

生存曲线

生存曲线相当于把不同时间点计算的生存率用阶梯形状连接起来。所以生存曲线的纵坐标写的是survival probability。不过这里关键的一点也就是如何计算生存率。
理论上,如果没有失访,结局只有死亡和生存两类,这种情况下,计算生存率很简单,根据不同时间点的死亡人数计算即可。然而对于生存数据来说,困难的一点在于:有失访存在。而失访的人,你是没有办法判断他是死亡还是生存的。所以生存分析中就采用了一种叫做Kaplan-Meier的估计方法(也叫product-limit法)来估计生存率。它的思路其实很简单,就是:如果要计算第6个月的生存率,首先用于计算的这些人应该活过第5个月。这种计算也叫做条件概率,因为第6个月的计算,依赖于第5个月的条件。(其实统计分析中经常出现条件概率、条件参数之类的词,所谓条件,就是要依赖于一定的条件之上。就比如你要迈出第二步,必须先迈出第一步。所以很奇怪:阿基里斯为什么能追上乌龟呢?)
所以你会发现,在生存分析的计算中,往往survival和risk是并存的。因为生存分析中很重视risk。刚才我们提到,要计算第6个月的生存,必须活过第5个月,这些活过第5个月的人,就叫做at risk的人。只有这些人才有死亡风险,第3个月就死亡的人,不在第6个月的risk之中。Kaplan-Meier法估计的生存率是一个累积的生存率,或者说是一个条件的生存率,前面的条件再乘以当前的生存率。

中位生存时间

在生存曲线的基础上理解中位生存时间就比较容易了。从生存曲线来看,中位生存时间就是纵坐标=0.5(即生存率在50%的时候所对应的时间)。
中位生存时间不能简单地理解为“死亡人数到了一半”或“存活人数还剩一半”,正如前面说的,因为它有失访问题。严格来说就是累积生存率=0.5的时候所对应的时间t。

中位随访时间

不管是中位生存时间还是中位随访时间,其本质都是一样的,都是中位数。只不过指标不同,中位生存时间是生存时间的中位数,中位随访时间是随访时间的中位数。
很多人不明白的地方在于:随访时间的中位数怎么求?
其实仔细想想中位生存时间就不难明白,中位生存时间的计算,“死亡”作为结局,其它作为删失,没法获得结局。中位随访时间则恰恰相反,删失的那些是结局(因为就是随访到那个时间点了),“死亡”则是作为删失。为什么呢?因为死亡的人,你不知道(如果不死亡的话)能够随访到什么时候。
所以想明白了这一点,中位随访时间就知道如何计算了。就是把随访作为结局,把“死亡”作为删失,计算中位生存时间即可。

关于医生学统计,小琪这里就推荐一本书,一个公众号。书是冯国双老师的《白话统计》,公众号是医咖会,加油!

白话统计学习笔记-Survival Analysis - 图1

作者:解琪琪 参考学习资源:(三)log-rank检验在什么情况下失效?
(四)我们的生命,能否如指数分布般平稳?
(五)实用的(却又被忽略的)Weibull回归
(六)如何判断你的生存数据能否用cox回归——等比例风险假定判断
SPSS:Kaplan-Meier生存分析过程及结果解读
R语言-Survival analysis(生存分析)
生存分析,怎么呈现结果图表?
生存分析:寿命表,Kaplan-Meier,Cox回归,时依协变量