京公网安备 11010802034615号
经营许可证编号:京B2-20210330
一般在建立好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 <- coxph(Surv(time, status) ~ age + sex +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 <- cox.zph(res.cox)
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)是非平行,这个方法只能用于协变量是分类变量的情形。
如果违反比例风险假设可以通过以下方式解决:
模型中添加协变量与时间的交互相应;
分层分析;
至于如何实现,我们后期再做介绍。
我们可以通过绘制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)
![]()
图中显示年龄局部有非线性趋势,但整体表现出线性趋势。
推荐学习书籍
《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~

免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
金融行业的运营风险贯穿业务全流程,涵盖交易欺诈、操作违规、流程漏洞、合规偏差、客户信用异常等多元场景,是银行、保险、证券 ...
2026-07-17财产保险作为金融行业的核心板块,涵盖车险、家财险、责任险、企财险等多元品类,是个人与企业抵御财产风险、经营风险的重要保障 ...
2026-07-17 很多数据分析师能熟练写SQL、做透视表,但当被问到“数据是从哪里来的?经过哪些加工才进入数据仓库?ETL具体做了什么?”时 ...
2026-07-17【核心关键词】模块、餐饮、客户、门店、企业、订单、供应链、多样化、产品、生产计划、数据分析、生产管理、物料管理、业务分 ...
2026-07-16在数字化分析时代,原始数据本身不具备业务价值,只有通过科学的统计学方法加工、拆解、验证与解读,才能挖掘数据背后的规律、差 ...
2026-07-16 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-07-16在描述性统计分析、数据预处理、异常值排查与多组数据分布对比工作中,箱线图(Box Plot)是应用最广泛的可视化与统计工具之一。 ...
2026-07-15在企业数据存储、业务统计与数据分析工作中,绝大多数业务数据都带有时间维度属性,例如订单创建时间、用户注册时间、支付完成时 ...
2026-07-15 很多数据分析师拿到数据就开始清洗、建模,但当被问到“这批数据属于什么类型——结构化还是非结构化?分类变量还是数值变量 ...
2026-07-15【核心关键词】产品、经营、客户、调研、销售额、宏观、会计行业、客户满意度、发展趋势、经营状况、数据分析、竞争对手、数据 ...
2026-07-14问卷调查是市场调研、用户研究、社会调研与产品分析的核心数据采集方式。问卷数据大多以分类数据为主,例如用户性别、年龄分层、 ...
2026-07-14 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-07-14在数据分析、业务效果验证、AB实验扩展、行业对比等场景中,我们经常需要对比三组及以上样本的均值差异,例如不同区域的客单价对 ...
2026-07-13在互联网产品运营、用户生命周期管理与商业化数据分析中,留存指标是判断产品价值、用户满意度与商业模式健康度的核心基准。常规 ...
2026-07-13 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-07-13【核心关键词】统计学、互联网、知识、课程、学生、数学、软件、招聘、数据分析、实习经历、机器学习、理论基础、业务思维、统 ...
2026-07-10在互联网运营、产品设计、市场营销与商业数据分析领域,所有转化、成交、复购行为的底层逻辑,都依托于用户决策流程。用户从产生 ...
2026-07-10 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-07-10数据透视表是数据分析中最常用、最高效的汇总分析工具,具备快速分组、聚合计算、维度拆解、数据可视化等优势,能够轻松完成求和 ...
2026-07-09在统计学、CDA数据分析、机器学习与商业数据研究中,正态分布是最基础、最重要的数据分布形态。绝大多数参数检验、数据建模、指 ...
2026-07-09