DCA(Decision Curve Analysis)临床决策曲线是一种用于评价诊断模型诊断准确性的方法,在2006年由AndrewVickers博士创建,我们通常判断一个疾病喜欢使用ROC曲线的AUC值来判定模型的准确性,但ROC曲线通常是通过特异度和敏感度来评价,实际临床中我们还应该考虑,假阳性和假阴性对病人带来的影响,因此在DCA曲线中引入了阈概率和净获益的概念。

图片来源文章:Urinary Podocalyxin as a Biomarker to Diagnose Membranous Nephropath主要讲的是利用肾脏标志物uPCXμgg诊断膜性肾病的事。这幅图的横坐标为阈概率,纵坐标为净获益。当uPCXμgg达到某个值时,患者模型肾病的概率记为Pi;当Pi达某个阈值(记为Pt),就界定为阳性。
净获益的概念,净获益是指按此概率开展措施后,因操作而获益的比例+ 未获益的比例权重。决策曲线中净获益的算法如下:(表格来源:临床流行病学和循证医学)

下面我们通过一个具体的四格表来看一下决策曲线分析的基本计算,假设阈值概率为10%,得到如下四格表(表格来源:临床流行病学和循证医学):

按照上面的10%的阈值去判断,我们判断对了23人,我们判断错了10人。这时候我们的净获益=(23/100)- [(10/100)
(0.1/0.9)]=0.218。同样我们可以计算当阈值概率为11%时的净获益值,也可以计算12%时的净获益值。依此类推,我们便可以获得阈值概率和净获益值的一一对应关系,还可以将此关系画成一个线图,便是决策曲线。
下面我们来使用R语言进行DCA曲线制作
在Urinary Podocalyxin as a Biomarker to Diagnose Membranous Nephropath文章中附带有作者自己的数据,因此我们使用作者的数据来制作一个DCA曲线。目前使用R语言制作DCA曲线需要rmda包,先要下载好,网上一些教程的DecisionCurve包和stdca包已经被R官方下架了,正常途径下载不到了,rmda包的制作DCA曲线的代码和DecisionCurve包几乎是一样的。
我们先使用R语言导入数据看看

数据很多,这些只是其中一部分的数据,但是作者只用到了MN(膜性肾病)age(年龄)+eGFR(肾小球滤过率)+DM(糖尿病)+uPCXμgg(肾脏标志物)这几个指标

作者制作模型前把年龄和肾小球滤过率都除以10,这里我们也要处理一下

be$age1<-be$age/10
be$eGFR1<-be$eGFR/10


作者制作了3个模型uPCX(单用肾脏标志物),clinicalparameters(单用临床指标),all(标志物+临床指标)
我们也和他一样分别制作3个模型

uPCX<- decision_curve(MN~uPCXμgg,data = be,
family = binomial(link ='logit'),#模型类型,这里是二分类thresholds= seq(0,1, by = 0.01),confidence.intervals =0.95,#95可信区间
study.design = 'cohort')#研究类型,这里是队列研究

同理制作其他两个模型

clinicalparameters<- decision_curve(MN~age1+eGFR1+DM,data = be, family = binomial(link ='logit'),thresholds= seq(0,1, by = 0.01),confidence.intervals =0.95,study.design ='cohort')
all<- decision_curve(MN~age1+eGFR1+DM+uPCXμgg,data = be,family = binomial(link='logit'),thresholds= seq(0,1, by = 0.01),confidence.intervals =0.95,study.design ='cohort')

使用LIST函数把3个模型连起来

List<-list(uPCX,clinicalparameters,all)

最后画图

plot_decision_curve(List,curve.names= c('uPCX','clinicalparameters','all'),cost.benefit.axis =FALSE,col = c('red','blue','green'),confidence.intervals =FALSE,standardize = FALSE)


图形出来了,和作者制作的图一模一样,图中两条虚线,斜线那条代表全是阳性的情况,横的那条代表全是阴性的情况,我们的模型一定要高于全是阳性的斜线,否则就没什么意义了。我们可以看到在0.45-0.6的阈概率之间ALL模型的净获益明显高于其他两个模型。
其实很简单,您做出来了吗?需要零基础学习SPSS的朋友可以关注我们的科研教程
参考文献

  1. Imaizumi T, Nakatochi M, Akiyama S, et al. Urinary Podocalyxin as a Biomarker to Diagnose Membranous Nephropathy. PLoS One. 2016;11(9):e0163507. Published 2016 Sep 26. doi:10.1371/journal.pone.0163507
  2. ROC曲线老了,快来围观新晋小生DCA曲线https://mp.weixin.qq.com/s/Wb7OGteSrEJENVfeDFJ82g
  3. 决策曲线分析简介https://www.iikx.com/news/statistics/1622.html

手把手教你使用R语言制作临床决策曲线相关推荐

  1. R语言怎么比较两个模型C指数,手把手教你用R语言评价临床预测模型,一文就够(附代码)...

    (三)Logistic回归模型评价: 在常用的临床模型构建中,主要分为两种,包括临床预测模型(Cox回归模型)和临床诊断模型(Logstic回归模型).在之前的内容中,阿琛给大家介绍了如何使用Nomo ...

  2. 手把手教你使用stata制作临床决策曲线

    DCA(Decision Curve Analysis)临床决策曲线是一种用于评价诊断模型诊断准确性的方法,在2006年由AndrewVickers博士创建,我们通常判断一个疾病喜欢使用ROC曲线的A ...

  3. r语言 html gif,推荐 :6步教你用R语言制作动图

    原标题:推荐 :6步教你用R语言制作动图 引言 数据可视化可能是数据科学领域最重要却通常最少被提及的部分. 我这么说是因为创造数据故事和可视化对你的顾客最终怎么看待你的工作有巨大的影响.数据科学不仅仅 ...

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

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

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

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

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

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

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

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

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

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

  9. 手把手教你使用R语言做出SCI论文中的表二(单因素分析表)(2)

    在前面的章节,我们已经用R语言分析了一种SCI单因素表格的制作方法,今天我们来继续分析,这种分类的,其实方法都是差不多的 我们先要对表进行分析,要看它表达的是什么意思,其实就是通过回归分析对子集的分析 ...

最新文章

  1. 51CTO平台老男孩教育精品视频全场5-6折,错过了,再等一年!
  2. 系统单据号生成规则推荐
  3. pythonrandom模块_python中的random模块
  4. docker 不包含依赖 打包_Docker容器技术(概念篇)
  5. 大剑无锋之如何评判一个算法的优劣【面试推荐】
  6. squid via检测转发循环
  7. phpmyadmin-错误:配置文件权限错误,不应任何用户都能修改!这里有答案
  8. Git下载连接远程仓库
  9. 关于hive报错expression not in group by key ‘.....‘
  10. matlab画柱状图斜线,matlab柱状图斜线填充
  11. 玩转算法与数据结构 C++描述 选择排序
  12. 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
  13. 5G来临,我们该如何打造自己的家庭数据中心 - 基础篇
  14. MySQL5.7修改密码问题解决方案
  15. 未分配利润与利润表不一致_资产负债表中的未分配利润和利润表中的净利润肯定是一致的吗?...
  16. Qt中textEdit文本编辑区设置滚动条自动向下滑落
  17. 同程艺龙半年报的喜色,掩盖了旅游竞争的本色
  18. 【java简单小项目】勇者斗魔王小游戏
  19. 服务器centos7.5系统下配置完DNS可以P通IP不能解析域名
  20. $con= MySQL有关填空题_mysql练习题和答案.docx

热门文章

  1. RGB與CIELAB色彩空間轉換
  2. 《DSP using MATLAB》Problem 8.22
  3. 德勤2020技术趋势报告 | 洞察5大重点趋势和12种宏观科技力量
  4. [附源码]java毕业设计药品销售管理系统
  5. protected这个词--戏言对象
  6. dfx软件测试书籍推荐,DFX是Design for X 谁知道Design for Reliability 方面的内容
  7. Python unittest使用
  8. 出版社宣传片该怎么拍?
  9. 智能手机战火连连,多年的纷争将何时终结?
  10. dvorak在win 和Linux中文输入法的日常用法