Como traçar uma curva roc usando ggplot2 (com exemplos)


A regressão logística é um método estatístico que usamos para ajustar um modelo de regressão quando a variável de resposta é binária. Para avaliar quão bem um modelo de regressão logística se ajusta a um conjunto de dados, podemos observar as duas métricas a seguir:

  • Sensibilidade: probabilidade de o modelo prever um resultado positivo para uma observação quando o resultado é realmente positivo.
  • Especificidade: a probabilidade de o modelo prever um resultado negativo para uma observação quando o resultado é realmente negativo.

Uma maneira simples de visualizar essas duas métricas é criar uma curva ROC , que é um gráfico que mostra a sensibilidade e a especificidade de um modelo de regressão logística.

Este tutorial explica como criar e interpretar uma curva ROC em R usando o pacote de visualização ggplot2.

Exemplo: curva ROC usando ggplot2

Suponha que ajustemos o seguinte modelo de regressão logística em R:

 #load Default dataset from ISLR book
data <- ISLR::Default

#divide dataset into training and test set
set.seed(1)
sample <- sample(c( TRUE , FALSE ), nrow (data), replace = TRUE , prob =c(0.7,0.3))
train <- data[sample, ]
test <- data[!sample, ]

#fit logistic regression model to training set
model <- glm(default~student+balance+income, family=" binomial ", data=train)

#use model to make predictions on test set
predicted <- predict(model, test, type=" response ")

Para visualizar o desempenho do modelo de regressão logística no conjunto de teste, podemos criar um gráfico ROC usando a função ggroc() do pacote pROC :

 #load necessary packages
library (ggplot2)
library (pROC)

#define object to plot
rocobj <- roc(test$default, predicted)

#create ROC plot
ggroc(rocobj) 

Curva ROC em ggplot2

O eixo y exibe a sensibilidade (a taxa verdadeiramente positiva) do modelo e o eixo x exibe a especificidade (a taxa verdadeiramente negativa) do modelo.

Observe que podemos adicionar estilo ao gráfico e também fornecer um título contendo a AUC (área sob a curva) do gráfico:

 #load necessary packages
library (ggplot2)
library (pROC)

#define object to plot and calculate AUC
rocobj <- roc(test$default, predicted)
auc <- round (auc(test$default, predicted), 4 )

#create ROC plot
ggroc(rocobj, color = ' steelblue ', size = 2 ) +
  ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) 

Curva ROC com AUC em ggplot2

Observe que você também pode modificar o tema da trama:

 #create ROC plot with minimal theme
ggroc(rocobj, color = ' steelblue ', size = 2 ) +
  ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) +
  theme_minimal() 

Curva ROC em R usando ggplot2

Consulte este artigo para obter um guia com os melhores temas do ggplot2.

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *