数据分析之生存分析

原文转自https://blog.csdn.net/jaen_tail/article/details/79081954
最近在读一篇医学信息处理相关的论文,由于在医学图像和医学信息相关的计算机处理方面还是个新手,遇到了一个生存分析预后的概念,提到KM生存曲线、COX回归模型这样的部分时读的一知半解,索性就上网学习了一下,留个记录吧。

什么是生存分析?

生存分析是对生存资料的分析。所谓生存资料是指描述寿命或者一个发生时间的数据。通俗来讲,“一个个体能活多久”这个问题扁鹊再世也无法回答,但通过对某一具有相同特质的群体进行数据分析,我们可以得到这类人活过一定时间的概率。这就叫做生存分析。一个人的生存时间长短与许多因素有关,研究各个因素与生存时间有无关系以及关联程度大小,这也是生存分析。推广来说,疾病的复发可以看做“健康期”的生存,机器的故障可以看做“机器”的生存,甚至下岗职工再就业可以看做“失业期”的生存,生存分析可以被推广至很多问题的分析中去。

一些相关的基本概念

起始事件:反应研究对象开始生存过程的起始特征事件。如研究某一治疗对病人生存的影响的起始时间是“开始接受该治疗”。

终点事件(死亡事件):出现研究者所关心的特定结局。如“病人因该疾病死亡”。

观察时间:从研究开始观察到研究观察结束的时间。由于研究时长无法无限延伸下去,所以研究一定会在某个特定时刻截止,而研究截止时,所有观察对象并不一定全都出现终点事件。换言之,有的研究对象在观察结束之前出现终点事件,有的直到观察结束时也没有出现终点事件,还有一些特例中途因为某些原因,如失访、意外死亡等,被迫提前结束了观察研究。

生存时间:观察到的存活时间,用符号t表示。

完全数据:从观察起点到死亡事件所经历的时间,生存时间是完整的。

截尾数据(删失值):观察时间不是由于终点事件而结束的,而是由于(1)失访(2)死于非研究因素(3)观察结束而对象仍存活以上三种原因结束的。常在截尾数据的右上角放一个“+”表示其实该对象可能活的更久。

变量:生存分析的变量有两个:生存时间t和结局变量(0-1)。其中结局变量1表示死亡事件,0表示截尾。

生存分析的主要方法

1、非参数法

这类方法的特点是,不管分布形式如何,只根据样本的顺序统计量对生存率进行估计。对于两个及多个生存率进行比较,其无效假设只是假定两组或多组生存时间分布相同,而不对其具体的分布形式和参数进行推断。log-rank乘法极限法和寿命表法都是非参数法。

2、参数法

特点是假定生存时间服从特定的参数分布,然后根据已知的分布特点对生存时间进行分析。如指数分布法、Weibull分布法、对数正态回归分布法和logistic回归法。

3、半参数法

Cox比例风险回归模型就是半参数法,具体介绍它时再说为什么叫半参数法。

生存分析研究的主要内容

1、描述生存过程

研究生存时间的分布特点,估计生存率(如1年生存率、5年生存率)及其标准误、绘制生存曲线。常用方法有乘积极限法(K-M法)和寿命表法。

2、比较生存过程

获得生存率及其标准误的估计值后,可以进行两组或多组生存曲线的比较,也就是得到了其生存过程的比较。常用方法有对数秩检验(log-rank检验)。举例说明这种对比的作用,比如针对某种疾病有两种治疗方式,对比这两种治疗下患者的生存曲线,就可以得出哪种治疗方式更有效。

3、影响生存时间的因素分析

含义顾名思义。常用的多因素生存分析方法:Cox比例风险回归模型。这里是我主要会用到的部分,可能后面会多啰嗦几句。

下面具体介绍以上三个研究部分

1、描述生存过程

对生存过程进行描述所用到的描述指标有生存率及其标准误,中位生存期,生存曲线。

生存率记为S(tk)是指观察对象活过tk时刻的概率,当没有截尾数据时,

(T为观察对象的存活时间)

当存在截尾数据时,分母必须分时段进行矫正,矫正公式为:矫正人口数=年初观察例数-1/2截尾例数,因为截尾数据出现有间隔,所以生存率计算公式一般来说不能直接使用,大多采用概率乘法原理估计生存率:先做独立假设,每段的生存率为P1、P2、…、Pk,则生存率估计公式为:

对生存过程的描述常用的两种方法是乘积极限法(K-M法)和寿命表法。两种方法使用的区别在于,当处理小样本时使用K-M法,当样本量大时,要按时间对样本进行分组,而这时就体现出了针对截尾数据进行分母矫正的重要作用(毕竟小样本时截尾数据也少,乘以1/2后多是以0.5的形式存在,差别不大)。其实上一段就是K-M法的计算公式,而寿命表法只是比它多了一个时间上的分组,计算方法也是一样的。下面举例说明:

有上面两个表格可以看出小样本数据是每个观察对象为一行,而本例中的大样本的寿命表法则是将数据按月进行了分组,每组一行。

生存率的标准误计算公式为

生存曲线:以生存时间为横轴、生存率为纵轴绘制一条生存曲线。

中位生存时间:又称为生存时间的中位数,表示刚好有50%的个体其存活期大于该时间。这里注意生存时间的平均水平不能用平均生存时间来表示,而应该用中位生存时间来表示。用一张图直观感受下中位生存时间:

2、比较生存过程

对数秩检验是以生存时间的对数为基础推导出来的,其基本思想是实际死亡数与期望死亡数间比较。公式为:

检验思想是:假设无效假设成立(两总体生存曲线位置相同),通过以上公式计算,若理论死亡数与实际死亡数差距过大,则假设不成立,两条生存曲线位置不同。用log-rank检验对样本的生存率进行比较时,要求各组生存曲线不能交叉。

3、影响生存时间的因素分析

Cox比例回归模型是一个能处理多因素生存数据的回归模型(啊废话那么多终于写到这了就是为了它才查的呀~)Cox回归不是用生存时间做因变量,而是用危险度做因变量。所以,

首先看风险函数公式

其中h(t)是具有协变量x的个体在时刻t的风险函数,t表示生存时间,x表示与生存时间可能有关的协变量或交互项。通俗来讲,h(t)是当p个x值固定时的风险函数,p个x都是可能会影响生存时间t的因素,影响程度由各自前面的系数决定。

而h0是基准风险函数,它是指所有风险因素为0时的基础风险率,与x无关,它是未知的,不过没关系,我们只需要假设它是与h(t)成比例存在的,然后放在那里就行。同时,这也解释了为什么Cox模型是半参数的,因为h0与参数x们无关。

有了上面这个公式,我们就可以来看Cox模型到底是干什么用的了,它有两个主要用途:(1)因素分析:分析哪些因素影响了生存期长短。(2)求各因素在排除其他因素的影响后,对于死亡的相对危险度。

先来看因素分析这个用途:

上式中,β1,β2,…,βp这组数是回归系数,而βi是因素Xi的偏回归系数,它表示在控制其他变量的条件下,该变量对回归方程的独立贡献,说白了就是系数越大,则对应因素对整体的影响就越大,这很好理解。我们通过对偏回归系数进行统计学检验,(统计学检验指假设检验:1、最大似然比检验:它主要用于模型中原有不显著变量的剔除和新变量引入,以及包含不同协变量数时模型间的比较。2、得分检验:用于新变量是否能选入模型。可检验一个新变量能否引入模型,也可以检验多个新变量能否引入模型。3、wald检验:它用于模型中协变量是否应从模型中剔除。)

对单个变量进行统计学检验,如果p<0.05则就说排除其他因素影响后,该因素与生存期长短有关系,通过这些统计学检验对变量进行了初步筛选,那么剩下的被选入模型的变量具体与生存期长短到底有什么关系呢?这要看β的具体值:β>0,该因变量是危险因素,数值越大生存时间越短;β<0,该变量是保护因素;β=0,该变量不影响生存时间。

说了半天,那么β是怎么求出的呢?

β是采用偏似然函数估计出来的,算法是这样的,首先假设数据集容量为n,具有K个不同的精确生存时间,把每个个体的生存时间ti从小到大排序,我们假设每个个体的生存时间ti都不同。定义R(ti)是在时间ti处于风险的个体集合,即是由生存时间大于等于ti的个体组成的。在时间Ti处第j个个体死亡的概率Li为

在所有k个生存时间点上都得到上述概率表示后,将条件概率相乘得到偏似然函数

这里面的幂指数在存在删失值时取0,没有删失值时取1。对分子贡献信息的是在时间ti死亡的个体。

把Lp看做一般的似然函数,通过求极大值点来求解β的极大似然估计。这个大家应该都会,无非是先取对数

再对β求偏导通过求p个即可求出β的极大似然估计,通常用软件进行牛顿迭代得到。

再来看相对危险度:

公式为:

举个例子:某疾病的发病,受吸烟X1与饮酒X2的影响,对有关资料作Cox回归分析后,得回归方程为X1与X2的回归系数为0.8755与0.5108,既吸烟又饮酒者危险度为不吸烟不饮酒者的危险度为

二者的比值为:又抽烟又喝酒则发病概率增至4倍。这就是相对危险度。

当协变量较多时,在配合模型以前需对这些协变量进行筛选。前面已经说过一些统计学检验方法,不过这一块现在有很多更好的方法,我还没看完,回头有时间总结,这个先到这里吧。

你可能感兴趣的:(数据分析之生存分析)