一般在建立好Cox模型之后,需要对模型进行诊断。诊断内容包括模型的前提条件,诸如Cox模型的PH假定(比例风险假定),共线性假定等。本篇我们通过合实际例子讲解Cox模型诊断过程,实现软件R语言。

1.1 COX模型的诊断内容

Cox模型的诊断一般包括三方面的内容:

比例风险假定;

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

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

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

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

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

Martingale残差用于非线性检验;

1.2 R中用于评估Cox模型的包

我们将会用到以下两个包:

survival #用于cox模型建立

survminer #用于cox模型诊断结果的可视化

安装包

install.packages(c("survival","survminer"))

加载包

library("survival")

library("survminer")

1.3 建立Cox模型

我们利用survial包中自带的肺癌数据“data(lung)”建立cox模型。

library("survival")

res.cox

wt.loss, data =lung)#模型中有三个变量;

res.cox#显示模型结果

Call:

coxph(formula = Surv(time, status) ~ age sex wt.loss,data =

lung)

coefexp(coef)

se(coef) z p

age 0.02009 1.02029 0.00966 2.08 0.0377

sex -0.52103 0.59391 0.17435 -2.99 0.0028

wt.loss 0.00076 1.00076 0.00619 0.12 0.9024

Likelihood ratio test=14.7 on 3 df,

p=0.00212

n= 214, number of events= 152

(14 observationsdeleted due

to missingness)

1.4 模型诊断——PH假定

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

R语言survival包中的函数cox.zph()可以实现这一个检验过程。

test.ph

test.ph

rhochisq p

age -0.0483 0.3780.538

sex 0.1265 2.3490.125

wt.loss 0.0126 0.0240.877

GLOBAL NA 2.8460.416

从上面的结果可以看出,三个变量的P值都大于0.05,说明每个变量均满足PH检验,而模型的整体检验P值0.416,模型整体满足PH检验。

在R语言 survminer中ggcoxzph( )函数可以画出Schoenfeld残差图。

ggcoxzph(test.ph)

上图中实线是拟合的样条平滑曲线,虚线表示拟合曲线上下2个单位的标准差。如果曲线偏离2个单位的标准差则表示不满足比例风险假定。从上图中可见,各协变量满足PH风险假设。

另一种检查比例风险假定的图形方法是绘制log(-log(S(t)))与t或log(t)是非平行,这个方法只能用于协变量是分类变量的情形。

如果违反比例风险假设可以通过以下方式解决:

模型中添加协变量与时间的交互相应;

分层分析;

至于如何实现,我们后期再做介绍。

1.5 模型诊断——模型影响点(异常值)识别

我们可以通过绘制Deviance残差图或者dfbeta值实现上述诊断。在R语言survminer中ggcoxdiagnostics()函数可以画出Deviance残差图。

ggcoxdiagnostics(res.cox,type = "deviance",

linear.predictions = FALSE,ggtheme = theme_bw())

残差值均匀的分布在0上下,表明满足上述假定。

ggcoxdiagnostics(res.cox,type = "dfbeta",

linear.predictions = FALSE,ggtheme = theme_bw())

影响点的可能来源于数据录入错误,样本中的极值点、协变量不均衡,数据不足等。对本例,上图显示,将dfbeta值大小与回归系数比较表明,即使某些dfbeta值非常大,但它们不足以对模型系数的估计值产生影响。

1.6 模型诊断——非线性诊断

一般情况下,我们假设协变量与-log(s(t))之间是线性关系。通过绘制Martingale残差图可以实现模型协变量的非线性诊断。非线性诊断一般是针对模型中的连续型变量。

在R语言survminer中ggcoxfunctional()函数可以画出Martingale残差图。

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

= lung)

图中显示年龄局部有非线性趋势,但整体表现出线性趋势。

r语言 svycoxph_基于R语言实现COX模型诊断相关推荐

  1. 教务处管理系统c语言编程,基于C语言的教务管理系统的设计

    基于C语言的教务管理系统的设计(任务书,开题报告,论文12000字,程序代码) 摘要 教务管理系统是现代化教育的重要组成部分,在现代高校管理中,一个高效的.准确的教务系统不仅能大大提高教学管理效率,还 ...

  2. 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc

    基于c语言表达式求解课程设计修改 摘 要 通过数据结构这门课程,我们较深入的了解到了栈,栈是一种重要的线性结构,它广泛应用于各种软件系统中,因此在面向对象的程序设计中,它们是多型数据类型. 本次试验我 ...

  3. 学校图书管理系统基于c语言源代码,基于C语言的学校图书管理系统参考.doc

    基于C语言的学校图书管理系统参考 本科学生毕业论文(设计) 题目(中 文):基于C语言的学校图书管理系统(英 文):School Library Management System Based on ...

  4. 步进电机循环脉冲c语言程序,基于C语言的步进电机调速.doc

    课 程 设 计 (论文) 题目 基于C语言的步进电机调速 目 录 0. 前言3 1.基本理论4 2. 方案设计4 2.1 步进电机5 2.2 8255芯片5 3. 硬件电路的工作原理5 3.1 步进电 ...

  5. 两小灯同亮同灭c语言程序,基于C语言与Proteus联合仿真的单片机技术最新章节_何波,丘利丽著_掌阅小说网...

    前言 随着嵌入式技术的飞速发展,嵌入式系统产品正不断渗透到各行各业,如智能家居.车载电子设备等.因此,单片机技术作为嵌入式计算机控制系统的重要技术,已经越来越受到各个应用领域的重视,尤其对于直接面向企 ...

  6. r语言 index_基于R语言绘制BBC风格图表

    作者:吴健 中国科学院大学 R语言.统计学爱好者,尤其擅长R语言和Arcgis在生态领域的应用分享 个人公众号:统计与编程语言 近日在google上浏览一篇文章<BBC Visual and D ...

  7. 火车售票系统c语言编程,基于C语言实现简单的12306火车售票系统.pdf

    基基于于C语语言言实实现现简简单单的的12306火火车车售售票票系系统统 程序设计要求用C语言写一个简单的火车售票系统,主要实现的功能为: 入班次信息 浏览班次信息 按班次号查询 按终点站查询 按余票 ...

  8. 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)

    摘  要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...

  9. libvirt 用c语言编译,基于C语言libvirt API简单小程序

    libvirt API简单小程序 1.程序代码如下 #include #include int getDomainInfo(int id) { virConnectPtr conn = NULL; v ...

  10. qt扫雷鼠标c语言中文网,基于C语言实现的扫雷游戏代码

    /* 模拟扫雷游戏 */ #include #include #include #include #include #include #include union REGS regs; int siz ...

最新文章

  1. JavaScript 日期联动选择器
  2. 全面对比 Redis 和 Memcached 的 6 点区别
  3. TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】
  4. 口碑网发布2010吃住玩消费风向指数
  5. linux DNS安装配置
  6. python 调用另一个py_Python打包:setuptools与setup.py/.cfg入门简介
  7. 阿里拟 20 亿美元收购网易考拉;联通 5G 套餐最低 190 元;Rust 1.37.0 发布 | 极客头条...
  8. PingingLab传世经典系列《CCNA完全配置宝典》-2.9 OSPF基本配置
  9. weblogic查看版本号教程
  10. 20200623每日一句
  11. c语言计算机二级常用库函数,2013年计算机二级C语言库函数的调用考点归纳
  12. 营业执照生成_营业执照丢失补办要哪些资料?营业执照补办流程什么?你想知道的都在这里!...
  13. opnet之Aloha
  14. ZOJ 2480 Simplest Task in Windows
  15. 【无标题】 R语言下载keras最新方法
  16. 行业思考 | 互联网对传统行业的降维打击
  17. 未来大数据就业情况分析
  18. 22考研清华905机械设计基础上岸经验分享
  19. 项目的质量控制与质量保证的区别与联系
  20. 电脑主机上的COM1的接口在哪里啊?

热门文章

  1. 用python判断素数合数_使用Python判断质数(素数)的简单
  2. 离散数学学习笔记----命题逻辑的推理理论
  3. 开发部门现在存在的一些问题
  4. 排雷日记 -- mybatisplus分页查询效率
  5. Android摇一摇实现
  6. Render Hell —— 史上最通俗易懂的GPU入门教程(一)
  7. 以二叉链表为存储结构, 试编写计算二叉树中叶子结点数目的递归算法.
  8. Linux bridge模块的一次重构(让bridge归bridge让eth0归eth0)
  9. java 杨辉三角_Java语言杨辉三角
  10. imx6q的启动方式