¿Cómo calcular el AUC (área bajo la curva) en R?

En este artículo, analizaremos cómo calcular el AUC (área bajo la curva) de la curva ROC (característica operativa del receptor) en el lenguaje de programación R.

La curva ROC (Receiver Operating Characteristic) nos ayuda a visualizar la tasa positiva verdadera o la tasa negativa verdadera de una predicción basada en algún modelo. Esto nos ayuda a evaluar qué tan bien se ha ajustado un modelo de regresión a los datos. El AUC (Area under Curve) de esta curva ROC nos ayuda a determinar la especificidad y sensibilidad del modelo. Cuanto más cerca esté el valor de AUC de 1, mejor se ajustará el modelo dado a los datos.

Para crear el objeto de curva ROC (Receiver Operating Characteristic) en el lenguaje R, usamos la función roc() de la biblioteca del paquete pROC. El pROC es un paquete de lenguaje R para mostrar y analizar curvas ROC. La función roc() toma el valor real y predicho como argumento y devuelve un objeto de curva ROC como resultado. Luego, para encontrar el AUC (Área bajo la Curva) de esa curva, usamos la función auc(). La función auc() toma el objeto roc como argumento y devuelve el área bajo la curva de esa curva roc.

Sintaxis:

roc_object <- roc(respuesta, predicción)

Parámetros:

  • respuesta: determina el vector que contiene los datos reales.
  • predicción: determina el vector que contiene los datos predichos por nuestro modelo.

Ejemplo 1:

El área bajo la curva ROC de un modelo de regresión logística.

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 )

Producción:

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

Ejemplo 2:

El área bajo la curva ROC de un modelo de secuencia de revoluciones.

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)

Producción:

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

Publicación traducida automáticamente

Artículo escrito por mishrapriyank17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *