R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例

liftword4个月前 (01-11)技术文章20

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

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')

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

小结

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

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

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、模型构建,科研统计设计等发愁,如果你在使用SPSS, R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #Reports, #Composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

加油吧,打工人!

往期精彩

R数据分析:Lasso回归筛选变量构建Cox模型并绘制列线图

R数据分析:嵌套数据分析为什么要用加随机效应?终于解释清楚了

R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

R数据分析:PLS结构方程模型介绍,论文报告方法和实际操作

R机器学习:分类算法之logistics回归分类器的原理和实现

R数据分析:如何做数据的非线性关系,多项式回归的做法和解释

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

R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

R数据分析:广义估计方程式GEE的做法和解释

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

R数据分析:如何简洁高效地展示统计结果

R数据分析:如何给结构方程画路径图,tidySEM包详解

R数据分析:生存分析与有竞争事件的生存分析的做法和解释

R数据分析:cox模型如何做预测,高分文章复现

R数据分析:双连续变量交互作用的简单斜率图作图及解释

R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍

R机器学习:朴素贝叶斯与支持向量机的原理与实现

R数据分析:潜变量与降维方法(主成分分析与因子分析)

R数据分析:如何用lavaan包做结构方程模型,实例解析

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

相关文章

【Python机器学习系列】拟合和回归傻傻分不清?一文带你彻底搞懂

一、拟合和回归的区别拟合并不特指某一种方法,指的是对一些数据,按其规律方程化,比如把平面(一元)上一系列的离散点,用一条直线(线性)或光滑的曲线(非线性)连接起来,而其方程化的方法有很多,回归分析(r...

Python数学建模系列(四):数值逼近

若文中数学公式显示有问题 可查看文章原文Python数学建模系列(四):数值逼近菜鸟学习记:第四十二天1. 一维插值插值:求过已知有限个数据点的近似函数。插值函数经过样本点,拟合函数一般基于最小二乘法...

数据分析-对数回归分析Python

昨天开始回归系列的第一篇,是最简单的一元线性回归。除了线形关系,还有各种非线性关系,比如指数关系、对数关系、多项式关系,这些都要使用对相应的数据变换后才能进行分析。今天就从对数分析开始,来进行演示说明...