临床预测模型之生存资料的ROC曲线绘制

41 篇文章 100 订阅
订阅专栏

本文首发于公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。

生存资料的ROC曲线考虑了时间因素,在画ROC时,需要指定是哪个时间点的ROC。

生存资料的ROC曲线绘制,最常见的那肯定是timeROCsurvivalROC了,这两个包非常像,我比较喜欢用timeROC

加载R包和数据

rm(list = ls())
library(timeROC)
library(survival)

load(file = "../000files/timeROC.RData")

多个时间点ROC

首先看一下数据结构,对于多个时间点的ROC,需要3列数据:time, event, marker(比如你计算得到的risk score)

# 看一下画图所需的数据长什么样子,event这一列,0代表living,1代表dead,futime这一列单位是年,也可以改成其他的

str(df)
## 'data.frame': 297 obs. of  3 variables:
##  $ event    : num  0 0 1 0 0 1 0 0 0 0 ...
##  $ riskScore: num  -0.249 -0.511 -0.211 -0.427 0.279 ...
##  $ futime   : num  3.03 1.16 1.82 1.52 1.34 ...

数据结构上面这样,下面就是画图。

# 构建timeroc

ROC <- timeROC(T=df$futime,   
               delta=df$event,   
               marker=df$riskScore,   
               cause=1,                #阳性结局指标数值
               weighting="marginal",   #计算方法,默认为marginal
               times=c(123),       #时间点,选取1年,3年和5年的生存率
               iid=TRUE)

ROC   #查看模型变量信息
## Time-dependent-Roc curve estimated using IPCW  (n=297, without competing risks). 
##     Cases Survivors Censored AUC (%)   se
## t=1    57       203       37   71.02 3.68
## t=2    66       106      125   69.23 3.94
## t=3    68        74      155   65.53 4.85
## 
## Method used for estimating IPCW:marginal 
## 
## Total computation time : 0.07  secs.

画图很简单:

plot(ROC, 
     time=1, col="red", lwd=2, title = "")   #time是时间点,col是线条颜色
plot(ROC,
     time=2, col="blue", add=TRUE, lwd=2)    #add指是否添加在上一张图中
plot(ROC,
     time=3, col="orange", add=TRUE, lwd=2)

#添加标签信息
legend("bottomright",
       c(paste0("AUC at 1 year: ",round(ROC[["AUC"]][1],2)), 
         paste0("AUC at 2 year: ",round(ROC[["AUC"]][2],2)), 
         paste0("AUC at 3 year: ",round(ROC[["AUC"]][3],2))),
       col=c("red""blue""orange"),
       lty=1, lwd=2,bty = "n"
alt

多指标ROC

首先也是看一下所需要的数据结构,其中futime和event是必须的,另外的几列是你想要用来画ROC曲线图的指标,可以自己添加,在这里我使用了riskScore, gender, TNM分期。 在gender这一列,1是female,2是male,t,n,m这3列,数字代表不同的分期

str(df2)
## 'data.frame': 297 obs. of  8 variables:
##  $ event    : num  0 0 1 0 0 1 0 0 0 0 ...
##  $ age      : int  59 63 65 73 59 66 56 42 61 48 ...
##  $ riskScore: num  -0.249 -0.511 -0.211 -0.427 0.279 ...
##  $ futime   : num  3.03 1.16 1.82 1.52 1.34 ...
##  $ gender   : num  2 2 2 1 2 2 1 2 2 2 ...
##  $ t        : num  4 4 4 3 3 3 5 3 NA 4 ...
##  $ n        : num  1 5 1 1 1 1 3 1 NA 1 ...
##  $ m        : num  1 1 1 1 1 3 1 1 3 3 ...

多指标的ROC曲线非常简单,就是构建多个ROC,依次添加即可:

# riskScore的ROC曲线
ROC.risk <- timeROC(T=df2$futime,
                    delta=df2$event,   
                    marker=df2$riskScore,   
                    cause=1,                
                    weighting="marginal",   
                    times=3,   
                    iid=TRUE)


# gender的ROC曲线
ROC.gender <- timeROC(T=df2$futime,   
                      delta=df2$event,   
                      marker=df2$gender,   
                      cause=1,   
                      weighting="marginal",   
                      times=3,   
                      iid=TRUE)


# age的ROC曲线
ROC.age <- timeROC(T=df2$futime,   
                   delta=df2$event,   
                   marker=df2$age,   
                   cause=1,   
                   weighting="marginal",   
                   times=3,   
                   iid=TRUE)


# T分期的ROC曲线
ROC.T <- timeROC(T=df2$futime,
                 delta=df2$event,  
                 marker=df2$t,   
                 cause=1
                 weighting="marginal"
                 times=3
                 iid=TRUE)


# N分期的ROC曲线
ROC.N <- timeROC(T=df2$futime,   
                 delta=df2$event,   
                 marker=df2$n,   
                 cause=1,   
                 weighting="marginal",   
                 times=3,   
                 iid=TRUE)


# M分期的ROC曲线
ROC.M <- timeROC(T=df2$futime,   
                 delta=df2$event,   
                 marker=df2$m,   
                 cause=1,   
                 weighting="marginal",   
                 times=3,   
                 iid=TRUE)

把每个曲线拼在一起即可,添加一个图例:

plot(ROC.risk, time = 3, col="#E41A1C", lwd=2, title = "")
plot(ROC.gender, time = 3, col="#A65628", lwd=2, add = T)
plot(ROC.age, time = 3, col="#4DAF4A", lwd=2, add = T)
plot(ROC.T, time = 3, col="#377EB8", lwd=2, add = T)
plot(ROC.N, time = 3, col="#984EA3", lwd=2, add = T)
plot(ROC.M, time = 3, col="#FFFF33", lwd=2, add = T)
legend("bottomright",
       c(paste0("Risk score: ",round(ROC.risk[["AUC"]][2],2)), 
         paste0("gender: ",round(ROC.gender[["AUC"]][2],2)), 
         paste0("age: ",round(ROC.age[["AUC"]][2],2)),
         paste0("T: ",round(ROC.T[["AUC"]][2],2)),
         paste0("N: ",round(ROC.N[["AUC"]][2],2)),
         paste0("M: ",round(ROC.M[["AUC"]][2],2))
         ),
       col=c("#E41A1C""#A65628""#4DAF4A","#377EB8","#984EA3","#FFFF33"),
       lty=1, lwd=2,bty = "n")  
alt

本文首发于公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。

本文由 mdnice 多平台发布

R数据分析:生存数据预测模型的建立和评价(二)timeROC与决策曲线
Codewar的博客
05-09 1506
上篇文章依照的一篇文章给大家写了生存数据预测模型评价的C指数、校准曲线和模型验证结果的法,其实生存数据预测模型的评价方法还有很多,本期接着往下看。
【统计模型】生存分析——绘制生存曲线图
m0_72318954的博客
06-18 705
R语言生存曲线绘制
R语言绘制生存分析曲线·从概念到实战的保姆级教程
qq_45404805的博客
05-12 1828
生存分析 (survival analysis) 是一种分析数据的术语,该数据以时间为形式,用于描述从定义明确的时间起点 (time origin) 到某个特定事件或终点的发生。在医学研究中,时间起点通常对应于将个体招募到实验研究中,例如比较两种或多种治疗的临床试验。这又可能与特定疾病的诊断、治疗方案的开始或某些不良事件的发生相吻合。如果终点是患者的死亡,那么得出的数据就是实际的生存时间。然而,当终点不是致命的,例如疼痛减轻或症状复发时,也可以获得类似形式的数据。为了帮助大家更好的理解这一块的内容,小罗特意
生存分析最佳截断值的确定
医学和生信笔记的博客
12-15 1892
生存分析时,连续型变量最佳截断值的选择,是很火爆的问题。因为有的时候即使你通过单因素或者多因素分析得到了结果,但是根据这个结果进行K-M生存分析发现P值并不显著(P>0.05)。那这个时候你可能需要重新寻最佳的截断值,使得K-M生存分析有意义。survminer。
拓端tecdat|R语言中生存分析模型与时间依赖性ROC曲线可视化
大数据部落
03-01 3975
原文链接:http://tecdat.cn/?p=20650 人们通常使用接收者操作特征曲线(ROC)进行二元结果逻辑回归。但是,流行病学研究中感兴趣的结果通常是事件发生时间。使用随时间变化的时间相关ROC可以更全面地描述这种情况下的预测模型时间相关的ROC定义 令 Mi为用于死亡率预测的基线(时间0)标量标记。当随时间推移观察到结果时,其预测性能取决于评估时间t。直观地说,在零时间测量的标记值应该变得不那么相关。因此,ROC测得的预测性能(区分)是时间t的函数。 累积病例 累......
临床预测模型之二分类ROC曲线绘制
医学和生信笔记的博客
10-31 4154
完美观看体验请至公众号查看本文。,专注R语言在临床医学中的使用,R语言数据分析和可视化。ROC曲线是评价模型的重要工具,曲线下面积AUC可能是大家最常见的模型评价指标之一。如果你还不太了解关于ROC曲线中的各种指标,请看下面这张图(请至公众号查看),有你需要的一切(建议保存)R语言中有非常多的方法可以实现ROC曲线,但是基本上都是至少需要2列数据,一列是真实结果,另一列是预测值,有了这两列数据,就可以轻松使用各种方法画出ROC曲线并计算AUC。
Topic 16. 临床预测模型之接收者操作特征曲线 (ROC)
weixin_41368414的博客
04-09 4037
全网总结最全的ROC绘制方法,总有一款适合您!
生存资料ROC曲线的最佳截点和平滑曲线
医学和生信笔记的博客
09-08 4006
本文首发于公众号:医学和生信笔记 “ 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。 二分类变量的最佳截点直接使用pROC包就可以直接得到,前面也介绍过,今天主要说一下生存资料ROC曲线的最佳截点,以及生存资料ROC曲线如何变得平滑。 平滑曲线加载R包和数据多个时间点ROC画平滑曲线最佳截点 平滑曲线 不考虑时间因素的ROC曲线可以使用pROC包中的smooth参数实现平滑版的曲线。ti
逻辑回归临床预测模型lasso回归变量筛选roc曲线定制Delong检验
04-28
r语言建立逻辑回归临床预测模型 + lasso回归变量筛选+ roc曲线绘制+roc统计检验
ROC曲线绘制.txt
04-20
绘制最佳截断值,多个ROC曲线的AUC值差异性比较,解决ROC曲线绘制中的各项痛点,标准全面,直接更换数据即可使用
roc曲线绘制2.rar
05-07
人脸识别roc曲线绘制python脚本代码
曲线绘制_roc_ROC曲线绘制_PRC_auc曲线绘制_
10-03
roc,prc,auc曲线绘制,帮助解决二分类问题的图像绘制处理
程序人生——Java使用关于性能和效率的建议
Arya的博客,专注后端领域
03-18 2179
程序人生——Java使用关于性能和效率的建议
C#读取WinCC实时和归档数据
06-21
如何在 C#应用程序中读取 WinCC 变量归档数据,资源来自西门子官网
解放鼠标右键 chrome edge 浏览器 插件
06-21
解放鼠标右键 chrome edge 浏览器 插件 开启开发者模式,拖入扩展管理即可使用
Python实战示例自动办公-20 Python文本数据可视化之“词云”图.zip
06-21
自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图
Pygments-0.11-py2.5.egg
最新发布
06-21
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
R语言临床预测模型
09-29
R语言可以用来进行临床预测模型的建立和评价。临床预测模型可以使用Cox回归模型和Logistic回归模型。在R语言中,可以使用各种包和函数来实现这些模型的建立和应用。例如,可以使用survival包来实现Cox回归模型的建立和生存曲线的绘制,使用glm包来实现Logistic回归模型的建立和模型评价。 在临床预测模型建立方面,可以通过以下步骤来进行: 1. 数据准备:包括数据清洗、缺失值处理、数据转换等。 2. 变量选择:选择与预测目标相关的变量,可以使用统计方法(如逐步回归、LASSO回归)或领域知识进行选择。 3. 模型建立:使用合适的函数(如coxph函数)进行模型建立,根据变量的系数确定其对预测目标的影响。 4. 模型评价:评估模型的预测性能,包括判别能力、校准性、预测误差等指标的计算和绘制。 在临床预测模型评价方面,可以使用以下方法进行: 1. 预测准确性评价:包括敏感性、特异性、准确度、受试者工作特征曲线(ROC曲线)等指标的计算和绘制。 2. 预测模型比较:比较不同模型的预测性能,如使用AIC(赤池信息准则)或BIC(贝叶斯信息准则)进行模型选择。 3. 模型校准性评价:比较观察值和预测值之间的差异,可以使用校准曲线或预测校准曲线进行评价。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 超详细的R语言热图之complexheatmap系列(1) 22711
  • logistic回归列线图(nomogram)的多种绘制方法 15726
  • R语言聚类分析 14382
  • R语言logistic回归的细节解读 13147
  • 初学者使用R语言读取excel/csv/txt的注意事项 12677

分类专栏

  • 临床预测模型 41篇
  • R语言机器学习 26篇
  • 生信数据挖掘 54篇
  • 医学统计学 64篇
  • 数据分析 21篇
  • 数据可视化 26篇

最新评论

  • 8种免疫浸润分析1行代码实现

    weallove970927: ssgsea28

  • TCGA下载和表达矩阵整理:最适合初学者的教程

    春风再度山海关: 下载全部失败怎么办

  • 8种免疫浸润分析1行代码实现

    liu1994523song: ssgsea28

  • ChAMP甲基化数据分析:从β值矩阵开始

    Zolu: Fixing Outliers Start Replacing all value smaller/equal to 0 with smallest positive value. Error in `[.data.frame`(Objects$beta, which(Objects$beta > 0)) : undefined columns selected 过滤分析的最后一步,修复异常值这里有问题?应该怎么修改呀

  • TCGA的拷贝数变异CNV可视化

    小洁忘了怎么分身: 前来学习,刚好看到score政府值的问题O(∩_∩)O留下简单版本的代码 k = ifelse(scores$Type == "Del",-1,1) scores$`G-score` = scores$`G-score` *k

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 决策曲线添加彩色条带
  • time-dependent平滑ROC曲线
  • tidymodels超参数设置
2024年11篇
2023年98篇
2022年127篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网山西汾酒队丹桂飘香痳古的主要成分是什么起名为什么鸢尾花物语安康网起名网禁止性爱家字女孩起名窑洞对描写枫叶的作文三亚舰猪宝宝起名宜用的cba下赛季或启用全华班政策中欧商学院原神寻找梵米尔的画笔与颜料魔兽地图天地劫泳池砖星座屋公司起名大全的软件金融公司起名大全公司qq空间免费播放器中国免费公司起名网雕龙画凤刚出生小孩起名字女孩新易贷空间免费黑色皮肤乱世铜炉岗前培训jj斗地主记牌器知命八字算命起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化