Vergleich von Link-Funktionen für einen gegebenen Cut-off
In dieser letzten Übung passt du jeweils ein Modell mit den drei Link-Funktionen (logit, probit und cloglog) an, erstellst Vorhersagen für den Test-Set, klassifizierst die Vorhersagen für einen gegebenen Cut-off in die passende Gruppe (Default versus Non-Default), erstellst eine Konfusionsmatrix und berechnest für jedes Modell die Genauigkeit und Sensitivität beim gewählten Cut-off-Wert! Wow, du hast schon eine Menge gelernt. Und zum Schluss versuchst du das Modell zu identifizieren, das in Bezug auf die Genauigkeit beim gegebenen Cut-off am besten abschneidet!
Wichtig: Die Unterschiede zwischen den Modellen sind in der Regel sehr klein, und die Ergebnisse hängen erneut vom gewählten Cut-off-Wert ab. Das beobachtete Ergebnis (Default versus Non-Default) ist in der Konsole in true_val gespeichert.
Diese Übung ist Teil des Kurses
<Kurs>Kreditrisikomodellierung in R</Kurs>Übungsanweisungen
- Passe drei logistische Regressionsmodelle mit den Links
logit,probitundcloglogan. Ein Teil des Codes ist vorgegeben. Verwendeage,emp_cat,ir_catundloan_amntals Prädiktoren. - Erstelle Vorhersagen für alle Modelle mit dem
test_set. - Verwende einen Cut-off-Wert von 14 %, um für jedes Modell Klassenvorhersagen zu treffen, sodass die Performance bewertet werden kann.
- Erstelle eine Konfusionsmatrix für die drei Modelle.
- Berechne abschließend die Klassifikationsgenauigkeit für alle drei Modelle.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Fit the logit, probit and cloglog-link logistic regression models
log_model_logit <- glm(loan_status ~ age + emp_cat + ir_cat + loan_amnt,
family = binomial(link = logit), data = training_set)
log_model_probit <-
log_model_cloglog <-
# Make predictions for all models using the test set
predictions_logit <- predict(log_model_logit, newdata = test_set, type = "response")
predictions_probit <-
predictions_cloglog <-
# Use a cut-off of 14% to make binary predictions-vectors
cutoff <- 0.14
class_pred_logit <- ifelse(predictions_logit > cutoff, 1, 0)
class_pred_probit <-
class_pred_cloglog <-
# Make a confusion matrix for the three models
tab_class_logit <- table(true_val,class_pred_logit)
tab_class_probit <-
tab_class_cloglog <-
# Compute the classification accuracy for all three models
acc_logit <- sum(diag(tab_class_logit)) / nrow(test_set)
acc_probit <-
acc_cloglog <-