之前给大家写过好几篇很详细的临床预测模型的原理解析,本文接着之前的文章,继续写做法,首先依然是找到一篇参照论文,今天我们的示例文章是一篇来自美国心脏学会杂志的文章:

Zhang X, Yuan K, Wang H, Gong P, Jiang T, Xie Y, Sheng L, Liu D, Liu X, Xu G. Nomogram to Predict Mortality of Endovascular Thrombectomy for Ischemic Stroke Despite Successful Recanalization. J Am Heart Assoc. 2020 Feb 4;9(3):e014899. doi: 10.1161/JAHA.119.014899. Epub 2020 Jan 24. PMID: 31973604; PMCID: PMC7033899.

原文给大家贴在上面,我们要做的就是对文章统计部分进行复现。

原文回顾

整篇文章就是开发了一个用于预测癌症患者的3个月死亡率风险诺模图,考虑了什么变量,用的是什么人群队列,本文不关心,感兴趣的同学自行去阅读原文哈,本文着重写宏观做法,作者具体使用的模型是Step-wise logistic regression,文章中有报告各个变量的OR和整体模型的concordance index,重点的结果一个是诺莫图:

还有就是对整体模型,作者还展示了模型的校准曲线和决策曲线(意义详解见R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

文章中的校准曲线长这样:

和决策曲线长这样:

因为回归的or之前写过,今天就写如何几个图的做法。

实例操练

我现在有数据如下:

我想以Y为因变量,做一个预测模型,同时展示诺莫图和校准曲线以及决策曲线,ROC之前发文章有详细的写过,本文直接略过哈。

首先,我需要先训练我的模型,此时是个logistics模型,得用lrm函数进行拟合:

refit <- lrm(y > 3 ~ studage + lectage + service + dept, dat, x = TRUE, y = TRUE)

模型拟合好形成refit对象,直接接上calibrate函数,再plot下就可以:

plot(calibrate(refit, B = 400))

运行上面的代码后直接获得下图,基本不用改动,和发表的文献结构一模一样:

上面就是校准曲线的做法,我们接着看诺莫图的和诺莫图的决策曲线的做法,关于诺莫图的做法,我记得之前写过一个非常详细的教程文献解析:生存数据和分类结局列线图的做法,史上最全,大家可以回去瞅瞅,这儿在我们现在的例子中,只需要将刚刚拟合的refit对象运行下面的代码即可出图:

nom <- nomogram(refit, lp=F,fun=plogis, funlabel="Please follow Wechat Channel- Codewar")
plot(nom)

接下来继续做该诺莫图的决策曲线,决策曲线需要用到dca函数,其基本用法如下:

如果我们做Univariate Decision Curve Analysis,直接写好公式放在第一个参数就行,不过具体到我们的例子我们是在做Univariate Decision Curve Analysis,这个时候我们需要将多变量模型的预测值放在公式的右边:

We wanted to examine the value of a statistical model that incorporates family history, age, and the marker. First we will build the logistic regression model with all three variables, and second we would have saved out the predicted probability of having cancer based on the model.

对于我们的模型来讲,我需要用predict函数得到模型的预测值,然后使用dca函数并结合plot进行DCA曲线的绘制,具体代码如下:

dca(dat$y>3~Nomogram, dat,
thresholds = seq(0.25, 0.75, by = 0.01)
) %>%
plot(smooth = TRUE,bty='n')

运行后并稍加调整即可得到下图,当然下图还可以根据需求继续修改,但是基本上已经差不多,似乎比原文要更好看点啦,嘿嘿。

小结

今天结合之前的文章给大家进一步介绍了校准曲线和决策曲线的实际做法,感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。

也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,有疑问欢迎私信,有合作意向请直接滴滴我。

R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例的更多相关文章

  1. R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

    之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...

  2. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  3. R数据分析:样本量计算的底层逻辑与实操,pwr包

    样本量问题真的是好多人的老大难,是很多同学科研入门第一个拦路虎,今天给本科同学改大创标书又遇到这个问题,我想想不止是本科生对这个问题不会,很多同学从上研究生到最后脱离科研估计也没能把这个问题弄得很明白 ...

  4. R数据分析:孟德尔随机化实操

    好多同学询问孟德尔随机化的问题,我再来尝试着梳理一遍,希望对大家有所帮助,首先看下图1分钟,盯着看将下图印在脑海中: 上图是工具变量(不知道工具变量请翻之前的文章)的模式图,明确一个点:我们做孟德尔的 ...

  5. R数据分析:孟德尔随机化中介的原理和实操

    中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自 ...

  6. R数据分析:用R建立预测模型

    预测模型在各个领域都越来越火,今天的分享和之前的临床预测模型背景上有些不同,但方法思路上都是一样的,多了解各个领域的方法应用,视野才不会被局限. 今天试图再用一个实例给到大家一个统一的预测模型的做法框 ...

  7. R数据分析:生存分析的列线图的理解与绘制详细教程

    列线图作为一个非常简单明了的临床辅助决策工具,在临床中用的(发文章的)还是比较多的,尤其是肿瘤预后: Nomograms are widely used for cancer prognosis, p ...

  8. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  9. 【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 在本文中,作者引出了"外部数据"这一概 ...

  10. Python相关分析—一个金融场景的案例实操

    哲学告诉我们:世界是一个普遍联系的有机整体,现象之间客观上存在着某种有机联系,一种现象的发展变化,必然受与之关联的其他现象发展变化的制约与影响,在统计学中,这种依存关系可以分为相关关系和回归函数关系两 ...

随机推荐

  1. cobalt strike安装教程

    将本地IP和密码填入:./teamserver 192.168.xx.xx 密码 启动成功

  2. Win11本地部署FaceFusion3最强AI换脸,集成Tensorrt10.4推理加速,让甜品显卡也能发挥生产力

    FaceFusion3.0.0大抵是现在最强的AI换脸项目,分享一下如何在Win11系统,基于最新的cuda12.6配合最新的cudnn9.4本地部署FaceFusion3.0.0项目,并且搭配Ten ...

  3. .net 调用 nsfwjs 进行视频鉴别

    1. npm 安装 nsfwjs npm install express --save npm install multer --save npm install jpeg-js --save npm ...

  4. Android MTP流程

    概要 本文的目的是介绍Android系统中MTP的一些相关知识.主要的内容包括:第1部分 MTP简介 对Mtp协议进行简单的介绍.第2部分 MTP框架 介绍Android系统下MTP的框架.第3部分 ...

  5. 把数字转换RMB形式

    方法1 : var str = '12345679' let strNew = str.replace(/\B(?=(?:\d{3})+\b)/g, ',') // 匹配单词边界替换为逗号 方法2: ...

  6. 谈谈 keep-alive 组件,以及它们的实现原理

    keep-alive 组件的使用场景: 我们切换 2 个组件的时候,2个组件会轮流被销毁创建,但是现在需求,切换到一个组件,另一个组件不会别销毁,会保留原来的状态 :就要使用 vue 内置的组件 ke ...

  7. KubeSphere 社区双周报|2024.03.15-03.29

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  8. KubeSphere 社区征稿说明

    KubeSphere 社区一直致力于云原生技术的布道工作.通过组织线下 Meetup,线上的定期技术直播,KubeSphere 社区输出了颇多精彩的技术分享内容.此外,社区还产出了多篇优质的技术文章, ...

  9. OpenGL with GLFW GLAD and CMAKE

    0. 前言 首先,无论是在youtube还是网站上,许多OpenGL的环境配置都是在VS studio里配置的,个人比较喜欢使用VS code,以及Cmake. 下文给出了一个Cmake版本关于 GL ...

  10. NDT论文翻译

    The Normal Distributions Transform: A New Approach to Laser Scan Matching 正态分布变换:激光扫描匹配的新方法 摘要:匹配 2D ...