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

关注
生存分析(一)生存分析方法,你听说过几种?www.shan-machinery.com

生存分析是一大类方法,往往需要一本厚厚的书才能介绍完。后面几篇文章打算专门介绍一下生存分析,这是第一篇。作为入门,先了解一下什么是生存数据,生存分析的方法有哪些,等等。

(1)生存数据

生存数据跟其他数据不一样。比如,你要比较两组人群的舒张压有没有差异,那么舒张压就是因变量,这是连续变量;你要比较两组人群的糖尿病发生率有没有差异,那么是否发生糖尿病就是因变量,这是分类变量。然而生存分析中的结局却不是单一的连续变量或分类变量,而是包含了2个变量,一个是分类变量(是否发生),另一个是连续变量(发生时间)。

不少临床大夫都问我:我这个数据能做生存分析吗?那就记住,你想做生存分析的话,需要有两个必须的变量,一个是你关心的结局是否发生(通常是二分类,发生或不发生),一个是结局发生的时间。如果没有结局发生的时间,那就只有一个分类变量作为结局(如发生或不发生),那这时就考虑用卡方检验或logistic回归就行了。

(2)生存分析的含义

生存分析,顾名思义,分析生存率、死亡率之类的。但这只是狭义的概念。事实上,并非所有领域都这么称呼,如社会学中经常会说事件史分析,在工业领域往往会说失效(failure)分析(所以你会发现很多软件中都是用failure和survival来标识死亡和生存)。其实都是一回事,只不过在医学中我们一般都叫做生存分析。

但是一定要注意,虽然名字叫生存分析,但并不是说只能分析生存、死亡的数据。所谓生存和死亡,是一个泛指。任何我们感兴趣的事件,只要有前面说的结局和结局发生时间,都可以用生存分析。下面是几个例子:

研究某病治疗后的复发情况,复发就是“死亡”,未复发就是“生存”。只要有复发的结局(是否复发)以及从治疗后到复发的时间,就可以用生存分析。

研究工作后升迁的因素有哪些,升迁就是“死亡”,未升迁就是“生存”。只要有升迁的结局(是否升迁)以及从开始工作到升迁的时间,就可以用生存分析。

研究戒烟后复吸的因素,复吸就是“死亡”,未复吸就是“生存”。只要有复吸的结局(是否复吸)以及从戒烟工作到复吸的时间,就可以用生存分析。

总的来说就是,只要你有一个感兴趣的结局(通常为发生和不发生),并能获得从某一时点到结局发生的时间长度,就可以用生存分析。

(3)为什么要用生存分析?

试想一个情形:如果你要比较两种药物治疗后的疾病复发情况,假设你观察了10年,所有患者都复发了,那这时候,其实你只需要比较复发时间就行了。这就相当于两组定量资料的比较。

再试想另一个情形:如果你要比较两种药物治疗后的死亡情况,假设你观察了3年,计算两组人群的3年死亡率,这时候,你并没有观察到每个人的具体死亡时间,这就相当于两组率的比较。

上述两种方式其实都各有缺点,第一种情形过于理想,往往是很难实现的。尤其在你研究真正的死亡和生存的时候,不大可能观察一辈子,直至所有人死亡。甚至有可能观察人群还在,观察者先走了。

第二种情形其实损失了信息,比如A组3年死亡率是30%,B组是40%,看起来似乎A组更好,然而如果A组的死亡者大都是第一年死亡,而B组大都是第3年死亡,这时就很难说哪个好。因为毕竟B组的人多活了2年。这种情况下,跟你选择时间点就有很大关系。也许你分析1年死亡率,结果就发生逆转了。

比如图1,横坐标是月份,纵坐标是生存率。你可以发现,如果你观察1年死亡率,两组差别较大,可能会有统计学意义;而如果你观察2年死亡率,两组差别就小很多,可能就没有统计学意义。

图1 不同时点的生存率示意图

正因为如此,所以才用生存分析,把第二种情形的缺点弥补一下,不再考虑具体某一年的死亡率,而是观察整个研究期间的死亡率变化情况,这就可以观察到每一时期的死亡率。正如图1所示。

还有一个原因我们不得不用生存分析。那就是失访问题。

失访几乎是任何随访研究中必然发生的事情,所谓失访,顾名思义,失去了随访,也就再也联系不到这个人了,数据自然就缺失了。比如前面说的例子,观察3年死亡率,本来观察了100人,结果有10个人在第二年时候把你电话加入黑名单了,你再也联系不到了,那就是失访了。这种情况下,最后分析数据的时候,只能把这10个人删掉了(当然,也有一些缺失值处理方法,但很多时候可能也就是删掉了)。

但是在生存分析中,它的处理方式不一样,它不是简单把这些人删掉,而是利用了他们的信息。因为在生存分析看来,这些人在第二年失访了,起码提供了这样的信息:这些人在第二年仍然活着。尽管信息不全,当仍是一部分信息。生存分析的方法就会利用第二年仍然存活的这种信息,计算一定的结果。相对而言,提供了更多的参考价值。

(4)生存分析中的删失

提到失访,那就不得不提一下删失(censor)这个词,不同领域翻译不同,有的翻译为截尾。失访,可以看做是删失的一部分。所谓删失,总的来说就是没有观察到结局,不管是因为什么原因。

观察不到结局,至少有以下几个原因:

第一,失访。失去联系了,当然也就不可能观察到结局。

第二,意外死亡。本来你想观察肺癌的复发情况,观察时间是3年,结果患者突然在第二年因中风而死亡,那你就观察不到是否肺癌复发。

第三,观察对象一直到研究结束仍没有发生结局。比如观察戒烟者重新吸烟,观察1年,有的人一直到观察结束,仍没有吸烟。

以上是常见的三种情形。他们都没有观察到结局,都称为删失。

生存分析中,结局其实只分了两大类:结局发生和删失。以前有不少人找我分析数据,把结局分了好几类,结局发生=1,没有发生=0,失访=2,……。其实没有必要,直接分为两大类:结局发生=1,删失=0。足矣。

(5)生存分析的常用方法

由于生存数据是不同的数据,因此它们的方法也有各种。生存分析不是一种具体方法,而是特指的用于生存数据的很多种方法。作为类比,你可以看一下图2:

图2  不同资料类型的常用方法(部分方法)

图2只是为了做一个类比,并不是说生存分析就这两种方法,同样,关于定量资料和分类资料也不止这些方法。只是作为类比,大家可以有一个结构,把生存数据看做另一类数据(虽然它算不上另一类数据,只是有两个结局变量而已),对于不同的数据,就有不同的系列方法等着它。

生存分析的方法非常多,需要结合研究目的、数据类型等选择不同给的方法。

第一,从研究目的来说,不同目的可采用不同方法。图2给出两种方法是根据目的而定,简单的组间比较常用Kaplan-Meier法,这个方法很多临床大夫都听说过;多因素分析常用COX回归,这也是临床大夫都听过的方法。

第二,发生事件的重复性来说,有的事件是可以重复发生的,比如疾病复发、吸烟的复吸、出狱后在入狱,等等;有的则是无重复的,如死亡。无重复结局的较为简单,普通的Cox回归等差不多可以胜任,而重复结局有专门的重复事件的生存分析方法。

第三,结局是单一的还是多类的。大多数时候,我们只关注一个结局,如疾病复发、死亡等,这种情况下常规的生存分析方法即可;但有些特殊情况下,我们可能同时关注多个结局,如服药后的主要不良反应,可能同时关心3种主要不良反应(是否发生以及发生时间),这时候需要用特殊的方法,常见的如竞争风险模型。

第四,生存时间的分布,很多临床大夫最喜欢用Cox回归,为什么?因为简单,无需考虑分布(这种不用考虑分布的方法通常称为非参数法)。然而,Cox回归并不是在任何时候都能得到最优结果,很多时候,如果生存时间满足一定的分布,此时如果能获得确切的分布,用参数法可能效果更好。常见的参数法如Weibull回归、对数logistic回归等等。

第五,异质性问题。异质性这个词听起来太专业化,简单来说就是不一样。多数统计分析方法大都是建立在群体基础上,比如以均值代表两组人的水平来比较,这在每个人的数值差不多的时候是有效,但如果人和人差别太大,就未必有效了(这就是为什么我们做t检验时还得考虑方差齐性的原因)。同样,生存分析也是如此,如果每个人的死亡风险各不相同,比如有的风险变化快一些,有的慢一些,那常规的方法(如Cox回归)就难以胜任,这就是异质性问题。这种时候,我们就需要考虑异质性的方法,常见的如frailty model,通常翻译为脆弱模型。

第六,基于离散时间和连续时间。这两个概念很好理解,然而在生存分析中往往不是这么好理解。连续时间,理论上就是说,你得时时刻刻连续观察这个人,看他到底什么时候发生事件结局。离散时间,则是说,你可能每隔1个月(也可能是2个月,1年,等等)看看他发生了结局没有,看看每个月(或每年等)发生了多少例,但不知道他具体哪天发生的。我们目前所用的生存分析方法,绝大多数都是基于连续时间,即假定都是观察到具体时间的。有的尽管听起来不像离散的(如每月观察一次),然后这还取决于我们如何定义时间点,比如你要做一个10年的随访研究,每月观察一次,已经算是一个小的时间点了。如果你做一个感冒治疗的随访,每天观察一次也未必算是一个时间点,也许每半天观察一次都没问题。但是如果你的数据很明显是一个离散时间,那其实现在你用的这些方法其实都未必合适,离散时间也有离散时间的方法,尽管实际中其实很少用。比如logistic回归,有时也会用于离散时间的分析方法。

https://www.shan-machinery.com