Como calcular auc (área sob a curva) em r
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. Isso também é chamado de “taxa positiva verdadeira”.
- Especificidade: a probabilidade de o modelo prever um resultado negativo para uma observação quando o resultado é realmente negativo. Isso também é chamado de “taxa verdadeiramente negativa”.
Uma maneira de visualizar essas duas medições é criar uma curva ROC , que significa curva “característica operacional do receptor”.
Este é um gráfico que exibe a sensibilidade ao longo do eixo y e (1 – especificidade) ao longo do eixo x. Uma forma de quantificar a eficácia do modelo de regressão logística na classificação dos dados é calcular a AUC , que significa “área sob a curva”.
Quanto mais próximo o AUC estiver de 1, melhor será o modelo.
O exemplo passo a passo a seguir mostra como calcular a AUC para um modelo de regressão logística em R.
Etapa 1: carregar dados
Primeiro, carregaremos o conjunto de dados padrão do pacote ISLR , que contém informações sobre se várias pessoas deixaram de pagar um empréstimo ou não.
#load dataset data <- ISLR::Default #view first six rows of dataset head(data) default student balance income 1 No No 729.5265 44361.625 2 No Yes 817.1804 12106.135 3 No No 1073.5492 31767.139 4 No No 529.2506 35704.494 5 No No 785.6559 38463.496 6 No Yes 919.5885 7491.559
Passo 2: Ajustar o modelo de regressão logística
A seguir, ajustaremos um modelo de regressão logística para prever a probabilidade de um indivíduo entrar em default:
#make this example reproducible set. seeds (1) #Use 70% of dataset as training set and remaining 30% as testing set 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 model <- glm(default~student+balance+income, family=" binomial ", data=train)
Etapa 3: Calcular o modelo AUC
A seguir, usaremos a função auc() do pacote pROC para calcular a AUC do modelo. Esta função usa a seguinte sintaxe:
nenhum(resposta, prevista)
Veja como usar esta função em nosso exemplo:
#calculate probability of default for each individual in test dataset predicted <- predict(model, test, type=" response ") #calculate AUC library (pROC) auc(test$default, predicted) Setting levels: control = No, case = Yes Setting direction: controls < boxes Area under the curve: 0.9437
A AUC do modelo é 0,9437 .
Uma vez que este valor está próximo de 1, isto indica que o modelo está a fazer um trabalho muito bom ao prever se um indivíduo irá ou não incumprir o seu empréstimo.