探究变量之间的关系是数据挖掘中的一个基本分析内容,对于常规的离散型或者连续型变量,有很多的方法可以用于挖掘其中的关系,比如线性回归,逻辑回归等等。然而有一类数据非常的特殊,用回归分析等常用手段出处理这类数据并不合适,这类数据就是生存数据。
常规数据在表示时,只需要一个值,比如患者的血压,性别等数据,不是连续型就是离散型;生存数据则有两个值,第一个是生存时间,可以看做是一个连续型的变量,第二个是生存事件,可以看做是离散型的变量。
比如分析治疗后的患者生存情况,在观测期间,可以看到不同患者的存活时间,这个值就是生存时间,而有些患者可能在观察期内出现死亡,复发等情况,死亡或者复发则称之为事件。
生存分析是既考虑结果又考虑生存时间的一种统计方法,并可充分利用截尾数据所提供的不完全信息,对生存时间的分布特征进行描述,对影响生存时间的主要因素进行分析。
生存资料分析
生存分析就是针对生存资料的分析。所谓生存资料就是描述寿命或者一个发生时间的数据。更详细的说一个人的生存时间的长短与许多因素有联系的,研究因素与生存时间的联系有无及程度大小,就是生存分析。
生存资料不同于其它分析资料,有一个特殊的地方就是缺失值的处理,对于常规数据,缺失值很多时可以直接丢掉,只有少量缺失值时可以用算法进行填补,而生存数据中的缺失值则不同。
在观测期间,患者可能出现了其他的事件导致后续得不到对应的生存数据,比如患者出现意外事故身亡了,后续的生存数据就会缺失,很显然生存数据是不能用算法填补的,一定要是实际观测的结果。
但是这个数据也不能直接丢掉,因为从观测开始到患者意外身亡的这段时间内的生存数据是有意义的,在进行生存分析时,这部分数据也可以利用起来。
应用场景
生存可以指人或动物的存活(相对于死亡),可以是患者的病情正处于缓解状态(相对于再次复发或恶化),还可以是某个系统或产品正常工作(相对于失效或故障),甚至可是是客户的流失与否等。
在生存分析中,研究的主要对象是寿命超过某一时间的概率。还可以描述其他一些事情发生的概率,例如产品的失效、出狱犯人第一次犯罪、失业人员第一次找到工作等等。
在某些领域的分析中,常常用追踪的方式来研究事物的发展规律,比如研究某种药物的疗效,手术后的存活时间,某件机器的使用寿命等。
在医学研究中,常常用追踪的方式来研究事物发展的规律。如,了解某药物的疗效,了解手术的存活时间,了解某医疗仪器设备使用寿命等等。
生存分析主要内容
生存分析的主要内容包括:
l描述生存过程,即研究生存时间的分布规律
l比较生存过程,即研究两组或多组生存时间的分布规律,并进行比较
l分析危险因素,即研究危险因素对生存过程的影响
l建立数学模型,即将生存时间与相关危险因素的依存关系用一个数学式子表示出来。
生存分析主要方法
生存分析方法可以分为描述法、参数法、半参数法和非参数法。
1.描述法
根据样本观测值提供的信息,直接用公式计算出每一个时间点或每一个时间区间上的生存函数、死亡函数、风险函数等,并采用列表或绘图的形式显示生存时间的分布规律。
优点:方法简单且对数据分布无要求
缺点:不能比较两组或多组生存时间分布函数的区别,不能分析危险因素,不能建立生存时间与危险因素之间的关系模型。
2.非参数法
估计生存函数时对生存时间的分布没有要求,并且检验危险因素对生存时间的影响时采用的是非参数检验方法。
常用方法:乘积极限法、寿命表法
优点:可以估计生存函数,可以比较两组或多组生存分布函数。可以分析危险因素对生存时间的影响,对生存时间的分布没有要求。
缺点:不能建立生存时间与危险因素之间的关系模型。
3.参数法
根据样本观测值来估计假定的分布模型中的参数,获得生存时间的概率分布模型。
生存时间经常服从的分布有:指数分布、Weibull分布、对数正态分布、对数Logistic分布、Gamma分布。
优点:可以估计生存函数,可以比较两组或多组生存分布函数。可以分析危险因素对生存时间的影响,可以建立生存时间与危险因素之间的关系模型。
缺点:需要事先知道生存时间的分布
4.半参数法
不需要对生存时间的分布做出假定,但是却可以通过一个模型来分析生存时间的分布规律,以及危险因素对生存时间的影响,最著名的就是COX回归。
优点:可以估计生存函数,可以比较两组或多组生存分布函数。可以分析危险因素对生存时间的影响,可以建立生存时间与危险因素之间的关系模型,不需要事先知道生存时间的分布。
生存分析案例
研究性别对于肺病生存率有无区别,收集数据下列信息
time:生存时间(单位天)
status:0=存活,1=死亡
sex:1=男,2=女
▋ 操作步骤
1)按步骤将数据导入
2)选定寿命表分析方法
3)对各选项进行设置
其中注意状态设置:选取表示事件已发生的值
4)设置完所有选项后确认,得到结果
存活表:该表给出了男女对应时间内存活和死亡人数,并计算了存活率、风险比等统计量
中位数生存时间:即生存率为50%时,生存时间的平均水平;
由此可知:生存时间的平均水平女士高于男士
生存函数:男士较女士累计生存率下降快
生存分析主要是使用一系列统计方法调查事件发生时间的研究。
## 生存分析应用于各种领域,如:
## 在癌症研究中,典型的研究问题是:
## 生存分析主要方法
## 基本的概念
## 疾病中不同类型事件
需要关注的点在于,1)死亡的时间;2)无复发生存时间,对应于对治疗到疾病复发之间的时间。
截尾
生存分析研究的是事件发生(复发或死亡)之前的预期时间。然而,在研究中,由于各种原因无法收集到事件发生的完整信息,从而产生截尾数据。
## 截尾事件也分为了不同的情况:
## 生存函数和风险函数
Kaplan-Meier方法是一种用于从收集的生存时间估计生存概率的非参数方法 (Kaplan and Meier, 1958)。
时间 的生存概率 的计算公式如下:
估计的概率(S(t))是一个阶跃函数,它只在每个事件的发生的时刻才会改变。生存概率的置信区间也是可以计算的。
KM生存曲线(KM生存概率随时间变化的曲线)提供了有用的数据总结,可用于估计中位生存时间等指标。
KM生存曲线(KM生存概率随时间变化的曲线)提供了有用的数据总结,可用于估计中位生存时间等。
## R 包准备
常用的两个R包
## 安装R包
## 示例数据集
survival 包内置的 lung数据
## 计算生存曲线:survfit()
可以使用 survival 包中的 survfit () 计算kaplan-Meier生存估计, survfit () 需要的参数:
## 使用summary()对模型进行统计,查看详细信息
## survfit()返回结果的解读
## 数据整理
或者使用 survminer 包中的surv_summary()函数汇总数据生成一个数据框
获取生存曲线的信息,包括具有置信区间的生存中值,以及每个曲线中的受试者总数和事件数。
## 可视化生存曲线
更多参数设置自定义生存曲线图
## Kaplan-Meier图的解读
横轴(x轴)表示以天为单位的时间,纵轴(y轴)表示生存的概率或生存人口的比例。途中曲线代表两组病人的生存曲线。曲线的垂直下降表示事件。曲线上的垂直刻度表示这个病人在这个时候被审查了。
每个组的中位生存时间
age=1(男性组)的中位生存时间为270天,而age=2(女性组)的中位生存时间为426天。与男性相比,女性肺癌患者的生存率似乎有优势。然而,为了评估这种差异是否具有统计学意义,需要进行正式的统计检验,还需要进一步进行分析。
## 生存曲线可以设置显示范围:
## 事件累计发生曲线图:
累积危险是估计危险概率的常用方法,被定义为H(t)=−log(survival function)=−log(S(t))。累积危害(H(t))可以解释为死亡率的累积度。换句话说,如果事件是一个可重复的过程,它对应于每个个体在时间t时之前事件发生的数量。
## 累计风险概率(cumulative hazard)图
## 比较生存曲线的Log-Rank检验:survdiff()
对数秩检验(log-rank test)是比较两个或多个生存曲线的最广泛使用的方法。零假设是两组生存曲线之间的存活率没有差异。对数秩检验是一种非参数检验,它对生存分布没有任何假设。从本质上说,对数秩检验将观察到的每组事件的数量与零假设成立(即生存曲线是一致的)所期望的数量进行比较。对数秩检验统计量分布与卡方检验统近似。
survival包的 survdiff ()函数可以对两组生存曲线进行对数秩检验。
## 拟合复杂生存曲线
### 使用多个因素的组合来计算生存曲线。
生存分析主要是使用一系列统计方法调查事件发生时间的研究。
生存数据一般用两个相关函数来描述和建模:
系列文章
首先你需要了解一下生存分析的基本知识,我认为做K-M分析主要分为两步:
1、数据整理
2、统计分析
第一步:数据整理
建议在excel下整理数据,数据集主要包括生存时间(time)、结局(censor)、分析变量。
其中生存时间的单位要统一:均为月或日(根据实际情况制定);
结局事件主要是指:非删失与删失。为(1、0)两分类数据
分析变量:分析的变量(分类变量)
第二步:统计分析
a、导入数据
b、“分析”---“生存函数”---“kaplan-meier”
时间(T)处选择生存时间变量
状态(U)处选择结局变量
因子(F)出选择分析变量需要注意:状态(U)处的定义事件:如果你之前将非删失定为0;删失定为1。那门你这里“说明已发生事件的值”要选择0。
c、点击确定。
下面用一个例子来说明SPSS操作方法。
操作步骤:
1点击进入Cox主对话框,如下,将time选入“时间”框,将代表删失的censor变量选入“状态”框,其余分析变量选入“协变量”框。“方法”下拉菜单是指变量筛选的方法,可以选择“前向”、“后项”、“进入”等,这里选择“进入”为例,即所有变量同时进入。
2点击“状态”框下方的“定义事件”,将事件发生的标志设为值0,即0代表事件发生。
3在主对话框中点击“分类”按钮,进入如下的对话框,将所有分类变量选入右边框中。
4在主对话框中点击“绘图”按钮,进入如下的对话框,选择绘图的类型,这里只选择“生存函数”。由于我们关心的主要变量是trt(是否放疗),所以将trt选入“单线”框中,绘制生存曲线。
5在主对话框中点击“选项”按钮,进入如下的对话框,设置如下,输出RR的95%置信区间。回到主界面,点击“确定”输出结果。
生存分析,是一种将生存时间和生存结果综合起来对数据进行分析的一种统计分析方法。主要用于对涉及一定时间发生和持续长度的时间数据的分析。 下面我们主要从下面四个方面来解说:
[if !supportLineBreakNewLine]
[endif]
实际应用
理论思想
建立模型
[if !supportLineBreakNewLine]
[endif]
分析结果
[if !supportLineBreakNewLine]
[endif]
一、实际应用
生存分析最早可追溯至19世纪的死亡寿命表,但现代的生存分析则开始于20世纪30年代工业科学中的相关应用。第二次世界大战极大地提高了人们对武器装备可靠性的研究兴趣,这一研究兴趣延续到战后对武器装备及商品的可靠性研究。此时生存分析的大多数研究工作都集中在参数模型,直至20世纪60~70年代,随着医学研究中大量临床试验的出现,对于生存分析的研究开始转向非参数统计方法。现在,生存分析方法在各个领域得到了广泛的应用,而这一方法本身也得到了飞速发展。生存分析广泛应用于生物医学、工业、社会科学、商业等领域,如肿瘤患者经过治疗后生存的时间、电子设备的寿命、罪犯假释的时间、婚姻的持续时间、保险人的索赔等。这类问题的 数据特点是在研究期结束时,所要研究的事件还没有发生,或过早终止,使得要收集的数据发生缺失,这样的数据即称为生存数据。 生存分析就是要处理、分析生存数据。
[if !supportLineBreakNewLine]
[endif]
二、理论思想
我们前面所学习的方法,只关注研究结果与影响因素,并没有关注结局发生的时间,而时间是一个绕不开的因素,当我们将 研究结局与结局发生的时间同时进行考虑时 ,就采用生存分析方法。
生存分析的一些基本概念:
[if !supportLineBreakNewLine]
[endif]
生存时间: 指从某个起始事件开始,到出现我们想要得到的终点事件发生所经历的时间,也称为失效时间。生存时间具有的特点:分布类型不确定,一般表现为正偏态分布;数据中常含有删失数据。SPSS中通常把完全数据的示性函数取值为0。 完全数据: 指从事件开始到事件结束,观察对象一直都处在观察范围内,我们得到了事件从开始到结束的准确时间。 删失数据: 指在研究分析过程中由于某些原因,未能得到所研究个体的准确时间,这个数据就是删失数据,又称为不完全数据。产生删失数据的原因有很多:在随访研究中大多是由于失访所造成的;在动物实验研究中大多由于观察时间已到,不能继续下去所造成的。SPSS中通常把删失数据的示性函数取值为1。 截尾数据: 截尾数据和删失数据一样,提供的也是不完整信息,但与删失数据稍有不同的是它提供的是与时间有关的条件信息。SPSS软件只考虑对完全数据和删失数据的分析,对截尾数据不提供专门的分析方法。 生存概率: 表示某单位时段开始时,存活的个体到该时段结束时仍存活的可能性。计算公式为:生存概率=活满某时段的人数/该时段期初观察人数=1-死亡概率。 生存函数: 指生存函数指个体生存时间T大于等于t的概率,又称为累积生存概率,或生存曲线。S(t)=P(Tt)=生存时间大于等于t的病人数/随访开始的病人总数。S(t)为单调不增函数,S(0)为1,S(∞)为0。 半数生存时间: 指50%的个体存活且有50%的个体死亡的时间,又称为中位生存时间。因为生存时间的分布常为偏态分布,故应用半数生存时间较平均生存时间更加严谨。 风险函数: 指在生存过程中,t时刻存活的个体在t时刻的瞬时死亡率,又称为危险率函数、瞬时死亡率、死亡率等。一般用h(t)表示。h(t)=死于区间(t,t+∆t)的病人数/在t时刻尚存的病人数×∆t。
[if !supportLineBreakNewLine]
[endif]
按照使用参数与否,生存分析的方法可以分为以下3种。
参数方法, 数据必须满足相应的分布。常用的参数模型有:指数分布模型、Weibull分布模型、对数正态分布模型、对数Logistic分布模型、Gamma分布模型。
半参数方法, 是目前比较流行的生存分析方法,相比而言,半参数方法比参数方法灵活,比非参数方法更易于解释分析结果。常用的半参数模型主要为Cox模型。
非参数方法, 当被研究事件没有很好的参数模型可以拟合时,通常可以采用非参数方法进行生存分析。常用的非参数模型包括生命表分析和Kalpan-Meier方法。
目前生存分析最常用的方法即寿命表法、Kaplan-Meier法和COX回归法。
[if !supportLineBreakNewLine]
[endif]
三、建立模型
[if !supportLineBreakNewLine]
[endif]
寿命表分析的思路:
生命表反映的是一代人在整个生命历程中的死亡过程,即在某个特定的年龄段内有多少人死亡,通过计算可以得知人群在该时点的死亡概率为多少、预期寿命为多少等。
生命表的基本思想是将整个观测时间划分为很多小的时间段,对于每个时间段,计算所有活到某时间段起点的病例在该时间段内死亡(出现结局)的概率。
因此,当资料是按照固定的时间间隔收集(如一个月随访一次)时,随访结果只有该年或该月期间的若干观察人数、发生失效事件人数(出现预期观察结果的人数)和截尾人数(删失人数),每位患者的确切生存时间无法知道,就需要构造生命表进行分析。
生命表用于大样本,并且对生存时间的分布不限,是目前广泛应用的一种非参数分析方法。。
[if !supportLineBreakNewLine]
[endif]
寿命表分析案例:
[if !supportLineBreakNewLine]
[endif]
题目:下表数据文件记录了某保险公司各部门员工的在职情况,统计的部门有承保部、理赔部、人事部和理财部4个部门,其中“部门”变量中用数字1~4分别表示承保部、理赔部、人事部和理财部,“是否在职”变量中用1表示在职,0表示不在职,接下来本书将利用寿命表过程得出各个部门员工的“生存”(在职)情况。
一、数据输入
二、操作步骤 1、进入SPSS,打开相关数据文件,选择“分析”|“生存分析”|“寿命表”命令2、从源变量列表框中选择“工作时间”变量,“时间”列表框中,然后设置时间区间的“0到(H)”值为60,“按(Y)”为3。
3、从源变量列表框中选择“是否在职”变量,选入“状态”列表框中,然后单击“定义事件”按钮,弹出“寿命表:为状态变量定义事件”对话框。由于数据文件中用1表示事件发生,所以选中“单值”单选按钮,并在其后面的文本框中输入1,将取值为0的观测作为截断观测,单击“继续”按钮。
4、从源变量列表框中选择“部门”变量,选入“因子”列表框中,然后单击“定义范围”按钮,弹出“寿命表:定义因子范围”对话框,在“最小值”文本框中输入1,在“最大值”文本框中输入4,单击“继续”按钮。
5、单击“选项”按钮,弹出“寿命表:选项”对话框,选中“寿命表”和“生存分析”复选框,“比较第一个因子的级别”选项组采用默认设置。
6、其余设置采用系统默认值即可。单击“确定”按钮,等待输出结果。
[if !supportLineBreakNewLine]
[endif]
四、结果分析
1、寿命表给出了员工在职年限寿命表输出结果(部分截选图)。该寿命表给出了4个部门对应时间内的在职和不在职员工数,并计算出员工在职比率等统计量。
2、生存分析时间中位数下表给出了4个部门员工的生存时间中位数,即生存率等于50%时,生存时间的平均水平。很明显,由图可知,该保险公司4个部门的员工有50%的员工在职时间超过60个月。
3
、累计生存函数给出了4个部门员工是否在职累计生存函数图,它是对生命表的图形展示。由图可以清楚地看到,承保部和理财部两个部门员工累计生存率下降最快,理赔部员工累计生存率下降速度低于人事部员工。
参考案例数据:
【1】spss统计分析从入门到精通 杨维忠,陈盛可,刘荣 清华大学出版社
(获取更多知识,前往gz号程式解说)
原文来自