R语言 如何计算AUC(曲线下面积)
在这篇文章中,我们将讨论如何在R编程语言中计算ROC(接收者操作特征)曲线的AUC(曲线下面积)。
ROC(接收者操作特征) 曲线帮助我们直观地看到基于某种模型的预测的真阳率或真阴率。这有助于我们评估一个回归模型对数据的适应程度。该ROC曲线的AUC(曲线下面积)帮助我们确定该模型的特异性和敏感性。AUC值越接近1,说明给定模型对数据的拟合程度越高。
为了在R语言中创建ROC(Receiver Operating Characteristic)曲线对象,我们使用pROC包库的roc()函数。pROC是一个用于显示和分析ROC曲线的R语言包。roc()函数将实际值和预测值作为参数,并返回一个ROC曲线对象作为结果。然后,为了找到该曲线的AUC(曲线下面积),我们使用auc()函数。auc()函数将ROC对象作为一个参数,并返回该ROC曲线的曲线下面积。
语法 。
roc_object <- roc( response, prediction )
参数 。
- response: 决定了包含实际数据的向量。
- prediction: 确定包含由我们的模型预测的数据的向量。
例1 :
一个逻辑回归模型的ROC曲线下的面积。
# 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 )
输出 。
Setting levels: control = 0, case = 1
Setting direction: controls < cases
Area under the curve: 0.5
例2 :
一个rev序列模型的ROC曲线下的面积。
# 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