Zusatzmaterial: Interpretation Wahrscheinlichkeiten, Odds, Log-Odds im Rahmen der Logistischen Regression (mit und ohne Lasso Regularisierung)

Veröffentlichungsdatum

7. November 2024

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:

# 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$model

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.14619130

LogOdds-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.581

Welche Log-Odds erwarten wir, falls Charlie eine Frau ist?

1.895 - 0.011 * 30 - 2.146 * 0
[1] 1.565

Was 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.581

Das 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.5593387

Welche Odds erwarten wir, falls Charlie eine Frau ist?

odds(1.895 - 0.011 * 30 - 2.146 * 0)
[1] 4.782675

Was 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.5593387

Das 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.4683671

Diese 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.4448794

Interpretation 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.04742587
logodds2prob(-2)
[1] 0.1192029
logodds2prob(-1)
[1] 0.2689414
logodds2prob(0)
[1] 0.5
logodds2prob(1)
[1] 0.7310586
logodds2prob(2)
[1] 0.8807971
logodds2prob(3)
[1] 0.9525741

Odds 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.09090909
odds2prob(1/5)
[1] 0.1666667
odds2prob(1/3)
[1] 0.25
odds2prob(1/1)
[1] 0.5
odds2prob(3/1)
[1] 0.75
odds2prob(5/1)
[1] 0.8333333
odds2prob(10/1)
[1] 0.9090909