竞争风险模型就是指在临床事件中出现和它竞争的结局事件,这是事件会导致原有结局的改变,因此叫做竞争风险模型。比如我们想观察患者肿瘤的复发情况,但是患者在观察期突然车祸死亡,或者因其他疾病死亡,这样我们就观察不到复发情况了,这种情况下不能把缺失数据仅仅当做右删失处理,这样的话会造成数据的估值错误。这是我们应该优先选择竞争风险模型来做数据分析,而不是COX回归。我们在既往文章《手把手教你使用R语言做竞争风险模型并绘制列线图》中已经介绍了cmprsk包建立竞争风险模型和绘制列线图,但是cmprsk包功能还是相对简单一点,而且制作列线图的时候还需要对数据进行加权,对新手不怎么友好,许多人做不出来。

今天我们来介绍一下QHScrnomo包,QHScrnomo是在cmprsk包的基础上将功能呢继续完善,简化流程,可以做出竞争风险模型建模-列线图-校准曲线-K折验证-外部验证-决策曲线等诸多功能,总有一款适合你。
好了,废话不多说,立即开始。导入一个前列腺癌数据

library(QHScrnomo)
bc<-read.csv("E:/r/test/qianliexian.csv",sep=',',header=TRUE)


这是一个前列腺癌患者的生存数据(公众号回复:前列腺癌,可以获得数据),一共有9个变量,UNIQID:患者ID,TX:EBRT、PI、RP 水平的前列腺癌的治疗选择,PSA:治疗前 PSA 水平,BX_GLSN_CAT:活检 Gleason 评分总和,CLIN_STG:T1、T2、T3 临床分期,AGE:年龄,RACE_AA:种族,TIME_EVENT:随访时间,以月为单位,EVENT_DOD:结局事件,0 – 生存,1 - 死于前列腺癌,2 - 死于其他原因。
因为我们等下要做数据建模后的外部验证,所以我们把数据分为2部分,一个数据建模,另一个等下用来做外部验证。

set.seed(123)
tr1<- sample(nrow(bc),0.7*nrow(bc))##随机无放抽取
bc_train <- bc[tr1,]#70%数据集
bc_test<- bc[-tr1,]#30%数据集


这样数据就建好了,我们使用bc_train建模,bc_test来验证。
先进行数据格式整理

dd <- datadist(bc_train)
options(datadist = "dd")

建立cox回归模型

prostate.f <- cph(Surv(TIME_EVENT,EVENT_DOD == 1) ~ TX + rcs(PSA,3) +BX_GLSN_CAT + CLIN_STG + rcs(AGE,3) +RACE_AA, data = bc_train,x = TRUE, y= TRUE, surv=TRUE,time.inc = 144)

在cox回归模型的基础上建立竞争风险模型,要标明生存和死亡指标

prostate.crr <- crr.fit(prostate.f,cencode = 0,failcode = 1)

解析模型,可以看到相关系数和可信区间

summary(prostate.crr)


对部分指标重命名,这样新的名字就会在列线图出现

prostate.g <- Newlabels(prostate.crr,c(TX = 'Treatment options', BX_GLSN_CAT = 'Biopsy Gleason Score Sum',CLIN_STG = 'Clinical stage'))

建立列线图并绘图

nomogram.crr(prostate.g,failtime = 120,lp=FALSE,xfrac=0.65,fun.at = seq(0.2, 0.45, 0.05),funlabel = "Predicted 10-year cumulative incidence")


这样列线图就绘制好了,非常简单,作者还很贴心的给出了怎么计算的过程,可以用来回答编辑和审稿人

sas.cmprsk(prostate.crr, time = 120)


如果你没有外部验证的数据,你可以使用K折验证计算cindex,我们这里使用10折,10折需要点时间,我们稍微等一下,

bc_train$preds.tenf <- tenf.crr(prostate.crr, time=120, fold = 10)

计算 cindex

with(bc_train, cindex(preds.tenf,ftime = TIME_EVENT,fstatus =EVENT_DOD, type = "crr"))["cindex"]


Cindex计算好以后我们继续绘制校准曲线

with(bc_train,groupci(preds.tenf, ftime = TIME_EVENT,fstatus =EVENT_DOD, g = 5, u = 120,xlab = "Nomogram predicted 10-year cancerspecific mortality",ylab = "Observed predicted 10-year cancerspecific mortality")
)



这样列线图校准曲线就k折验证就做好了,cindex0.55,模型不怎么样,我们现在利用外部数据来进行外部验证,
先建模

newfit  <- crr(time,status,x,cencode = 0,failcode = 1)###建模

生成外部数据的验证概率

计算 cindex,和建模数据集差不多

with(bc_test, cindex(preds.tenf1,ftime = TIME_EVENT,fstatus =EVENT_DOD, type = "crr"))["cindex"]


最后绘制验证集校准曲线


除此之外我们还可以进行单变量的比较和绘制临床决策曲线,这里我就不演示了,感兴趣的可以看我的相关文章。


原创不易,需要外部验证部分代码的朋友,请把公众号中的本文章转发朋友圈集10个赞,截图发给我,嫌麻烦的可以在这里下载
https://download.csdn.net/download/dege857/85712760
我把全部代码和QHScrnomo包进行了打包。安装不了QHScrnomo包的可以在我这里把QHScrnomo包下载后在R安装。

然后找到R包的位置直接点确定就可以了,R包为一个压缩文件,安装好就可以直接用了。

更多精彩文章请关注公众号:零基础说科研

一步到位:手把手教你R语言竞争风险模型建模-列线图-校准曲线-K折验证-外部验证- 决策曲线相关推荐

  1. Fine-Gray检验、竞争风险模型、列线图绘制

    竞争风险模型(Competing Risk Model)适用于多个终点的生存数据,传统的生存分析(survival analysis) 一般只关心一个终点事件(即研究者感兴趣的结局).将其他事件均按删 ...

  2. 手把手教你R语言做k均值聚类分析

    今天聊聊k均值聚类分析,我们先要知道什么是类,在大数据时代,我们每个人都被打上很多个性标签,比如:宅男,月光族,手机控,非主流等等,每个标签都可以算是一个类,因此,可以不严谨的说:类是一些有特殊属性个 ...

  3. R语言Fine-Gray竞争风险模型实战

    R语言Fine-Gray竞争风险模型实战 目录 R语言Fine-Gray竞争风险模型实战 竞争风险模型(Fine & Gray模型)

  4. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、使用cox模型、并添加协变量、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线

    R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值.使用cox模型.并添加协变量.R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线 目录

  5. 基于R语言混合效应模型(mixed model)案例研究

    全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...

  6. R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列

    原文链接:http://tecdat.cn/?p=23934 在本文中,我们将尝试为苹果公司的日收益率寻找一个合适的 GARCH 模型(点击文末"阅读原文"获取完整代码数据). 相 ...

  7. R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数

    全文链接:http://tecdat.cn/?p=31023 如何构建合适的模型以恰当的方法对风险进行测量是当前金融研究领域的一个热门话题(点击文末"阅读原文"获取完整代码数据). ...

  8. R语言用Garch模型和回归模型对股票价格分析

    原文链接:http://tecdat.cn/?p=18310 为了找出影响价格波动的主要因素,我们使用逐步回归法来剔除一些对于应变量即价格影响很小的自变量剔除出我们的模型(点击文末"阅读原文 ...

  9. R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列...

    原文链接:http://tecdat.cn/?p=26897 风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险(点击文末"阅读原文 ...

  10. R语言用CPV模型的房地产信贷信用风险的度量和预测

    全文链接:http://tecdat.cn/?p=30401 本文基于 CPV 模型, 对房地产信贷风险进行了度量与预测.我们被客户要求撰写关于CPV模型的研究报告(点击文末"阅读原文&qu ...

最新文章

  1. React-Todos
  2. Java实现gbk utf8 转换_java项目编码格式转换(如GBK转UTF-8)
  3. 故障转移集群无法连接到节点_Redis集群以及自动故障转移测试
  4. PHP处理Checkbox复选框表单提交
  5. 0801 am使用tp框架对数据库增删改查
  6. Java学习教程整理
  7. java高级知识点_JAVA高级阶段知识点汇总
  8. (二)为AI模型训练准备影像
  9. 排烟管道过长怎么处理_厨房装修失误导致烟道过长该怎么办?
  10. 英特尔推出新CPU架构!3D封装打破摩尔定律限制,10nm芯片明年上市
  11. Mysql优化系列(1)--Innodb引擎下mysql自身配置优化
  12. WebView load**方法 加载资源【总结】
  13. python 汉诺塔问题_Python汉诺塔问题
  14. Android感应检测Sensor(简单介绍),全世界都在问Android开发凉了吗
  15. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地
  16. win10分辨率设置_电脑显示器分辨率超频教程:1080P超2K分辨率的方法
  17. android手机陀螺仪传感器,10.12 传感器专题(3)——加速度/陀螺仪传感器
  18. crontab任务误删恢复及备份步骤
  19. ubuntu 自动切换壁纸
  20. linux的炒股软件“全胜”

热门文章

  1. html设置自己下载的字体
  2. c++STL库最详细介绍(保姆级教学)
  3. node mysql菜鸟教程_Node.js Web 模块
  4. 图像风格迁移 CycleGAN原理
  5. Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
  6. 华为5G空口新技术(2015年)
  7. 在web项目中使用MarkDown组件
  8. [信号]预加重与去加重--转
  9. 如何学习C4D建模并达到精通?
  10. SIFT/SURF算法