如何计算 R 中的 AUC(曲线下面积)?
在本文中,我们将讨论如何在 R 编程语言中计算 ROC(接收器操作特征)曲线的 AUC(曲线下面积)。
ROC(接收器操作特征)曲线帮助我们可视化基于某些模型的预测的真阳性率或真阴性率。这有助于我们评估回归模型对数据的拟合程度。此 ROC 曲线的 AUC(曲线下面积)有助于我们确定模型的特异性和敏感性。 AUC 值越接近 1,给定模型与数据的拟合越好。
要在 R 语言中创建 ROC(接收器操作特性)曲线对象,我们使用 pROC 包库的 roc()函数。 pROC 是一个 R 语言包,用于显示和分析 ROC 曲线。 roc()函数将实际值和预测值作为参数,并返回一个 ROC 曲线对象作为结果。然后,为了找到该曲线的 AUC(曲线下面积),我们使用 auc()函数。 auc()函数将 roc 对象作为参数,并返回该 roc 曲线下的面积。
Syntax:
roc_object <- roc( response, prediction )
Parameters:
- response: determines the vector that contains the actual data.
- prediction: determines the vector that contains the data predicted by our model.
示例 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