首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >多指标联合诊断的ROC曲线

多指标联合诊断的ROC曲线

作者头像
医学和生信笔记
发布2023-02-14 17:26:09
发布2023-02-14 17:26:09
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

关于ROC曲线,前前后后写了很多篇推文,关于二分类数据和生存资料的都有,目前只有多指标联合诊断的ROC曲线还没介绍了,今天就介绍多指标联合诊断的ROC曲线

准备数据

代码语言:javascript
代码运行次数:0
运行
复制
library(pROC)

data(aSAH)
str(aSAH)
## 'data.frame': 113 obs. of  7 variables:
##  $ gos6   : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 5 5 5 5 1 1 4 1 5 4 ...
##  $ outcome: Factor w/ 2 levels "Good","Poor": 1 1 1 1 2 2 1 2 1 1 ...
##  $ gender : Factor w/ 2 levels "Male","Female": 2 2 2 2 2 1 1 1 2 2 ...
##  $ age    : int  42 37 42 27 42 48 57 41 49 75 ...
##  $ wfns   : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 1 1 1 1 3 2 5 4 1 2 ...
##  $ s100b  : num  0.13 0.14 0.1 0.04 0.13 0.1 0.47 0.16 0.18 0.1 ...
##  $ ndka   : num  3.01 8.54 8.09 10.42 17.4 ...

其中outcome是结果变量,是二分类的,其余列是预测变量。

多指标联合诊断的ROC

假如现在我想使用s100b/ndka/age这3个变量来预测结果,该如何画出这3个变量联合诊断的ROC曲线呢?

首先,使用这3个变量建立逻辑回归:

代码语言:javascript
代码运行次数:0
运行
复制
f <- glm(outcome ~ s100b + ndka + age, data = aSAH, family = binomial())

然后,计算逻辑回归给出的概率:

代码语言:javascript
代码运行次数:0
运行
复制
# 等价于直接使用 f$fitted
pred <- predict(f, newdata = aSAH, type = "response")

aSAH$pred <- pred

用这个pred就可以画ROC曲线了,这个就是多指标联合诊断的ROC曲线。

代码语言:javascript
代码运行次数:0
运行
复制
library(yardstick)

roc_curve(aSAH, truth = outcome, estimate=pred,event_level = "second") |> 
  autoplot()

测试集怎么办?

很简单,只要把predict中的数据集换成测试集即可:

代码语言:javascript
代码运行次数:0
运行
复制
# 换成测试集即可
pred <- predict(f, newdata = 你的测试集, type = "response")

剩下的就都一样了!


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 医学和生信笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备数据
  • 多指标联合诊断的ROC
  • 测试集怎么办?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档