Come calcolare l'auc (area sotto la curva) in r
La regressione logistica è un metodo statistico che utilizziamo per adattare un modello di regressione quando la variabile di risposta è binaria. Per valutare quanto bene un modello di regressione logistica si adatta a un set di dati, possiamo esaminare i due parametri seguenti:
- Sensibilità: probabilità che il modello preveda un risultato positivo per un’osservazione quando il risultato è effettivamente positivo. Questo è anche chiamato il “vero tasso positivo”.
- Specificità: la probabilità che il modello preveda un risultato negativo per un’osservazione quando il risultato è effettivamente negativo. Questo è anche chiamato “vero tasso negativo”.
Un modo per visualizzare queste due misurazioni è creare una curva ROC , che sta per curva “caratteristica operativa del ricevitore”.
Questo è un grafico che mostra la sensibilità lungo l’asse y e (1 – specificità) lungo l’asse x. Un modo per quantificare l’efficacia del modello di regressione logistica nella classificazione dei dati è calcolare l’AUC , che sta per “area sotto la curva”.
Più l’AUC è vicino a 1, migliore è il modello.
Il seguente esempio passo passo mostra come calcolare l’AUC per un modello di regressione logistica in R.
Passaggio 1: caricare i dati
Innanzitutto, caricheremo il set di dati predefinito dal pacchetto ISLR , che contiene informazioni sull’eventuale inadempienza di varie persone su un prestito.
#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
Passaggio 2: adattare il modello di regressione logistica
Successivamente, adatteremo un modello di regressione logistica per prevedere la probabilità che un individuo vada in 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)
Passaggio 3: calcolare l’AUC del modello
Successivamente utilizzeremo la funzione auc() del pacchetto pROC per calcolare l’AUC del modello. Questa funzione utilizza la seguente sintassi:
nessuno(risposta, prevista)
Ecco come utilizzare questa funzione nel nostro esempio:
#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
L’AUC del modello risulta essere 0,9437 .
Poiché questo valore è vicino a 1, ciò indica che il modello sta facendo un ottimo lavoro nel prevedere se un individuo andrà in default o meno sul proprio prestito.