R语言-Cox Model Assumptions

栏目: R语言 · 发布时间: 5年前

内容简介:这篇笔记连标题都懒得想了(照搬教程标题。。。),继续接上篇先把我学习的教程放在最上面这篇主要是讲述如何验证Cox回归模型的有效性,主要从三个方面:

这篇笔记连标题都懒得想了(照搬教程标题。。。),继续接上篇 R语言-Cox比例风险模型 和上上篇 Survival analysis(生存分析)

先把我学习的教程放在最上面 Cox Model Assumptions

这篇主要是讲述如何验证Cox回归模型的有效性,主要从三个方面:

  • Testing the proportional hazards assumption(检验Cox比例风险模型的前提假设是否成立)
  • Examining influential observations (or outliers)(检查是是否有异常值)
  • Detecting nonlinearity in relationship between the log hazard and the covariates(检测风险与协变量之间的非线性关系)

Cox比例风险模型的前提是:在某因素下,个体的风险比例在不同时间点都是定值;只有满足这个前提,才能使用Cox回归模型;就像一些假设检验,需要数据总体满足正态分布才能使用一样;本文使用Schoenfeld残差来检验比例风险假设(还可以简单的通过生存曲线是否交叉来粗略判断下)

如果数据满足Cox回归模型,那么则Schoenfeld残差和生存时间的秩次之间无明显的相关性,也就是说Schoenfeld残差与生存时间无明显的一致变化趋势,这里通过survival包的 cox.zph() 函数即可判断

library("survival")
library("survminer")

res.cox <- coxph(Surv(time, status) ~ age + sex + wt.loss, data =  lung)
test.ph <- cox.zph(res.cox)
> test.ph
            rho chisq     p
age     -0.0483 0.378 0.538
sex      0.1265 2.349 0.125
wt.loss  0.0126 0.024 0.877
GLOBAL       NA 2.846 0.416

这里对年龄,性别以及体重减少这三个协变量做Cox回归,从test.ph结果中的三个协变量的P值可看出,检验均不显著,说明每个协变量均满足proportional hazards假设,而且模型总体(global)也不显著,因此可得出这Cox回归模型的前提是成立的

此外我们还可以通过Schoenfeld残差与时间的关系图来诊断模型是否满足前提,理论上如果满足的话,Schoenfeld残差应该与时间无明显的趋势,使用 ggcoxzph 函数,非常方便

ggcoxzph(test.ph)

R语言-Cox Model Assumptions

图中实线是散点的平滑拟合线,虚线则代表拟合线的正负两个标准差;从图中也很明显的看出三个协方差均满足proportional hazards假设(如果曲线偏离2个标准差则表示不满足比例风险假定)

如果是分类协变量,则还可以通过绘制log(-log(S(t)))与t(或者log(t))来看是否平行来判断是否满足Cox假设

如果不满足proportional hazards假设,则可以通过以下手段解决:

  • Adding covariate*time interaction(增加协变量与时间的交互关系)
  • Stratification(分层)

为了检测影响模型的点,或者说是异常值,我们可以通过展示deviance residuals或者dfbeta values图形来实现(也是一种残差图),主要使用 ggcoxdiagnostics 函数,type参数选择残差类型

ggcoxdiagnostics(res.cox, type = "dfbeta", linear.predictions = FALSE, ggtheme = theme_bw())

R语言-Cox Model Assumptions

从上图可看出,尽管一些dfbeta值(相对于回归系数的)很大,但是都不影响模型的估计值

我们还可以通过deviance残差图来检查异常值

ggcoxdiagnostics(res.cox, type = "deviance", linear.predictions = FALSE, ggtheme = theme_bw())

R语言-Cox Model Assumptions

deviance残差一般以标准差为1对称分布在0附近,如果:

Deviance残差如果大于0,提示预测结局发生的时间比实际结局发生的时间少,即风险率会高估。如果Deviance残差小于0,则提示预测结局发生的时间比实际结局发生的时间长,即风险率会低估。得分残差显示了删除某个观测后模型中系数变化的大小,变化越大,表示该观测对模型的影响越大。如果模型中很多观测的残差都较大,提示模型拟合的可能有问题

一般来说我们都假设连续协变量是呈线性的,通过绘制Martingale残差与协变量的散点图来检验非线性

Martingale残差范围一般在(-INF,1),如果其值接近于1则说明预测结局发生的时间比实际结局发生的时间少,即风险率会高估(died too soon);如果其值是极小的负值则说明预测结局发生的时间比实际结局发生的时间长,即风险率会低估(lived too long)

为了评估连续协变量的拟合形式,符合线性拟合形式的话则说明满足Cox模型的假设,可以用 ggcoxfunctional() 函数来查看协变量和martingale残差的分布情况

res.cox <- coxph(Surv(time, status) ~  age + log(age) + sqrt(age), data = lung)
ggcoxfunctional(res.cox,  data = lung, point.col = "blue", point.alpha = 0.5)

R语言-Cox Model Assumptions

从图中可看出有略微非线性,但是整体还是有线性趋势的


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏数据分析的艺术

游戏数据分析的艺术

于洋、余敏雄、吴娜、师胜柱 / 机械工业出版社 / 2015-7 / 79.00

《游戏数据分析的艺术》是中国游戏产业的开创性著作,具有里程碑意义,它首次系统讲解了如何对游戏行业的数据进行分析,在行业里竖起了一根标杆。作者是来自TalkingData等国内顶尖的数据分析机构和西山居这样的知名游戏公司的资深数据分析专家, 对游戏数据从不同的业务角度进行了诠释。本书详细剖析了游戏数据分析相关的指标、方法论、内容挖掘、数据挖掘、软件使用、游戏设计、运营策划、渠道推广、收入解读、用户分......一起来看看 《游戏数据分析的艺术》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具