# Datensatz einlesen, fehlende Werte entfernen, Variablen umbenennen
Titanic <- read.csv2("Titanic.csv")
Titanic <- Titanic[complete.cases(Titanic), ]
names(Titanic) <- c("Befoerderungsklasse", "Ueberlebt", "Geschlecht", "Alter", 
  "Geschwister_Partner", "Eltern_Kinder")
Titanic$Befoerderungsklasse <- factor(Titanic$Befoerderungsklasse, 
  levels = c("1st", "2nd", "3rd"), labels = c("1.", "2.", "3."))
Titanic$Ueberlebt <- factor(Titanic$Ueberlebt, levels = c("died", "survived"), 
  labels = c("Tod", "Leben"))
Titanic$Geschlecht <- factor(Titanic$Geschlecht, levels = c("female", "male"), 
  labels = c("weiblich", "maennlich"))
# Paket laden
library(mlr3verse) 
# Task erstellen
Titanic_task <- as_task_classif(Titanic, id = "titanic", target = "Ueberlebt",
  positive = "Leben")
# Learner definieren
lasso <- as_learner(po("encode", method = "treatment") %>>%
    lrn("classif.cv_glmnet", predict_type = "prob"))
# Lasso trainieren und Modell extrahieren
set.seed(2)
lasso$train(Titanic_task)
lasso_model <- lasso$model$classif.cv_glmnet$modelZusatzmaterial: Interpretation Wahrscheinlichkeiten, Odds, Log-Odds im Rahmen der Logistischen Regression (mit und ohne Lasso Regularisierung)
Auf Wunsch hier nochmal eine Ergänzung zur Interpretation von Wahrscheinlichkeiten, Odds und Log-Odds in der logistischen Regression (mit oder ohne LASSO Regularisierung). Wir verwenden dazu erneut den Modelloutput des Lasso Modells anhand des Titanic Beispiels aus dem vorherigen Übungsblatt:
Wiederholung von Modellgleichung, Odds und Log-Odds in der logistischen Regression
Wahrscheinlichkeit dafür, dass die AV den Wert 1 annimmt:
\[P(Y = 1 | X_1, X_2) = \frac{exp(\beta_0 + \beta_1 \cdot X_1 + \beta_2 \cdot X_2)}{1 + exp(\beta_0 + \beta_1 \cdot X_1 + \beta_2 \cdot X_2)}\]
Odds dafür, dass die AV den Wert 1 annimmt:
\[\frac{P(Y = 1 | X_1, X_2)}{P(Y = 0 | X_1, X_2)} = \frac{P(Y = 1 | X_1, X_2)}{1 - P(Y = 1 | X_1, X_2)} = exp(\beta_0 + \beta_1 \cdot X_1 + \beta_2 \cdot X_2)\]
Log-Odds dafür, dass die AV den Wert 1 annimmt:
\[ln\left(\frac{P(Y = 1 | X_1, X_2)}{P(Y = 0 | X_1, X_2)}\right) = \beta_0 + \beta_1 \cdot X_1 + \beta_2 \cdot X_2\]
R Funktionen zur Berechnung von Wahrscheinlichkeit und Odds mit R
Im folgenden R Code nennen wir den linearen Teil der Modellgleichung \(\eta\) (“eta”):
\[\eta = \beta_0 + \beta_1 \cdot X_1 + \beta_2 \cdot X_2\]
prob <- function(eta) {
  exp(eta) / (1 + exp(eta))
}
odds <- function(eta) {
  prob <- exp(eta) / (1 + exp(eta))
  prob / (1 - prob)
}Interpretation des Schätzwerts für den Koeffizient Geschlechtmaennlich:
Parameterschätzungen Lasso:
coef(lasso_model)7 x 1 sparse Matrix of class "dgCMatrix"
                                s1
(Intercept)             1.89536907
Alter                  -0.01089698
Eltern_Kinder           .         
Geschwister_Partner    -0.02865026
Befoerderungsklasse.2. -0.31556068
Befoerderungsklasse.3. -1.20997024
Geschlecht.maennlich   -2.14619130LogOdds-Interpretation:
Die erwarteten Log-Odds das Titanic Unglück zu überleben sind im Mittel um -2.15 höher, wenn es sich bei einer Person um einen Mann handelt, als wenn es sich um eine Frau handelt (und alle anderen Prädiktoren konstant bleiben).
Odds-Interpretation:
Die erwarteten Odds das Titanic Unglück zu überleben sind im Mittel um den Faktor exp(-2.15) höher, wenn es sich bei einer Person um einen Mann handelt, als wenn es sich um eine Frau handelt (und alle anderen Prädiktoren konstant bleiben).
Veranschaulichung der Interpretationen anhand der fiktiven Person Charlie: 30 Jahre alt, reist alleine, 1. Klasse
Log-Odds:
Welche Log-Odds erwarten wir, falls Charlie ein Mann ist?
1.895 - 0.011 * 30 - 2.146 * 1[1] -0.581Welche Log-Odds erwarten wir, falls Charlie eine Frau ist?
1.895 - 0.011 * 30 - 2.146 * 0[1] 1.565Was sagt der Interpretationssatz darüber aus, wie diese beiden Werte zusammenhängen?
\(LogOdds_{Mann} = LogOdds_{Frau} + \beta_{Geschlechtmaennlich}\)
(1.895 - 0.011 * 30 - 2.146 * 0) + (-2.146)[1] -0.581Das ist genau das, was auch herauskommt!
Odds:
Welche Odds erwarten wir, falls Charlie ein Mann ist?
odds(1.895 - 0.011 * 30 - 2.146 * 1)[1] 0.5593387Welche Odds erwarten wir, falls Charlie eine Frau ist?
odds(1.895 - 0.011 * 30 - 2.146 * 0)[1] 4.782675Was sagt der Interpretationssatz darüber aus, wie diese beiden Werte zusammenhängen?
\(Odds_{Mann} = Odds_{Frau} \cdot exp(\beta_{Geschlechtmaennlich})\)
odds(1.895 - 0.011 * 30 - 2.146 * 0) * exp(-2.146)[1] 0.5593387Das ist genau das, was auch herauskommt!
Wahrscheinlichkeit:
Um wieviel höher ist die Wahrscheinlichkeit für Charlie das Titanic Unglück zu überleben falls Charlie eine Frau ist, im Vergleich dazu, dass Charlie ein Mann ist?
Anders ausgedrückt, wie hoch ist
\(Prob_{Frau} - Prob_{Mann}\)
prob(1.895 - 0.011 * 30 - 2.146 * 0) - 
  prob(1.895 - 0.011 * 30 - 2.146 * 1)[1] 0.4683671Diese Differenz ist (anders als bei der linearen Regression) nicht konstant, sondern hängt davon ab, welche Werte auf den anderen Prädiktoren vorliegen.
Würde Charlie zum Beispiel 3. Klasse reisen (anstatt wie bisher 1. Klasse), um wieviel höher wäre dann die Wahrscheinlichkeit das Titanic Unglück zu überleben falls Charlie eine Frau ist, im Vergleich dazu, dass Charlie ein Mann ist?
prob(1.895 - 0.011 * 30 - 2.146 * 0 - 1.210 * 1) - 
  prob(1.895 - 0.011 * 30 - 2.146 * 1 - 1.210 * 1)[1] 0.4448794Interpretation der Höhe von Odds und Log-Odds
Um ein Gefühl dafür zu bekommen, welchen Wahrscheinlichkeiten bestimmte Odds bzw. Log-Odds entsprechen (und umgekehrt), macht es Sinn, verschiedene Werte in die eine und andere Richtung umzurechnen.
Funktionen zur Umrechnung in R:
prob2odds <- function(prob) {
  prob / (1 - prob)
}
odds2prob <- function(odds) {
  odds / (1 + odds)
}
prob2logodds <- function(prob) {
  log(prob / (1 - prob))
}
logodds2prob <- function(logodds) {
  exp(logodds) / (1 + exp(logodds))
}Log-Odds liegen meist zwischen -3 und 3. Lodds-Odds kleiner als -3 bzw. größer als +3 stehen für Wahrscheinlichkeiten sehr nahe an 0 bzw. 1:
logodds2prob(-3)[1] 0.04742587logodds2prob(-2)[1] 0.1192029logodds2prob(-1)[1] 0.2689414logodds2prob(0)[1] 0.5logodds2prob(1)[1] 0.7310586logodds2prob(2)[1] 0.8807971logodds2prob(3)[1] 0.9525741Odds sind intuitiv für Personen, die regelmäßig Pokern, Sportwetten, oder anderes Glücksspiel betreiben. Für den Rest von uns eher weniger…
odds2prob(1/10)[1] 0.09090909odds2prob(1/5)[1] 0.1666667odds2prob(1/3)[1] 0.25odds2prob(1/1)[1] 0.5odds2prob(3/1)[1] 0.75odds2prob(5/1)[1] 0.8333333odds2prob(10/1)[1] 0.9090909