前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言中COX模型构建

R语言中COX模型构建

作者头像
一粒沙
发布2019-07-31 10:06:52
4.5K0
发布2019-07-31 10:06:52
举报
文章被收录于专栏:R语言交流中心R语言交流中心

COX回归模型,又称“比例风险回归模型(proportionalhazards model,简称Cox模型)”,是由英国统计学家D.R.Cox(1972)年提出的一种半参数回归模型。该模型以生存结局和生存时间为应变量,可同时分析众多因素对生存期的影响,能分析带有截尾生存时间的资料,且不要求估计资料的生存分布类型。由于上述优良性质,该模型自问世以来,在医学随访研究中得到广泛的应用,是迄今生存分析中应用最多的多因素分析方法 [引自百度百科]。

今天我们介绍下在R语言中COX模型是如何实现又是如何来评价准确性的。我们需要准备相应的R包包括:survival (用于cox模型建立),survminer (用于cox模型诊断结果的可视化),Hmisc/compare (C-index值的获取)。

  1. 安装我们需要的R包,并载入R包,我们就不赘述了。
  2. R包的函数介绍:

survival包中我们主要应用的函数有

coxph () 构建模型

Surv() 用于创建生存数据对象。

Survfit() 创建KM生存曲线或是COX调整生存曲线。

Survdiff() 用于不同组的生存统计检验,默认是卡方检验。

Survfit和survdiff主要是调用surv生成的生存数据对象从而产生对应的结果。所以不细讲。

Predict()

COX模型预测函数survminer包中我们主要应用的函数有:

ggcoxzph( )函数

ggcoxfunctional()函数

Hmisc包中主要函数:

rcorr.cens 计算C-index值

compareC中的函数

3. 我们利用survial包中自带的肺癌数据“data(lung)”建立cox模型代码(只为测试)如下:

代码:cox <- coxph(Surv(time, status)~ wt.loss, data =lung)。

4. COX模型中假定Hazard Ratio(HR)不随时间变化,即满足比例风险假定(Proportional Hazards Assumption, PH假定)。在R中也创建了相应的检验函数cox.zph()。

代码:ph <- cox.zph(cox)。

P值都大于0.05,表示满足PH检验。

5. R语言survminer中ggcoxzph( )函数可以画出Schoenfeld残差图(PH假定的可视化)。可以进行模型影响点(异常值)识别。

代码:ggcoxzph(ph)

6. R语言survminer中ggcoxfunctional()函数可以画出Martingale残差图。实现对模型协变量的非线性诊断。

代码:ggcoxdiagnostics(cox,type = "deviance", linear.predictions= FALSE,ggtheme = theme_bw())。

7. C-index,c指数即一致性指数(index of concordance),用来评价模型的预测能力。c指数是资料所有病人对子中预测结果与实际结果一致的对子所占的比例。它估计了预测结果与实际观察到的结果相一致的概率。所谓C-index,英文名全称concordance index,中文里有人翻译成一致性指数,最早是由范德堡大学(Vanderbilt University)生物统计教教授Frank E HarrellJr 1996年提出,主要用于计算生存分析中的COX模型预测值与真实之间的区分度(discrimination),也称为Harrell's concordanceindex。C-index在0.5-1之间。0.5为完全不一致,说明该模型没有预测作用,1为完全一致,说明该模型预测结果与实际完全一致。在实际应用中,很难找到完全一致的预测模型,既往研究认为,C-index在0.50-0.70为较低准确度:在0.71-0.90之间为中等准确度;而高于0.90则为高准确度。C-index的R软件实现有两种方法,一种是用到Harrell本人的的R包Hmisc ;另一种是Le Kang, Weijie Chen 2014年12月18日发布的compareC。

代码:fp <- predict(cox)

rcorr.cens(fp, Surv(time, status) ~ wt.loss, data =lung)。#计算模型的C-index。

compareC(ztimes, status, x1, x2) #主要是计算两组之间的C-index。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档