R语言生存分析-Cox比例风险模型诊断

欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA、GEO数据挖掘。

   Cox比例风险模型诊断  

Cox比例风险模型的建立是基于几个假设之上的,因此一般建好模型后需要进行诊断,评估拟合的模型是否能够用于描述数据

诊断的内容包括:

  • 比例风险假定;

  • 模型影响点(异常值)识别;

  • 比例风险的对数值与协变量之间的非线性关系识别;

对上述三方面的诊断,常见的方法为残差法。

  • Schoenfeld 残差用于检验比例风险假定;

  • Deviance 残差用于影响点(异常值)识别;

  • Martingale残差用于非线性检验;

载入survival and survminer

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

计算cox模型

library("survival")
res.cox <- coxph(Surv(time, status) ~ age + sex + wt.loss, data =  lung)
res.cox
## Call:
## coxph(formula = Surv(time, status) ~ age + sex + wt.loss, data = lung)
## 
##               coef  exp(coef)   se(coef)      z      p
## age      0.0200882  1.0202913  0.0096644  2.079 0.0377
## sex     -0.5210319  0.5939074  0.1743541 -2.988 0.0028
## wt.loss  0.0007596  1.0007599  0.0061934  0.123 0.9024
## 
## Likelihood ratio test=14.67  on 3 df, p=0.002122
## n= 214, number of events= 152 
##    (14 observations deleted due to missingness)

检验比例风险假设-PH假设

  • PH假设可通过假设检验和残差图检验。正常情况下,Schoenfeld残差应该与时间无关,如果残差与时间有相关趋势,则违反PH假设的证据。残差图上的横轴代表时间,如果残差均匀的分布则表示残差与时间相互独立。

  • R语言survival包中的函数cox.zph函数提供简便的实现这一过程的方法

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

  • 从输出的结果看,三个协变量的P值都大于0.05,说明每个变量均满足PH检验,而模型的整体检验P值0.416也没有统计学意义,因此我们认为模型整体满足PH检验。

图形诊断

survminer包中的ggcoxzph()函数可以绘制每个协变量随时间变化的Schoenfeld残差图

ggcoxzph(test.ph)

image.png
  • 上图中实线是与曲线拟合的平滑样条曲线,虚线表示拟合周围的+/- 2标准误差带。

  • 没有与时间相关变化模式,个各个协变量满足风险比例假设

检验异常的的观测

  • 绘制Deviance残差图或者dfbeta值实现,以下选择dfbeta,改为deviance即残差图

  • survminer中的ggcoxdiagnostics()函数

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

image.png

上图表示,将最大dfbeta值的大小与回归系数进行比较表明,没有一个观察结果是单独影响的,即使年龄和重量损失的某些dfbeta值与其他值相比较大。

非线性诊断- non linearity

  • 通常,我们假设连续协变量具有线性形式。但是,应该检验这个假设是否成立。使用连续协变量绘制Martingale残差是用于检测非线性的常用方法,或者换句话说,用于评估协变量的函数形式。对于给定的连续协变量,图中的模式可能表明变量不适合。

  • R语言survminer中的ggcoxfunctional()函数可以绘图

  • 例如我们检验age变量,可使用如下代码

ggcoxfunctional(Surv(time, status) ~ age + log(age) + sqrt(age), data = lung)

image.png
  • 结果显示,有一定程度的非线性存在

参考资料

(http://www.sthda.com/english/wiki/cox-model-assumptions)


(0)

相关推荐

  • R数据分析:生存分析的做法与解释续

    今天更新续文,上篇文章写了生存曲线的画法,但是留了一个问题没有解决,就是Kaplan-Meier生存曲线实际上仅仅把病人分为两组做了生存率随时间的比较,但是它并没有考虑协变量.R数据分析:生存分析的做 ...

  • R语言生存分析: 时变竞争风险模型分析淋巴瘤患者

    原文链接:http://tecdat.cn/?p=22422 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率.该模型包含Fine和Gray(1 ...

  • R笔记:生存分析之竞争风险模型[概念与实操]

    转自个人微信公众号[Memo_Cleon]的统计学习笔记:R笔记:生存分析之竞争风险模型[概念与实操]. 在<生存分析之Kaplan-Meier曲线绘制与比较>文末,我们提到了竞争风险.由 ...

  • R语言生存分析可视化分析

    完整原文链接:http://tecdat.cn/?p=5438 生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法. 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, &qu ...

  • R语言生存分析

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. R语言生存分析  生存分析是医学数据挖掘中的重要内容 R语言中用于生存分析 ...

  • R语言时变面板平滑转换回归模型TV-PSTR分析债务水平对投资的影响

    原文链接:http://tecdat.cn/?p=21506 当采用两种状态时,单转换函数PSTR模型具有两个变量: 我们的经验方法的基础包括评估N个国家的资本流动性.相应的模型定义如下: 其中,Ii ...

  • R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

    原文链接:http://tecdat.cn/?p=23099 在本文关于如何在R中进行贝叶斯分析.我们介绍贝叶斯分析,这个例子是关于职业足球比赛的进球数. 模型 首先,我们认为职业足球比赛的进球数来自 ...

  • 浅析R语言单因素方差分析中的多重比较

    浅析单因素方差分析中的多重比较 本脚本侧重于单因素方差分析中多重比较方法的运用; 就不展示数据正态性及齐次性的运算了(默认都符合,一般理化数据是都符合的); 有的人喜欢用Tukey检验,但会遇到一些不 ...

  • R语言meta分析(1)meta包

    介绍从广义上讲,meta分析是指将几项研究结果结合起来的统计分析.这一术语是由统计学家Gene V Glass在1976年向美国教育研究协会发表演讲中创造的.从那时起,meta分析不仅成为医学研究的重 ...

  • R语言GSEA分析(一)

    安装并导入要用到的R包 BiocManager::install("clusterProfiler") #感谢Y叔的clusterprofiler包 BiocManager::in ...