📜  如何计算 R 中的 AUC(曲线下面积)?

📅  最后修改于: 2022-05-13 01:55:00.287000             🧑  作者: Mango

如何计算 R 中的 AUC(曲线下面积)?

在本文中,我们将讨论如何在 R 编程语言中计算 ROC(接收器操作特征)曲线的 AUC(曲线下面积)。

ROC(接收器操作特征)曲线帮助我们可视化基于某些模型的预测的真阳性率或真阴性率。这有助于我们评估回归模型对数据的拟合程度。此 ROC 曲线的 AUC(曲线下面积)有助于我们确定模型的特异性和敏感性。 AUC 值越接近 1,给定模型与数据的拟合越好。

要在 R 语言中创建 ROC(接收器操作特性)曲线对象,我们使用 pROC 包库的 roc()函数。 pROC 是一个 R 语言包,用于显示和分析 ROC 曲线。 roc()函数将实际值和预测值作为参数,并返回一个 ROC 曲线对象作为结果。然后,为了找到该曲线的 AUC(曲线下面积),我们使用 auc()函数。 auc()函数将 roc 对象作为参数,并返回该 roc 曲线下的面积。

示例 1:

逻辑回归模型的 ROC 曲线下面积。

R
# load library pCOR
library(pROC)
 
# sample data frame
df_train <- data.frame( x= c(1,2,3,4,5),
                  y= c(1,5,8,15,26),
                  z=c(0,1,1,0,0))
df_test <- data.frame( x= c(6,7,8),
                  y= c(38,45,72),
                  z=c(0,1,0))
   
# fit logistic model
model <- glm(z ~ x+y, data=df_train)
 
# predicted data
prediction <- predict(model, df_test, type="response")
 
# create roc curve
roc_object <- roc( df_test$z, prediction)
 
# calculate area under curve
auc( roc_object )


R
# load library pROC
library(pROC)
 
# create sample_data
var1 <- c(1, 1, 1, 1, 0, 1, 1, 0, 1, 0,
          1, 0, 1, 0, 0, 1, 0, 0, 0, 0)
 
# create prediction using seq_along()
prediction <- rev(seq_along(var1))
 
# print area under curve
auc( var1, prediction)


输出:

Setting levels: control = 0, case = 1
Setting direction: controls < cases
Area under the curve: 0.5

示例 2:

转速序列模型的 ROC 曲线下面积。

R

# load library pROC
library(pROC)
 
# create sample_data
var1 <- c(1, 1, 1, 1, 0, 1, 1, 0, 1, 0,
          1, 0, 1, 0, 0, 1, 0, 0, 0, 0)
 
# create prediction using seq_along()
prediction <- rev(seq_along(var1))
 
# print area under curve
auc( var1, prediction)

输出:

Setting levels: control = 0, case = 1
Setting direction: controls < cases
Area under the curve: 0.83