r语言 svycoxph_基于R语言实现COX模型诊断
一般在建立好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模型诊断相关推荐
- 教务处管理系统c语言编程,基于C语言的教务管理系统的设计
基于C语言的教务管理系统的设计(任务书,开题报告,论文12000字,程序代码) 摘要 教务管理系统是现代化教育的重要组成部分,在现代高校管理中,一个高效的.准确的教务系统不仅能大大提高教学管理效率,还 ...
- 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc
基于c语言表达式求解课程设计修改 摘 要 通过数据结构这门课程,我们较深入的了解到了栈,栈是一种重要的线性结构,它广泛应用于各种软件系统中,因此在面向对象的程序设计中,它们是多型数据类型. 本次试验我 ...
- 学校图书管理系统基于c语言源代码,基于C语言的学校图书管理系统参考.doc
基于C语言的学校图书管理系统参考 本科学生毕业论文(设计) 题目(中 文):基于C语言的学校图书管理系统(英 文):School Library Management System Based on ...
- 步进电机循环脉冲c语言程序,基于C语言的步进电机调速.doc
课 程 设 计 (论文) 题目 基于C语言的步进电机调速 目 录 0. 前言3 1.基本理论4 2. 方案设计4 2.1 步进电机5 2.2 8255芯片5 3. 硬件电路的工作原理5 3.1 步进电 ...
- 两小灯同亮同灭c语言程序,基于C语言与Proteus联合仿真的单片机技术最新章节_何波,丘利丽著_掌阅小说网...
前言 随着嵌入式技术的飞速发展,嵌入式系统产品正不断渗透到各行各业,如智能家居.车载电子设备等.因此,单片机技术作为嵌入式计算机控制系统的重要技术,已经越来越受到各个应用领域的重视,尤其对于直接面向企 ...
- r语言 index_基于R语言绘制BBC风格图表
作者:吴健 中国科学院大学 R语言.统计学爱好者,尤其擅长R语言和Arcgis在生态领域的应用分享 个人公众号:统计与编程语言 近日在google上浏览一篇文章<BBC Visual and D ...
- 火车售票系统c语言编程,基于C语言实现简单的12306火车售票系统.pdf
基基于于C语语言言实实现现简简单单的的12306火火车车售售票票系系统统 程序设计要求用C语言写一个简单的火车售票系统,主要实现的功能为: 入班次信息 浏览班次信息 按班次号查询 按终点站查询 按余票 ...
- 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)
摘 要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...
- libvirt 用c语言编译,基于C语言libvirt API简单小程序
libvirt API简单小程序 1.程序代码如下 #include #include int getDomainInfo(int id) { virConnectPtr conn = NULL; v ...
- qt扫雷鼠标c语言中文网,基于C语言实现的扫雷游戏代码
/* 模拟扫雷游戏 */ #include #include #include #include #include #include #include union REGS regs; int siz ...
最新文章
- JavaScript 日期联动选择器
- 全面对比 Redis 和 Memcached 的 6 点区别
- TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】
- 口碑网发布2010吃住玩消费风向指数
- linux DNS安装配置
- python 调用另一个py_Python打包:setuptools与setup.py/.cfg入门简介
- 阿里拟 20 亿美元收购网易考拉;联通 5G 套餐最低 190 元;Rust 1.37.0 发布 | 极客头条...
- PingingLab传世经典系列《CCNA完全配置宝典》-2.9 OSPF基本配置
- weblogic查看版本号教程
- 20200623每日一句
- c语言计算机二级常用库函数,2013年计算机二级C语言库函数的调用考点归纳
- 营业执照生成_营业执照丢失补办要哪些资料?营业执照补办流程什么?你想知道的都在这里!...
- opnet之Aloha
- ZOJ 2480 Simplest Task in Windows
- 【无标题】 R语言下载keras最新方法
- 行业思考 | 互联网对传统行业的降维打击
- 未来大数据就业情况分析
- 22考研清华905机械设计基础上岸经验分享
- 项目的质量控制与质量保证的区别与联系
- 电脑主机上的COM1的接口在哪里啊?
热门文章
- 用python判断素数合数_使用Python判断质数(素数)的简单
- 离散数学学习笔记----命题逻辑的推理理论
- 开发部门现在存在的一些问题
- 排雷日记 -- mybatisplus分页查询效率
- Android摇一摇实现
- Render Hell —— 史上最通俗易懂的GPU入门教程(一)
- 以二叉链表为存储结构, 试编写计算二叉树中叶子结点数目的递归算法.
- Linux bridge模块的一次重构(让bridge归bridge让eth0归eth0)
- java 杨辉三角_Java语言杨辉三角
- imx6q的启动方式