Hoe de auc (oppervlakte onder de curve) in r te berekenen
Logistische regressie is een statistische methode die we gebruiken om een regressiemodel te fitten wanneer de responsvariabele binair is. Om te evalueren hoe goed een logistisch regressiemodel bij een dataset past, kunnen we naar de volgende twee statistieken kijken:
- Gevoeligheid: waarschijnlijkheid dat het model een positief resultaat voorspelt voor een waarneming terwijl het resultaat daadwerkelijk positief is. Dit wordt ook wel het “echte positieve percentage” genoemd.
- Specificiteit: de kans dat het model een negatief resultaat voorspelt voor een waarneming terwijl het resultaat feitelijk negatief is. Dit wordt ook wel het ‘echte negatieve tarief’ genoemd.
Eén manier om deze twee metingen te visualiseren is door een ROC-curve te maken, wat staat voor ‘receiver operating karakteristieke’-curve.
Dit is een grafiek die de gevoeligheid langs de y-as en (1 – specificiteit) langs de x-as weergeeft. Eén manier om de effectiviteit van het logistische regressiemodel bij het classificeren van gegevens te kwantificeren is door de AUC te berekenen, wat staat voor ‚area under the curve‘.
Hoe dichter de AUC bij 1 ligt, hoe beter het model.
Het volgende stapsgewijze voorbeeld laat zien hoe u de AUC voor een logistisch regressiemodel in R kunt berekenen.
Stap 1: Gegevens laden
Eerst laden we de standaarddataset uit het ISLR- pakket, die informatie bevat over de vraag of verschillende mensen al dan niet in gebreke zijn gebleven bij het betalen van een lening.
#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
Stap 2: Pas het logistische regressiemodel aan
Vervolgens passen we een logistisch regressiemodel toe om de waarschijnlijkheid te voorspellen dat een individu in gebreke blijft:
#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)
Stap 3: Bereken model-AUC
Vervolgens zullen we de functie auc() uit het pROC- pakket gebruiken om de AUC van het model te berekenen. Deze functie gebruikt de volgende syntaxis:
geen (antwoord, voorspeld)
Zo gebruikt u deze functie in ons voorbeeld:
#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
De AUC van het model blijkt 0,9437 te zijn.
Omdat deze waarde dicht bij 1 ligt, geeft dit aan dat het model heel goed kan voorspellen of een individu wel of niet in gebreke zal blijven met zijn lening.