竞争风险模型就是指在临床事件中出现和它竞争的结局事件,这是事件会导致原有结局的改变,因此叫做竞争风险模型。比如我们想观察患者肿瘤的复发情况,但是患者在观察期突然车祸死亡,或者因其他疾病死亡,这样我们就观察不到复发情况了,这种情况下不能把缺失数据仅仅当做右删失处理,这样的话会造成数据的估值错误。这是我们应该优先选择竞争风险模型来做数据分析,而不是COX回归。竞争风险模型在数据挖掘中经常使用到,我们将来在SEER数据库挖掘教程中将介绍怎么使用竞争风险模型进行数据挖掘。

我们使用R语言survival自带的膀胱癌bladder1的数据集,为了使它符合竞争风险模型的要求,我们做了一点小小的整理,我们要观察的是肿瘤复发,因此死亡就是它的风险竞争因素。
首先我们把需要的R导入,然后导入数据

library(foreign)
library(survival)
library("cmprsk")
library(rms)
be<-read.csv("E:/r/test/jzfx.csv",sep=',',header=TRUE)


我们来看一下数据是什么样子的

数据的名称解释为:
id: 患者编号;treatment(治疗方案):1. 安慰剂2. 维生素B6. 3.噻替帕 ;
number: 肿瘤的初始数量 size: 最大的初始肿瘤大小(厘米) recur: 复发次数
start,stop: 开始,停止:每个时间间隔的开始和结束时间 status(结局):1.存活2.复发3.死亡 rtumor: 复发时发现的肿瘤数量 rsize: 复发时最大的肿瘤大小

## 不同治疗方案的复发率和竞争事件发生率
cum<-cuminc(be$etime,be$status,be$treatment)
plot(cum)

还可以美化一下

## 多因素竞争风险模型-复发的发生率(或竞争事件的发生率,failcode = 2)
time<-be$etime
status<-be$status
x <- be[, c('treatment', 'number', 'size','recur')]
fit2 <- crr(time,status,x,failcode = 1)#这里failcode = 1代表肿瘤复发
summary(fit2)


好的,我们已经得到模型,现在带入1例患者检验一下

fit3<-predict(fit2,c(1,2,1,0)) #对应数据X的4个指标
plot(fit3,lty=1,color="darkcyan",ylab="Cumulative probability of recurrence")


##下面我们来做列线图
首先要对数据进行加权,为什么要加权呢,原理很复杂,涉及到竞争风险模型的原理,我也不知道,但是大牛们都说要加权我们就加吧。

library(mstate)
bc<-be
bc<-bc[-1,]
bc<-bc[-129,]
be.w<-crprep("etime",status = "status",data =bc,trans = c(1,2),cens = 0,id="id",keep = c('treatment', 'number', 'size','recur'))#进行加权

be.w$Time<-be.w$Tstop-be.w$Tstart#添加个时间,好进行COX回归
dd<-datadist(be.w)
options(datadist="dd")
f <- cph(Surv(Tstart,Tstop,status==1) ~ treatment+number+size+recur, x=T, y=T, surv=T, data=be.w, time.inc=36)#建立COX回归
surv<- Survival(f)#生成预测函数
nom <- nomogram(f, fun=list(function(x) surv(36, x),function(x) surv(60, x)),funlabel=c("3-year survival Probability", "5-year survival Probability"))#制作列线图
plot(nom)


这个列线图有点丑,主要是这个概率太小了,有兴趣的可以自己调整一下
###中位数列线图

med <- Quantile(f) # 计算中位生存时间
nom2 <- nomogram(f, fun=function(x) med(lp=x),funlabel="Median Survival Time")
plot(nom2)

手把手教你使用R语言做竞争风险模型并绘制列线图相关推荐

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

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

  2. 独家 | 手把手教你用R语言做回归后的残差分析(附代码)

    作者:Abhijit Telang 翻译:张睿毅 校对:丁楠雅 本文约2600字,建议阅读10分钟. 本文介绍了做残差分析的方法及其重要性,以及利用R语言实现残差分析. 在这篇文章中,我们通过探索残差 ...

  3. r语言中残差与回归值的残差图_独家 | 手把手教你用R语言做回归后的残差分析(附代码)-阿里云开发者社区...

    作者:Abhijit Telang 翻译:张睿毅 校对:丁楠雅 文章来源:微信公众号 数据派THU 本文介绍了做残差分析的方法及其重要性,以及利用R语言实现残差分析. 在这篇文章中,我们通过探索残差分 ...

  4. r语言做断轴_手把手教你用R语言做回归后的残差分析

    本文介绍了做残差分析的方法及其重要性,以及利用R语言实现残差分析. 在这篇文章中,我们通过探索残差分析和用R可视化结果,深入研究了R语言. 残差本质上是当一个给定的模型(在文中是线性回归)不完全符合给 ...

  5. 手把手教你使用R语言做LASSO 回归

    LASSO 回归也叫套索回归,是通过生成一个惩罚函数是回归模型中的变量系数进行压缩,达到防止过度拟合,解决严重共线性的问题,LASSO 回归最先由英国人Robert Tibshirani提出,目前在预 ...

  6. 手把手教你使用R语言建立COX回归并画出列线图(Nomogram)

    列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者某类事件发生的概 ...

  7. 手把手教你入门R语言--数据分析篇(1)——数据导入与基础绘图

    R语言入门系列课程(6) 前面已将R语言的基础全部交给大家了,这两节将教大家用R语言进行数据分析的基础.数据读入(数据源包括txt文件.Excel文件.MySLQ数据库.MongoDB数据库).数据写 ...

  8. 独家 | 手把手教你学习R语言(附资源链接)

    作者:NSS 翻译:杨金鸿 术语校对:韩海畴 全文校对:林亦霖 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者 ...

  9. 超级干货 :手把手教你学习R语言(附资源链接)

    作者:NSS:翻译:杨金鸿:校对:韩海畴,林亦霖: 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开 ...

  10. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

最新文章

  1. 计算机组成考试题及答案,计算机组成测试题一参考答案
  2. VMware View是如何帮助企业省钱的
  3. 使用Nexus搭建Maven私服
  4. idea 设置识别ini文件
  5. EntityFramework(EF)贪婪加载和延迟加载的选择和使用
  6. oracle中关于删除表purge语句和闪回语句的基本使用
  7. postgresql的别名要用双引号才可以
  8. 微信小程序和vue双向绑定哪里不一样_浅析Vue 和微信小程序的区别、比较
  9. 450g吐司烘烤温度_这不可能是吐司!不,是的
  10. 计算机二进制和太极,八卦与二进制
  11. 【BZOJ5082】弗拉格 矩阵乘法
  12. 详解java的构造方法
  13. 《Java安全编码标准》一第 1 章 概  述
  14. 编译内核_Linux内核编译(自己实现的网卡上面测试c1000k案例)
  15. delphi7IDE技巧
  16. vue部门结构图_Vue组织架构图组件
  17. Model、Map、ModelMap的关系
  18. Microsoft编写优质无错C程序秘诀
  19. 传智java测试题答案_传智播客Java基础第一阶段习题
  20. 渗透测试之攻击Windows认证

热门文章

  1. Sublime Text3 Build 3207破解
  2. C++if语句进行分段函数计算
  3. Python 递归函数计算阶乘
  4. 用图层蒙版抠图并合成(每天一个PS小项目)
  5. mysql varchar 长度设置_Mysql中varchar长度设置方法
  6. JS监听安卓软键盘删除键
  7. 冯扬文:基于数据仓库的集装箱运价信息集成研究
  8. 非科班转码,上岸小公司我也很满意了
  9. python复数类型的虚部通过_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...
  10. 小鹿线前端课程怎么样