R语言 如何计算AUC(曲线下面积)

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程