本文内容整理自医咖会《R语言生存分析:方法,实操与临床解读》专栏,小咖对部分内容进行了整理,可点击左下角“阅读原文”查看完整视频。

什么是生存分析?

生存分析(survival analysis)研究事件发生的时间及其发生概率。

生存分析可以处理删失数据,常见的是删失数据(right censoring)。右删失数据指由于观察时间结束或其他原因,仅知事件在某时间点尚未发生,而无法获知具体发生时间的数据。比如有些病人在研究结束时(第3年)还活着,生存时间就是“至少3年"。

这时候就不能使用线性回归,因为线性回归要求因变量为确定观测值,直接使用右删失数据会导致生存时间低估和结果偏差;也不能使用Logistic回归,因为Logistic回归只关注事件是否发生,并不关注事件什么时间发生,无法捕捉事件的动态变化,丢失时间相关信息。生存分析就可以很好的处理这种数据。

生存分析又被称为可靠性分析、持续时间分析、事件历史分析、时间-事件分析,除了评估治疗方案效果中的死亡事件,还可以用于其他场景,比如再就业时间等。

生存分析能同时考虑事件发生时间和处理删失数据,精确反映事件的动态过程,临床上可以比较不同治疗组事件发生的时间长短、估计中位生存时间、分析某因素对事件发生时间的加速或延迟效应。

生存分析的核心概念

生存分析常用的术语:

生存时间(survival time:从一个明确起点到特定事件发生的时间长度。事件可以是死亡、故障、复发等任何感兴趣的结果。如癌症患者从确诊开始到死亡的天数。

删失数据(censoring data:由于观察限制,我们无法知道事件确切发生时间的样本。即只知道事件“至少”发生了多久。

生存函数(survival function,S(t):表示在时间t后事件仍未发生的概率。

打开网易新闻 查看精彩图片

累积分布函数(cumulative distribution function,F(t):生存时间小于等于t的概率,也就是时间t之前事件已经发生的概率。累积分布函数与生存函数互补,所以F(t)=1- S(t)。

风险函数(hazard function,h(t):在时间t没有发生事件的条件下,下一瞬发生事件的条件概率速率。

打开网易新闻 查看精彩图片

至于这些函数之间的关系,比如生存函数和风险函数的关系,需要进行一些微积分的计算,软件可以直接计算,理解即可。

打开网易新闻 查看精彩图片

生存分析方法概览

生存分析方法主要可以分为四类:

l非参数模型:Kaplan-Meier, Nelson-Aalen, Life Table;

打开网易新闻 查看精彩图片

l半参数模型:Cox proportional hazards model;

打开网易新闻 查看精彩图片

l参数模型:加速失效时间模型;

打开网易新闻 查看精彩图片

l机器学习模型:RSF。

不同的生存分析方法有相应的典型模型和适用场景:

打开网易新闻 查看精彩图片

为什么选择R实现生存分析?

l R可以支持多样化模型,与学术前沿同步。

打开网易新闻 查看精彩图片

l 另外R具有功能强大的包,支持与Python、SAS、Stata等软件的数据格式兼容,可读写CSV、Excel、SPSS、SQL等多种格式文件。

打开网易新闻 查看精彩图片

l R的图形满足学术出版标准,可直接用于SCI期刊投稿。

打开网易新闻 查看精彩图片

l R的代码可重复的。

打开网易新闻 查看精彩图片