R cox回归 ggDCA报错

2024-02-22 14:20
文章标签 报错 回归 cox ggdca

本文主要是介绍R cox回归 ggDCA报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

临床预测模型的决策曲线分析(DCA):基于ggDCA包
决策曲线分析法(decision curve analysis,DCA)是一种评估临床预测模型、诊断试验和分子标记物的简单方法。 我们在传统的诊断试验指标如:敏感性,特异性和ROC曲线下面积仅测量预测模型的诊断准确性,未能考虑特定模型的临床效用,而DCA的优势在于它将患者或决策者的偏好整合到分析中。这种理念的提出满足了临床决策的实际需要,在临床分析中的应用日益广泛。

前 言

本文介绍使用ggDCA包绘制多因素Cox回归模型的决策曲线分析(Decision curve analysis,DCA)。

ggDCA是目前能同时绘制Cox回归模型、logistic回归模型及广义线性模型的DCA曲线且其图形能用ggplot2美化。同时,该包还能计算DCA的曲线下面积、净获益及阈值概率的范围,如果把这些加入到文章中相信能增色不少!

1. 预测模型评估小结

2. ggDCA包的安装

3. Cox回归模型的DCA

4. 单个Cox模型多个时间点的DCA

5. 多个Cox回归模型的DCA比较

6. 多个模型在多个时间的DCA比较

7. DCA的曲线下面积(AUDC)

8. 其他回归模型的DCA

一、模型评估与比较小结

举例:某列线图(AUC/C-inde=0.8)预测某患者5年复发风险为70%。

1. 区分度 (Discrimination)

使用ROC曲线的曲线下面积(AUC)和C-index评估。

AUC/C-index=0.8,列线图对此结果的区分能力为80%,即有80%的把握确定复发率为70%。预测模型 | 6. 模型评估:ROC曲线-基于多因素Cox回归

2. 校准度 (Calibration)

使用校准图评估。

校准图用于解释列线图预测的70%复发率与实际复发率的接近程度,即准确性评估。详见:预测模型 | 5. 模型评估:校准曲线

3. 临床实用性

(Clinical usefulness)

使用决策曲线分析(DCA)评估。

多因素Cox回归的DCA曲线

#载入R包
ibrary(rms)
library(ggDCA)
library(survival)  #清理环境
rm(list = ls()) #2.载入数据,status=0为复发
aa<- read.csv('决策分析曲线.CSV')#使用cph()函数时运行
#即报错:adjustment values not defined here or with datadist.....时
bb<-datadist(aa)
options(datadist='bb')
数据点击:https://mp.weixin.qq.com/s/VO3GiBZcL_kAoHrr6_dPAw获取

1、构建多因素Cox回归模型

数据中status,0为感兴趣事件,因此status==0

model1<-coxph(Surv(time,status==0)~AGE+N+ER+LVI+Grade+RT,data=aa)

2、决策曲线分析 DCA

fig1<-dca(model1,new.data = NULL,times=60)
  1. 不写times=60,默认为times="median";
  2. 想看多个时间点DCA,times=c(36,48,60);
  3. 想看外部验证数据DCA曲线,载入外部数据后,new.data = NULLNULL变为外部数据名字。

3、DCA曲线绘制和美化

ggplot(dca1,       model.names="模型1",linetype =F, #线型lwd = 1.2)   #线粗

2.png


4. 美化

library(ggprism)
ggplot(dca1,linetype =F,lwd = 1.2)+#使用直线坐标系    theme_classic()+  #使用prism主题theme_prism(base_size =17)+#图例放在上方theme(legend.position="top")+#x轴范围并加入小刻度scale_x_continuous(limits = c(0, 1),guide = "prism_minor") +#y轴范围并加入小刻度scale_y_continuous(limits = c(-0.01, 0.2),guide = "prism_minor")+#颜色scale_colour_prism(         palette = "candy_bright",name = "Cylinders",label = c("模型1", "ALL", "None"))+#图形标题labs(title = "5年DCA基于ggDCA包")

3.png


更多细节点击查看原文:https://t.1yb.co/nAm1

四、单个模型多个时间点的DCA

只需修改一下times=c(36,48,60)和图例名称即可

#第1步建模同上
#第2步同上,只需改时间即可
dca1<-dca(model1,new.data = NULL,times=c(36,48,60))
#第3步改标签
ggplot(dca1,linetype =F,lwd = 1.2)+theme_classic()+  theme_prism(base_size =15)+theme(legend.position=c(0.7,0.7))+scale_x_continuous(limits = c(0, 1),guide = "prism_minor") +scale_y_continuous(limits = c(-0.01, 0.15),guide = "prism_minor")+scale_colour_prism(palette = "candy_bright",name = "Cylinders",label = c("3年DCA","4年DCA","5年DCA", "ALL-3年", "ALL-4年","ALL-5年","None"))+labs(title = "3-5年DCA")

五、多个模型DCA比较

#再建两个模型
model2 <- coxph(Surv(time,status==0)~AGE+N+ER+PR+Grade,data=aa)
model3 <- coxph(Surv(time,status==0)~AGE+N+ER+LVI,data=aa)
#三模型DCA分析
#只需指明模型名字和时间即可,跟1个模型一样其实
dca2<- dca(model1,model2,model3,times=60)

#绘图,跟单模型一样的代码
ggplot(dca2,linetype =F,lwd = 1.2)+theme_classic()+  theme_prism(base_size =17)+theme(legend.position=c(0.8,0.6))+scale_x_continuous(limits = c(0, 1),guide = "prism_minor") +scale_y_continuous(limits = c(-0.01, 0.15),guide = "prism_minor")+scale_colour_prism(palette = "candy_bright",name = "Cylinders",label = c("模型1", "模型2", "模型3","ALL","None"))+labs(title = "三模型DCA比较")

六、多模型多时间点DCA比较

#只需修改一下时间和标题
dca2<- dca(model1,model2,model3,times=c(36,48,60))ggplot(dca2,linetype =F,lwd = 1.2)+theme_classic()+  theme_prism(base_size =17)+theme(legend.position=c(0.9,0.6))+scale_x_continuous(limits = c(0, 1),guide = "prism_minor") +scale_y_continuous(limits = c(-0.01, 0.15),guide = "prism_minor")+scale_colour_prism(palette = "candy_bright",name = "Cylinders",label = c("模型1", "模型2", "模型3","ALL","None"))+labs(title = "三个模型3-5年DCA比较")

七、曲线下面积及净获益范围

类似ROC曲线的曲线下面积,DCA曲线也有曲线下面积: Area under Decision Curve (AUDC)。

代码非常简单:AUDC(x)x=dca()函数的名称。

净获益范围:rFP.p100(x)

model1<-cph(Surv(time,status==0)~AGE+N+ER+LVI+Grade+RT,data=aa)
dca1<-dca(model1,times=60)
AUDC(dca1)#运行结果
#   model1        All       None 
#0.06035219 0.01139759 0.00000000
rFP.p100(dca1)#也可以直接输入dca1
dca1

基于这个数据框,我们可以比较各个模型在各个时间点的阈值概率范围,最大最小净获益。

在我读过的文章里,这些数据很少被报道。

这项结果也是ggDCA包的一大特色。

这些数据将使我们的文章更具亮点和说服力。

八、其他回归模型的DCA曲线

ggDCA包可以绘制coxph()和cph()Cox回归模型, lrm()逻辑回归模型以及glm()广义线型模型的DCA曲线。

其原理与Cox回归模型一样,建模---dca()分析---绘图

只不过,其他模型不需要加入时间变量。

这里使用逻辑回归模型简单举例

bb<-datadist(aa)
options(datadist='bb')
#建模
m1<- lrm(status~AGE+N+LVI+Grade,data = aa)
m2<- lrm(status~AGE,data = aa)
#dca分析
d<-dca(m1,m2 )
#绘图
ggplot(d)+theme_classic()+  theme_prism(base_size =17)+theme(legend.position=c(0.25,0.3))+scale_x_continuous(limits = c(0.2, 1),guide = "prism_minor") +scale_y_continuous(limits = c(-0.05, 0.8),guide = "prism_minor")+scale_colour_prism(palette = "candy_bright",name = "Cylinders",label = c("lrm模型1", "lrm模型2","ALL","None")

小结

基于ggDCA包的可以为我们绘制各种类型的DCA曲线。在文章中可使用的结果可以有:

1、基于DCA分析,模型1比模型2有着更好的临床实用性,在相同的阈值概率下触发医疗干预时,使用模型1作为指导可以使患者有更多的净获益。----DCA图形看到的 ;

2、此外,模型1比模型2有着更广的阈值概率范围+结果----基于dca(x)结果;

3、不同时间点的模型比较可以看模型的在不同时间其临床实用性的变化情况。

在读过的文章中,常常只汇报了第1条结果,但是,现在我们可以通过ggDCA包挖掘更多的结果以此增加一下文章的亮点了。

ggDCA包参考手册:

https://cran.r-project.org/web/packages/ggDCA/index.html

https://mp.weixin.qq.com/s?__biz=Mzg2MjU2NDQwMg==&mid=100010922&idx=1&sn=eae80cc7ab9e3fd2d66864609520921b&chksm=4e0752f77970dbe170cf969ab9baaf1dbbca8953ff4c2502e54595db5cffec4dc17f76267226#rd

错误1 

Error in model.frame.default(formula = Surv(time, event) ~ data + new_model_by_liang_guo,  :
  参数'data'的种类(list)不对

这个错误来源于

model_Liang_Guo <- coxph(Surv(time, event)~data$new_model_by_liang_guo,data=data)
summary(model_Liang_Guo)

去掉datas$  即可

ggDCA的包报错

由于survival包版本问题,从CRAN安装的ggDCA会报错(如上图)。

因此,要从作者的github上下载ggDCA

ggDCA安装

#1.安装devtools
install.packages("devtools")
#2.从github安装ggDCA
devtools::install_github('yikeshu0611/ggDCA')#注:若是devtools::install_github('yikeshu0611/ggDCA')也报错,可先运行:
options(unzip ='internal')

这篇关于R cox回归 ggDCA报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735520

相关文章

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

Vue3上传图片报错:Current request is not a multipart request

当你看到错误 "Current request is not a multipart request" 时,这通常意味着你的服务器或后端代码期望接收一个 multipart/form-data 类型的请求,但实际上并没有收到这样的请求。在使用 <el-upload> 组件时,如果你已经设置了 http-request 属性来自定义上传行为,并且遇到了这个错误,可能是因为你在发送请求时没有正确地设置

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

笔记本电脑开机报错故障的原因及解决办法

笔记本电脑开机报错故障是指笔记本电脑开机自检时或启动操作系统前停止启动,在显示屏 出现一些错误提示的故障。   笔记本电脑开机报错故障的原因及解决办法   造成此类故障的原因一般是笔记本电脑在启动自检时,检测到硬件设备不能正常工作或在自 检通过后从硬盘启动时,出现硬盘的分区表损坏、硬盘主引导记录损坏、硬盘分区结束标志丢失 等故障,笔记本电脑出现相应的故障提示。   维修此类故障时

Allegro PCB--报错

1。 走线上打孔 问题:在走线上打的Via,我通过"Assign net to Via", 给与网络。成功后。 跑Tools\Database check\ Update all DRC(including batch), Via 网络又没有了 原因& 解决方法: VIA没有和走线完全重合 换个方法: 直接在线上打孔 或者走线change成shape, 或者用细导线把孔连到线路上。