多指标联合诊断的ROC曲线

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

准备数据

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个变量建立逻辑回归:

f <- glm(outcome ~ s100b + ndka + age, data = aSAH, family = binomial())

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

# 等价于直接使用 f$fitted
pred <- predict(f, newdata = aSAH, type = "response")

aSAH$pred <- pred

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

library(yardstick)

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

测试集怎么办?

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

# 换成测试集即可
pred <- predict(f, newdata = 你的测试集, type = "response")

剩下的就都一样了!

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
指标联合ROC曲线是一种评估分类模型综合性能的方法,可以比较不同分类模型在多个指标上的优劣。下面是一个用R语言实现多指标联合ROC曲线的方法: 首先,我们需要加载一些必要的R包,如“pROC”和“ROCR”,这些包提供了计算和绘制ROC曲线所需的函数。 ```R library(pROC) library(ROCR) ``` 然后,我们需要准备一个包含模型预测概率和真实标签的数据集。假设我们有一个名为“data”的数据集,其中包含两列:“prob”是模型预测概率的列,“label”是真实标签的列。 ```R data <- data.frame(prob = c(0.8, 0.6, 0.3, 0.5, 0.7), label = c(1, 0, 1, 0, 1)) ``` 接下来,我们可以使用“roc”函数计算模型的ROC曲线的多个指标。这个函数将输出一个包含不同指标ROC曲线对象。“roc”函数的第一个参数是真实标签的向量,“predictor”参数是模型概率的向量。 ```R roc_obj <- roc(data$label, data$prob, levels = rev(levels(as.factor(data$label)))) # 计算不同指标 auc_value <- auc(roc_obj) # 计算AUC sens_value <- roc_obj$sensitivities # 计算灵敏度 spec_value <- 1 - roc_obj$specificities # 计算特异度 ``` 此时,“auc_value”变量将包含计算得到的AUC值,而“sens_value”和“spec_value”变量则分别包含了不同阈值下的灵敏度和特异度值。 最后,我们可以使用“plot”函数将多个指标ROC曲线绘制出来。 ```R plot(roc_obj, col = "blue") # 绘制ROC曲线 lines(spec_value, sens_value, type = "b", col = "red") # 绘制灵敏度-特异度曲线 legend("bottomright", legend = c("ROC Curve", "Sensitivity-Specificity Curve"), col = c("blue", "red"), lty = 1) ``` 以上是使用R语言实现多指标联合ROC曲线的基本步骤。你可以根据需要进行进一步的探索和调整,以满足具体任务的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值