Weiter zum Inhalt

Annahmen der logistischen Regression: Das solltest du vor dem Modellieren prüfen

Ein praxisnaher Leitfaden zu den Annahmen hinter der logistischen Regression, den Diagnosen für Verstöße in Python und R und den Alternativen, wenn die Annahmen nicht halten.
Aktualisiert 15. Juni 2026  · 15 Min. lesen

Wenn du ein logistisches Regressionsmodell trainiert hast, woher weißt du, ob du den Koeffizienten trauen kannst?

Logistische Regression gilt als simpel. Mit scikit-learn rufst du .fit() auf, liest die Odds Ratios ab, und das war’s. Was viele Einsteiger jedoch nicht wissen: Das Modell bringt eigene Annahmen mit. Hältst du sie nicht ein, führen dich die Koeffizienten in die Irre und die Vorhersagen liegen daneben – auf eine Weise, die dir keine Metrik verrät.

Genau genommen hat die logistische Regression weniger Annahmen als die lineare Regression, und die vorhandenen sind leicht zu prüfen. Du musst nur die richtigen Diagnosen laufen lassen, bevor du das Ergebnis interpretierst, um zu wissen, welchen Teilen du trauen kannst.

In diesem Artikel führe ich dich durch jede Annahme der logistischen Regression, zeige dir, wie du sie in Python und R prüfst, was passiert, wenn sie verletzt werden, und welche Alternativen du wählen solltest, wenn die Annahmen nicht halten.

Wenn du neu in Data Science und Machine Learning bist, lies unseren Blogbeitrag zu Simple Linear Regression, um die Annahmen und Diagnosen zu verstehen.

Was ist logistische Regression?

Die logistische Regression ist ein Klassifikationsmodell, das die Wahrscheinlichkeit eines kategorialen Outcomes vorhersagt. Du gibst Prädiktoren vor und erhältst eine Zahl zwischen 0 und 1 zurück, die du als Wahrscheinlichkeit für die Zugehörigkeit zu einer bestimmten Klasse lesen kannst.

Meist wird sie für binäre Klassifikation genutzt – etwa Churn oder kein Churn, Spam oder kein Spam. Varianten wie multinomiale und ordinale logistische Regression decken mehr als zwei Klassen ab, aber wenn jemand „logistische Regression“ sagt, ist in der Regel der binäre Fall gemeint.

Unter der Haube passt das Modell eine lineare Kombination deiner Prädiktoren an und leitet das Ergebnis durch die logistische Funktion. Die Ausgabe ist eine Wahrscheinlichkeit, und die Koeffizienten zeigen, wie jeder Prädiktor die Log-Odds verschiebt.

Wichtig: Die logistische unterscheidet sich von der linearen Regression. Letztere hat vertraute Annahmen wie Normalverteilung der Residuen, Homoskedastizität und Linearität zwischen Prädiktoren und Ziel. Die logistische Regression macht diese Annahmen nicht. Sie hat ihre eigene Liste – und die ist so anders, dass dich die Übertragung der linearen Annahmen in die Irre führt.

Für mehr Details zur logistischen Regression lies unseren Blogpost zur Implementierung in Python.

Warum Annahmen bei der logistischen Regression zählen

Die Annahmen sind wichtig, weil sie direkt mit deinem Umgang mit dem Modell verknüpft sind.

Wenn du die Annahmen beachtest, bedeuten die Koeffizienten auch das, was du denkst. Die Odds Ratios sind gültig und die Wahrscheinlichkeiten des Modells spiegeln die tatsächlichen Ergebnisse gut wider. Werden Annahmen verletzt, wackelt all das – auf Arten, die dir weder eine Konfusionsmatrix noch eine andere Metrik zeigen.

Zum Glück sind Verletzungen selten binär. Eine leichte Abweichung von der Linearität-der-Logit-Annahme macht dein Modell nicht nutzlos. Sie bedeutet nur, dass Odds Ratios etwas danebenliegen und Vorhersagen schlechter sein können, als sie sein müssten. Viele Produktivmodelle leben mit unperfekten Annahme-Checks – und das ist okay.

Was du nicht willst: die Checks auslassen. Ohne Diagnosen erkennst du erst, ob es ein kleines oder großes Problem ist, wenn die Vorhersagen schiefgehen.

Überblick über die Annahmen der logistischen Regression

Bevor wir in jede Annahme einsteigen, hier die vollständige Liste, die du prüfen solltest.

Annahme Was sie fordert Übliche Diagnose
Unabhängige Beobachtungen Kein Eintrag beeinflusst einen anderen Studiendesign, Intraklassenkorrelation
Passende Zielvariable Binär oder mit der passenden Variante modelliert Ziel inspizieren
Linearität des Logits Prädiktoren linear in den Log-Odds Box-Tidwell-Test, Splines
Keine starke Multikollinearität Prädiktoren nicht stark korreliert VIF, Korrelationsmatrix
Ausreichende Stichprobengröße Genug Events pro Variable EPV-Faustregel
Keine einflussreichen Ausreißer Kein einzelner Eintrag verzerrt den Fit Cook-Distanz, Leverage

Tabelle: Annahmen der logistischen Regression

Das ist die komplette Checkliste. Im Rest des Artikels führe ich dich durch jede Annahme – mit Diagnosen in Python und R, Beispielen für Verletzungen und Maßnahmen, wenn etwas nicht passt.

Die wichtigsten Annahmen der logistischen Regression

Annahme 1: Die Zielvariable ist binär (oder passend modelliert)

Die Standard-Logit-Regression ist für ein binäres Outcome gebaut. Die Zielvariable sollte genau zwei Kategorien haben; darauf ist das Modell ausgelegt.

Klassische Beispiele sind Churn oder kein Churn, Krankheit oder keine Krankheit. Alles, was du als Ja/Nein-Frage formulieren kannst, passt gut.

Hat dein Outcome mehr als zwei Kategorien, brauchst du eine andere Variante. Multinomiale logistische Regression behandelt ungeordnete Kategorien wie Kundensegmente oder Produkttypen. Ordinale logistische Regression behandelt geordnete Kategorien wie Zufriedenheitswerte von 1 bis 5, bei denen die Reihenfolge Bedeutung hat.

Ein mehrklassiges Outcome in ein binäres Modell zu pressen, heißt meist, Kategorien zusammenzulegen, die du nicht zusammenlegen solltest. Bei fünf Zufriedenheitsstufen auf „zufrieden vs. nicht“ zu kürzen, vernichtet Information, die deinem Modell geholfen hätte. Wähle die Variante, die zur Form deines Ziels passt.

Annahme 2: Beobachtungen sind unabhängig

Jede Zeile deines Datensatzes sollte dem Modell Information liefern, die keine andere Zeile bereits liefert. Sind zwei Einträge in einer Weise verknüpft, die das verletzt, verlieren Standardfehler und p-Werte ihre Bedeutung.

Die Annahme scheitert, sobald Beobachtungen Struktur teilen, die du nicht modelliert hast. Beispiel: Wiederholte Messungen am selben Patienten – sie teilen dessen Biologie. Oder Schüler in derselben Klasse – sie teilen Lehrkraft und Raum.

Ignorierst du das und passt eine einfache logistische Regression an, behandelt das Modell jede Zeile als neue Information und reduziert die Standardfehler zu stark. Koeffizienten können oberflächlich okay aussehen, aber p-Werte und Konfidenzintervalle sind überoptimistisch.

Die Standardalternativen sind gemischte logistische Modelle (Mixed Effects) und GEE. Mixed-Effects-Modelle fügen zufällige Effekte für Gruppen (Patient, Klasse) hinzu, damit das Modell innerhalb der Gruppe korrelierte Daten berücksichtigt. GEE, kurz für Generalized Estimating Equations, liefert populationsgemittelte Effekte mit korrigierten Standardfehlern – ohne Random-Effects-Apparat.

Wähle Mixed Effects, wenn dir die Variation innerhalb der Gruppen wichtig ist. Wähle GEE, wenn du die marginalen Effekte über die Gesamtpopulation willst.

Annahme 3: Linearität des Logits

Das ist die Annahme, bei der die meisten falsch liegen.

Das Modell nimmt keine lineare Beziehung der Prädiktoren zum Outcome an. Es nimmt eine lineare Beziehung zu den Log-Odds des Outcomes an. Das ist etwas anderes – und bestimmt, was du prüfen musst.

Was der Logit ist

Der Logit ist der natürliche Logarithmus der Odds. Für eine Wahrscheinlichkeit p sind die Odds p / (1 - p), und der Logit ist der Logarithmus dieses Verhältnisses:

The logit

Der Logit

Die logistische Regression passt dann auf dieser Skala eine lineare Gleichung an:

Logistic regression formula

Formel der logistischen Regression

Die rechte Seite ist linear in den Prädiktoren. Die linke Seite sind die Log-Odds, nicht die Wahrscheinlichkeit. Die Wahrscheinlichkeit, die dich interessiert, erhältst du durch die logistische Funktion – die ist nichtlinear.

Die Beziehung zwischen einem Prädiktor und der Wahrscheinlichkeit ist also nichtlinear. Linear sollte die Beziehung zwischen Prädiktor und Log-Odds sein.

Warum das in der Praxis zählt

Hält die Linearität des Logits für einen Prädiktor nicht, fasst sein Koeffizient eine Kurve mit einer Geraden zusammen. Das Modell liefert zwar eine Zahl, und die kann statistisch signifikant sein, aber sie beschreibt nicht die tatsächliche Beziehung in deinen Daten.

Beispiel: age hat vielleicht einen U-förmigen Effekt auf die Log-Odds einer Krankheit – hohes Risiko an beiden Enden, geringeres in der Mitte. Steckst du age als linearen Term hinein, kann der Koeffizient nahe null landen und du schließt: Alter spielt keine Rolle. Tut es aber. Die Spezifikation ist falsch.

Linearity of the logit prüfen

Du hast mehrere Optionen, diese Annahme zu prüfen.

Der schnellste Check ist visuell: Bücke jeden kontinuierlichen Prädiktor in Dezile, berechne die empirischen Log-Odds je Bin und plotte sie gegen den Prädiktor. Eine grob gerade Linie heißt: Annahme hält. Eine deutliche Kurve heißt: hält nicht. Der Check ist informell, funktioniert aber gut, wenn pro Bin genug Daten liegen.

Der Box-Tidwell-Test fügt einen Interaktionsterm zwischen jedem kontinuierlichen Prädiktor und seinem natürlichen Logarithmus hinzu. Ist die Interaktion signifikant, ist die Linearität-der-Logit-Annahme für diesen Prädiktor verletzt. Der Test funktioniert nur für strikt positive Prädiktoren (Log von 0 oder negativ geht nicht) und ist – wie jeder Signifikanztest – empfindlich gegenüber der Stichprobengröße.

Splines sind eine weitere Option. Statt zu prüfen, ob Linearität hält, ersetzt du den linearen Term durch eine flexible Basisfunktion wie Restricted Cubic Splines und lässt das Modell die Form lernen. Passt der Spline deutlich besser als der lineare Term (beurteilt per Likelihood-Ratio oder AIC), ist das ein Hinweis, dass die lineare Spezifikation zu restriktiv war. Splines sind zugleich eine Lösung – sie im finalen Modell zu behalten, ist oft die beste Antwort, wenn Linearität scheitert.

Was tun, wenn Linearität scheitert

Wenn die Annahme für einen Prädiktor nicht hält, hast du zwei naheliegende Optionen:

  • Transformiere den Prädiktor (Log- oder Wurzel-Transformation hilft oft), bis die Beziehung in den Log-Odds linear aussieht
  • Nutze Splines und akzeptiere ein etwas komplexeres Modell

Beides bleibt in der Familie der logistischen Regression und ist besser, als einen tatsächlich informativen Prädiktor zu streichen.

Annahme 4: Keine starke Multikollinearität

Die logistische Regression kommt bis zu einem Punkt mit korrelierten Prädiktoren klar. Danach beginnt das Modell, sich auf Arten daneben zu benehmen, die du an keiner Metrik erkennst.

Multikollinearität entsteht, wenn zwei oder mehr Prädiktoren dieselbe (oder sehr ähnliche) Information tragen. Vielleicht hast du Größe in Zoll und in Zentimetern im selben Modell. Oder Gesamtumsatz und Umsatz pro Kunde neben der Kundenzahl.

Zwei Dinge gehen schief, wenn Multikollinearität vorliegt:

  • Koeffizienten werden instabil: Fügst du eine einzige Zeile hinzu oder entfernst sie, kann der Koeffizient eines kollinearen Prädiktors stark schwanken oder das Vorzeichen wechseln. Das Modell funktioniert, aber die einzelnen Koeffizienten sind nicht aussagekräftig.
  • Standardfehler blähen sich auf: Mit weniger unabhängiger Information pro Prädiktor wird das Modell unsicherer über einzelne Koeffizienten. P-Werte steigen, echte Effekte werden als nicht signifikant zurückgemeldet.

Vorhersagen sind meist okay. Wenn du nur die vorhergesagte Wahrscheinlichkeit brauchst, führen leichte bis moderate Multikollinearität selten zu Problemen. Der „Schaden“ konzentriert sich auf die Koeffizienten und die darauf basierende Inferenz.

Die zwei Checks sind Korrelationsmatrix und Variance Inflation Factor (VIF). Eine Korrelationsmatrix ist der erste Blick – besonders Paare mit Korrelationen über 0,8 oder 0,9 im Betrag. Grenzen: Sie erkennt nur paarweise Kollinearität, nicht den Mehrwege-Fall, in dem drei oder mehr Prädiktoren gemeinsam redundant sind.

Für den Mehrwege-Fall ist VIF da. Für jeden Prädiktor misst VIF, wie stark die Varianz seines Koeffizienten durch Kollinearität mit den übrigen Prädiktoren aufgebläht ist. Ein VIF von 1 heißt keine Kollinearität, Werte bis 5 sind meist okay, und Werte über 10 sind ein starkes Signal, dass der Prädiktor mit anderen redundant ist.

Wenn VIF etwas flaggt, ist die einfachste Lösung, einen der kollinearen Prädiktoren zu streichen oder sie zu einer einzigen Kennzahl zu kombinieren (z. B. Summe oder Verhältnis). Willst du alle behalten, stabilisiert Regularisierung (Ridge oder Elastic Net) die Koeffizienten, ohne dich zur Wahl zu zwingen.

Annahme 5: Angemessene Stichprobengröße

Die logistische Regression funktioniert auch mit kleinen Stichproben, ist dann aber weniger verlässlich. Koeffizienten schwanken zu stark, und Effekte seltener Klassen sind kaum noch schätzbar.

Entscheidend ist nicht die Gesamtzahl der Zeilen, sondern die Zahl der Events (Beobachtungen in der Minderheitsklasse). Ein Datensatz mit 100.000 Zeilen und 50 Betrugsfällen ist ein kleines Sample-Problem, weil das Modell nur 50 Beispiele für das zu Lernende hat.

Hier hilft „Events per Variable“ (EPV). EPV ist die Anzahl der Minderheitsklassen-Beobachtungen geteilt durch die Zahl der Prädiktoren. Hast du 50 Betrugsfälle und 10 Prädiktoren, ist dein EPV 5.

Früher galt als Faustregel EPV ≥ 10. Neuere Simulationen zeigen: Die richtige Zahl hängt von Effektgrößen und Regularisierung ab. EPVs von 5 können okay sein, in anderen Fällen brauchst du 20 oder mehr.

Fazit: Nutze EPV als Warnsignal. Unter 10: Rechne mit instabilen Schätzungen und erwäge penalisiertes Verfahren wie Firth-Logit oder Ridge. Unter 5: Besorge mehr Daten oder vereinfache das Modell, bevor du einzelnen Koeffizienten traust.

Klassenungleichgewicht ist verwandt, aber ein anderes Thema.

Ein Datensatz mit 99% einer Klasse kann trotzdem viele Events pro Variable haben. Es ändert sich die Grundrate, nicht das EPV. Ungleichgewicht führt oft zu konservativen Wahrscheinlichkeiten, und Accuracy taugt nicht mehr. Nutze stattdessen Log-Loss oder Brier-Score zur Bewertung und erwäge Klassen-Gewichte oder Threshold-Tuning, wenn du ausgeglichene Entscheidungen brauchst.

Annahme 6: Keine stark einflussreichen Ausreißer

Die logistische Regression setzt keine Normalverteilung der Prädiktoren voraus. Schiefe Prädiktoren und Zählvariablen sind an sich kein Problem. Wichtig ist, ob eine einzelne Beobachtung übermäßig Einfluss auf die Koeffizienten hat.

Eine einflussreiche Beobachtung ist eine, deren Entfernung das Modell spürbar ändern würde. Das ist nicht dasselbe wie ein Residuen-Ausreißer. Ein Punkt kann ein großes Residuum haben (schlecht vorhergesagt) ohne einflussreich zu sein – und umgekehrt kann ein Punkt sehr einflussreich sein, ohne ein großes Residuum zu haben.

Du willst mehrere Diagnosen, die unterschiedliche Aspekte des Einflusses betrachten:

  • Leverage misst, wie ungewöhnlich die Prädiktorwerte einer Beobachtung relativ zum Rest sind. Leverage allein heißt nicht, dass ein Punkt einflussreich ist – nur, dass er das Potenzial dazu hat, wenn sein Outcome nicht zu seinen Prädiktoren passt
  • Cook-Distanz kombiniert Leverage und Residuum zu einer Zahl und schätzt, wie stark sich die Koeffizienten ändern würden, wenn du die Beobachtung entfernst. Große Werte markieren prüfenswerte Punkte. Üblich sind Schwellen wie 4/n (n = Stichprobengröße) oder schlicht die größten Cook-Distanzen im Datensatz
  • Residuen-Diagnostik ergänzt die Fälle, die Leverage und Cook-Distanz nicht fassen. Deviance- und Pearson-Residuen markieren Beobachtungen, die das Modell schlecht erklären kann. Ein Punkt mit großem Residuum ist prüfenswert, auch wenn sein Leverage moderat ist

Findest du einen einflussreichen Punkt, lautet die Frage: echt oder fehlerhaft? Ein Tippfehler wird korrigiert oder entfernt. Ein echter, aber ungewöhnlicher Fall bleibt – und du notierst, dass deine Schlüsse von ihm abhängen. Entferne Punkte nicht nur, weil sie einflussreich sind. So handelst du dir ein Modell ein, das nur deine Trainingsdaten abbildet.

Häufige Missverständnisse zu Annahmen der logistischen Regression

Die meiste Verwirrung entsteht, wenn die Checkliste der linearen Regression auf die logistische übertragen wird. Die Annahmen der linearen Regression sind bekannt und werden überall gelehrt – und tauchen dann bei der logistischen Regression auf, wo sie nicht hingehören. Hier sind die vier häufigsten Klarstellungen.

Logistische Regression braucht normalverteilte Variablen

Falsch. Die logistische Regression macht keine Normalitätsannahme für irgendeine Variable im Modell.

Das Outcome soll binär sein, nicht normal – das war Annahme 1. Die Prädiktoren müssen auch nicht normal sein; sie können jede Form haben. Wichtig ist die Beziehung zwischen Prädiktoren und Log-Odds, nicht die Randverteilung einer einzelnen Variable.

Logistische Regression braucht Homoskedastizität

Ebenfalls falsch. Homoskedastizität (konstante Residuenvarianz über den Vorhersagebereich) ist eine Annahme der linearen Regression, nicht der logistischen.

Die Varianz des Outcomes hängt bei Logit vom vorhergesagten p ab. Für ein Bernoulli-Outcome gilt Varianz = p(1 - p) – am höchsten nahe p = 0.5, am niedrigsten nahe 0 und 1. Die Varianz ist nicht konstant, und das Modell berücksichtigt das über die Likelihood-Funktion.

Du verletzt also nichts, wenn Wahrscheinlichkeiten mit unterschiedlicher Varianz herauskommen. So funktioniert das Modell.

Prädiktoren müssen normalverteilt sein

Falsch. Die logistische Regression stellt keine Verteilungsannahmen an Prädiktoren.

Du kannst kontinuierliche, binäre, Zähl- und kategoriale Prädiktoren mischen. Schiefe oder heavy-tailed Prädiktoren sind okay. Das Modell kümmert sich nicht um Randformen – nur um die Linearität des Logits (siehe Annahme 3), also um Beziehungsformen, nicht Verteilungsformen.

Wenn die Schiefe eines Prädiktors Probleme verursacht, liegt es meist an der Linearität des Logits oder an einflussreichen Ausreißern.

Residuen müssen normalverteilt sein

Falsch. Es gibt keine Normalitätsannahme für Residuen der logistischen Regression.

Die lineare Regression nimmt normalverteilte Residuen um null an – das ist Teil ihrer Inferenz. Die logistische Regression nutzt Maximum-Likelihood auf einer binomialen Likelihood; die Residuenverteilung ergibt sich aus dem binären Outcome (0/1) und der geschätzten Wahrscheinlichkeit. Sie sind nicht normal – und sollen es auch nicht sein.

Wenn du also Residuen bei Logit prüfst (wie in Annahme 6), suchst du einflussreiche Beobachtungen und schlecht erklärte Punkte – nicht die Glockenkurve.

So prüfst du Annahmen der logistischen Regression in Python

Ich nutze statsmodels für die Diagnosen. Scikit-learn passt zwar logistische Regression, liefert aber VIF, Einflussstatistiken oder Residuen-Diagnostik nicht out of the box.

Beispiel aufsetzen

Ich generiere einen synthetischen Churn-Datensatz mit drei Prädiktoren (Alter, Einkommen, Spending Score), wobei Alter und Einkommen absichtlich korrelieren, damit Multikollinearität etwas zu finden hat.

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf

np.random.seed(42)
n = 1000

age = np.random.normal(40, 12, n).clip(18, 80)
income = 30000 + 1500 * age + np.random.normal(0, 8000, n)
spending_score = np.random.uniform(1, 100, n)
logit_p = -3 + 0.04 * age + 0.02 * spending_score
p = 1 / (1 + np.exp(-logit_p))
y = np.random.binomial(1, p)

df = pd.DataFrame({
    "churned": y,
    "age": age,
    "income": income,
    "spending_score": spending_score,
})

model = smf.glm(
    "churned ~ age + income + spending_score",
    data=df, family=sm.families.Binomial()
).fit()
print(model.summary())

Model summary

Modellzusammenfassung

Die Summary liefert Koeffizienten, Standardfehler, z-Statistiken und p-Werte. age und spending_score sind die relevanten Prädiktoren. Der Koeffizient von income ist winzig, weil das Outcome nicht direkt vom Einkommen abhängt – der scheinbare Effekt wird vom Alter absorbiert.

Multikollinearität mit VIF

Mit statsmodels ist die Berechnung sehr einfach:

from statsmodels.stats.outliers_influence import variance_inflation_factor

X = sm.add_constant(df[["age", "income", "spending_score"]])
vif = pd.DataFrame({
    "feature": X.columns,
    "VIF": [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
})
print(vif[vif["feature"] != "const"])

VIF output

VIF-Ausgabe

Die VIFs für age und income liegen bei etwa 5,5 – leichte Multikollinearität. spending_score liegt nahe 1 – so soll es sein. Seine Varianz wird nicht durch Kollinearität aufgebläht. VIFs über 5 sind leichte Warnzeichen; über 10 sind ein klares Problem, das du sofort angehen musst. Der Move hier: Entweder age oder income streichen oder zu einem Feature kombinieren.

Linearität des Logits mit Box-Tidwell

Der Box-Tidwell-Test fügt Interaktionen zwischen jedem kontinuierlichen Prädiktor und dessen natürlichem Logarithmus hinzu. Signifikante Interaktionen markieren eine nichtlineare Log-Odds-Beziehung für diesen Prädiktor.

df_bt = df.copy()
for col in ["age", "income", "spending_score"]:
    df_bt[f"{col}_logx"] = df_bt[col] * np.log(df_bt[col])

bt_formula = (
    "churned ~ age + income + spending_score + "
    "age_logx + income_logx + spending_score_logx"
)
bt_model = smf.glm(
    bt_formula, data=df_bt, family=sm.families.Binomial()
).fit()

interactions = ["age_logx", "income_logx", "spending_score_logx"]
print(bt_model.pvalues[interactions])

Box-Tidwell output

Box-Tidwell-Ausgabe

Liegt ein p-Wert unter 0,05, ist die Linearität-der-Logit-Annahme für diesen Prädiktor fraglich. Im synthetischen Beispiel wurde der Logit linear erzeugt, daher sollten die Interaktionen nicht signifikant sein. In echten Daten: Folge einem signifikanten Ergebnis mit einem Plot der empirischen Log-Odds gegen den Prädiktor und entscheide, ob Transformation oder Spline passt.

Einflussdiagnostik

Statsmodels liefert Cook-Distanz und Leverage über get_influence().

influence = model.get_influence()
cooks_d = influence.cooks_distance[0]
leverage = influence.hat_matrix_diag

flagged = pd.DataFrame({
    "cooks_d": cooks_d,
    "leverage": leverage,
}).sort_values("cooks_d", ascending=False).head(10)
print(flagged)

Influence diagnostics output

Einflussdiagnostik-Ausgabe

Als Schwelle für prüfenswerte Cook-Distanzen gilt grob 4/n. Bei 1000 Zeilen also 0.004. Alles deutlich darüber verdient einen Blick. In diesem Datensatz sind die größten Werte klein – das ist das unspektakulär-gute Ergebnis, das du meist sehen willst.

Jetzt noch eine Visualisierung, um die Verteilung leichter zu lesen:

Influence diagnostics visualized

Einflussdiagnostik visualisiert

Deutlich über der gestrichelten Schwelle liegende Punkte solltest du prüfen. Es gibt einige, aber nicht zu viele.

Residuen-Diagnostik

Die Deviance-Residuen zeigen dir, welche Beobachtungen das Modell schlecht trifft.

deviance_resid = model.resid_deviance
fitted = model.fittedvalues

resid_df = pd.DataFrame({
    "fitted": fitted,
    "deviance": deviance_resid,
}).sort_values("deviance", key=abs, ascending=False).head(10)
print(resid_df)

Residual diagnostics output

Residuen-Diagnostik-Ausgabe

Große positive Deviance-Residuen sind Fälle, denen das Modell eine niedrige Wahrscheinlichkeit zugewiesen hat, die aber positiv waren. Große negative sind das Gegenteil. Du solltest Beobachtungen mit großen Residuen mit der Einflussdiagnostik oben abgleichen. Ein Fall, der sowohl schlecht vorhergesagt als auch einflussreich ist, ist am prüfenswertesten.

So prüfst du Annahmen der logistischen Regression in R

R hat dafür engere Built-ins. Das meiste kommt aus base R glm() plus dem Paket car.

Beispiel aufsetzen

Ich generiere denselben synthetischen Datensatz wie im Python-Beispiel – mit absichtlich korrelierten Alter und Einkommen.

set.seed(42)
n <- 1000

age <- pmin(pmax(rnorm(n, mean = 40, sd = 12), 18), 80)
income <- 30000 + 1500 * age + rnorm(n, sd = 8000)
spending_score <- runif(n, min = 1, max = 100)
logit_p <- -3 + 0.04 * age + 0.02 * spending_score
p <- 1 / (1 + exp(-logit_p))
churned <- rbinom(n, size = 1, prob = p)

df <- data.frame(churned, age, income, spending_score)

model <- glm(churned ~ age + income + spending_score,
             data = df, family = binomial)
summary(model)

Model summary output

Modellzusammenfassung

Die Ausgabe von summary(model) liefert Koeffizienten, Standardfehler, z-Statistiken und p-Werte. age und spending_score sollten bedeutsam aussehen, während der Effekt von income vom age-Term absorbiert wird.

Multikollinearität mit VIF

Das Paket car liefert vif() für jedes glm:

library(car)

vif(model)

VIF output in R

VIF-Ausgabe in R

age und income kommen mit VIFs um 5,7 zurück – der eingebaute Multikollinearitäts-Effekt. spending_score liegt nahe 1. Wie in Python: Werte über 5 sind beachtenswert, über 10 ein klares Problem.

Linearität des Logits mit Box-Tidwell

Die Funktion car::boxTidwell ist für lineare Regression gedacht; bei Logit fügst du die Interaktionen manuell hinzu und passt erneut an:

df_bt <- df
df_bt$age_logx <- df_bt$age * log(df_bt$age)
df_bt$income_logx <- df_bt$income * log(df_bt$income)
df_bt$spending_score_logx <- df_bt$spending_score * log(df_bt$spending_score)

bt_model <- glm(
  churned ~ age + income + spending_score +
    age_logx + income_logx + spending_score_logx,
  data = df_bt, family = binomial
)

interactions <- c("age_logx", "income_logx", "spending_score_logx")
summary(bt_model)$coefficients[interactions, ]

Box-Tidwell output in R

Box-Tidwell-Ausgabe in R

Die Ausgabe zeigt Koeffizient und p-Wert für jeden Interaktionsterm. Signifikante p-Werte markieren eine Verletzung der Linearität-der-Logit-Annahme. Für unsere synthetischen Daten sollte der Test nicht zurückweisen. In echten Daten: Folge mit empirischen Log-Odds-Plots oder passe ein Modell mit Splines (aus dem Paket splines) für jeden betroffenen Prädiktor.

Einflussdiagnostik

R liefert cooks.distance() und hatvalues() in base – kein Zusatzpaket nötig:

cooks_d <- cooks.distance(model)
leverage <- hatvalues(model)

influence_df <- data.frame(
  index = seq_along(cooks_d),
  cooks_d = cooks_d,
  leverage = leverage
)
head(influence_df[order(-influence_df$cooks_d), ], 10)

Influence diagnostics in R

Einflussdiagnostik in R

Die Schwelle für die Cook-Distanz ist wie in Python: 4/n, also 0.004 bei 1000 Zeilen. Alles deutlich darüber ist prüfenswert. Für einen schnellen visuellen Check liefert base R mit plot(model, which = 4) einen Cook-Distanz-Plot in einer Zeile.

Einflussdiagnostik in R visualisiert

Residuen-Diagnostik

R liefert Deviance-Residuen für ein glm über residuals():

deviance_resid <- residuals(model, type = "deviance")
fitted_vals <- fitted(model)

resid_df <- data.frame(
  fitted = fitted_vals,
  deviance = deviance_resid
)
head(resid_df[order(-abs(resid_df$deviance)), ], 10)

Residual diagnostics in R

Residuen-Diagnostik in R

Große absolute Deviance-Residuen sind Fälle, die das Modell verfehlt. Gleiche diese mit den Cook-Flags oben ab, um Beobachtungen zu finden, die sowohl schlecht passen als auch einflussreich sind.

Für eine Gesamtübersicht liefert influence.measures(model) eine Tabelle, die Cook-Distanz, Leverage, DFBETAs und weitere Einflussmaße kombiniert. Das ist der schnellste Weg, alle Standarddiagnosen eines angepassten glm zu scannen.

Was passiert, wenn Annahmen verletzt werden?

Die meisten Verletzungen „brechen“ dein Modell nicht sichtbar. Sie führen zu subtilen Fehlverhalten, die du nur erkennst, wenn du weißt, worauf du achten musst.

Vier Folgen treten besonders häufig auf:

  1. Instabile Koeffizienten: Kleine Datenänderungen (ein paar Zeilen mehr/weniger, leicht andere Features) können Koeffizienten stark verändern oder das Vorzeichen kippen. Das verursacht Multikollinearität – und passiert auch bei zu kleinem Sample für zu viele Prädiktoren
  2. Schlechte Kalibrierung: Die vorhergesagten Wahrscheinlichkeiten passen nicht mehr zu den tatsächlichen Raten. Du prognostizierst 30% Churn, beobachtest 15%. Accuracy kann gut aussehen, aber die Wahrscheinlichkeiten sind off. Verletzungen der Linearität des Logits und einflussreiche Ausreißer tragen dazu bei
  3. Irreführende Inferenz: Schwer zu erkennen, weil das Modell weiterhin Standardfehler und p-Werte liefert, die okay wirken. Korrellierte Beobachtungen drücken Standardfehler zu stark, falsche Spezifikationen blähen sie auf. So bedeuten p-Werte nicht mehr, was du denkst
  4. Verschlechterte Vorhersagequalität: Das offensichtlichste Symptom – in der Praxis oft das kleinste. Vorhersagen halten meist besser durch als Koeffizienten, weshalb Teams, die nur auf Accuracy schauen, Warnzeichen leicht übersehen.

Ehrlich gesagt machen Verletzungen ein Modell selten unbrauchbar. Sie machen Teile unzuverlässig – welche, hängt von der gebrochenen Annahme ab. Deshalb zählen Diagnosen.

Alternativen, wenn Annahmen der logistischen Regression scheitern

Wenn deine Diagnosen auf Probleme hinweisen, die du innerhalb der logistischen Regression nicht beheben kannst, wechsle zu einem Modell ohne diese Annahmen.

Generalized Additive Models (GAMs) sind der nächste Schritt. Ein GAM behält die logistische Link-Funktion und die interpretierbare additive Struktur, ersetzt aber lineare Terme durch glatte Funktionen pro Prädiktor. Du bekommst „Koeffizienten mit Form“ statt Einzahlangaben – damit ist die Linearität-der-Logit-Problematik gelöst. GAMs bleiben ausreichend parametrierbar, um sie zu inspizieren – eine gute Aufrüstung, wenn Linearität nicht hält.

Baumbasierte Modelle sind noch flexibler. Random Forests und Gradient Boosting machen keine Annahmen über Verteilungen oder Beziehungsformen. Sie kommen mit Multikollinearität klar und erfassen Nichtlinearität. Sie liefern nicht die einfache Koeffizienten-Interpretation der logistischen Regression, schlagen aber oft bei Vorhersagemetriken, wenn Daten nichtlineare Struktur oder nicht modellierte Interaktionen haben.

Die Wahl zwischen GAMs und Baummodellen hängt davon ab, was du brauchst.

  • Nimm GAMs, wenn Interpretierbarkeit Priorität hat und du sehen willst, wie jeder Prädiktor die Log-Odds beeinflusst
  • Nimm Gradient Boosting, wenn Vorhersagequalität Priorität hat und du mit weniger Transparenz leben kannst

Wichtig: Die Annahmen der logistischen Regression sind leichter zu prüfen als zu ignorieren. Kannst du mit Transformation, Spline, Regularisierung oder besserem Sample nachbessern, schlagen Interpretierbarkeit und Inferenz der Logit-Modelle meist einen Wechsel zu flexibleren Modellen.

Steig also auf GAMs oder Bäume um, wenn die Diagnosen klar sagen, dass die Annahmen nicht halten – nicht, weil Logit nicht „State of the Art“ klingt.

Best Practices für die Modellierung mit logistischer Regression

Zum Schluss diese kurze Liste, damit du auf ein Modell bauen kannst:

  • Annahmen prüfen, bevor du interpretierst: Lass VIF, Box-Tidwell und Einflussdiagnostik laufen, bevor du Koeffizienten abliest. Wenn du zuerst interpretierst und später prüfst, verteidigst du Zahlen, die du nicht verifiziert hast. Das willst du in keinem Meeting sein
  • Bei kleinem Sample regulärisieren: Ridge oder Elastic Net stabilisieren Koeffizienten bei niedrigem EPV oder korrelierten Prädiktoren. Der Trade-off ist ein kleiner Bias für große Varianzreduktion – meist ein guter Deal
  • Auf ungesehene Daten validieren: Halte ein Testset zurück oder nutze Cross-Validation. Trainingsmetriken überschätzen die Leistung, sobald das Modell Überanpassungsspielraum hat – was Logit bei vielen Prädiktoren oder seltenen Events durchaus hat
  • Kalibrierung bewerten: Accuracy verschleiert, ob Wahrscheinlichkeiten zu tatsächlichen Raten passen. Nutze Log-Loss oder Brier-Score und wirf einen Blick auf den Kalibrierungsplot, wenn Wahrscheinlichkeiten für Business-Entscheidungen zählen

Fazit

Ehrlich: Die logistische Regression zählt zu den fehlertoleranteren Modellen.

Sie verträgt schiefe Prädiktoren und unausgewogene Outcomes und kümmert sich nicht um die Form der Residuen. Was sie nicht verträgt, sind falsch spezifizierte Beziehungen zu den Log-Odds oder Prädiktoren, die alle dieselbe Information tragen.

Darum sind Linearität des Logits und Multikollinearität die zwei Checks, die du als Pflicht betrachten solltest. Sie verzerren das Modell auf Arten, die keine Metrik einfängt. Die anderen vier Annahmen sind ebenfalls relevant, aber auf diese beiden solltest du dich wirklich konzentrieren.

Um auf Nummer sicher zu gehen, führe Diagnosen parallel zur Evaluation aus – nicht danach. Ein Modell, das gut vorhersagt und seine Annahmen besteht, ist eines, hinter dem du stehen kannst. Alles darunter ist ein Modell, das du trainiert, aber nicht wirklich verifiziert hast.

Klingt das komplex? Ist es auch. Es braucht viel, um ein guter Machine-Learning-Engineer zu werden. Melde dich am besten für unseren Machine Learning Scientist in Python-Lernpfad an. 85 Stunden Material machen dich bis 2026 jobready.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist mit Sitz in Kroatien. Top Tech Writer mit über 700 veröffentlichten Artikeln, die mehr als 10 Millionen Mal aufgerufen wurden. Buchautor von Machine Learning Automation with TPOT.

FAQs

Hat die logistische Regression Annahmen?

Ja. Die logistische Regression macht weniger Annahmen als die lineare, aber sie ist nicht annahmefrei. Die wichtigsten betreffen die Form der Zielvariable, die Unabhängigkeit der Beobachtungen, die Linearität der Log-Odds und das Fehlen hoher Multikollinearität oder stark einflussreicher Punkte.

Welche Annahmen der logistischen Regression sind am wichtigsten?

Am wichtigsten sind die Linearität des Logits und das Fehlen starker Multikollinearität. Die Linearität des Logits wird oft missverstanden: Die logistische Regression setzt keine lineare Beziehung zwischen Prädiktoren und Outcome voraus, sehr wohl aber zwischen Prädiktoren und Log-Odds. Multikollinearität ist kritisch, weil sie Koeffizienten verzerrt und Standardfehler aufbläht, ohne die Accuracy zu beeinträchtigen – sie bleibt so in Checks verborgen, die nur auf Vorhersageleistung schauen.

Was passiert, wenn Annahmen der logistischen Regression verletzt werden?

Es hängt davon ab, welche Annahme bricht. Verletzungen der Linearität des Logits oder starke Multikollinearität schaden still den Koeffizienten, während die Accuracy intakt wirkt – darum übersieht man sie leicht. Verstöße gegen Unabhängigkeit drücken oder erhöhen Standardfehler und machen p-Werte unzuverlässig. Die meisten Verstöße machen ein Modell nicht nutzlos, aber Teile davon unvertrauenswürdig – auf eine Weise, die Accuracy allein nicht zeigt.

Braucht die logistische Regression normalverteilte Prädiktoren?

Nein. Die logistische Regression macht keine Verteilungsannahmen an die Prädiktoren. Du kannst kontinuierliche, kategoriale, schiefe und heavy-tailed Prädiktoren problemlos im selben Modell nutzen. Entscheidend ist die Beziehung jedes Prädiktors zu den Log-Odds, nicht seine Randverteilung.

Was ist eine gute VIF-Schwelle bei logistischer Regression?

VIF-Werte bis 5 sind in der Regel unkritisch, 5 bis 10 deuten auf moderate Multikollinearität hin, die du untersuchen solltest, und über 10 sind ein Signal für Redundanz. Die Schwellen sind Konventionen, keine harten Regeln – die Interpretation hängt von Stichprobengröße und gewünschter Präzision ab. Hat ein Prädiktor einen hohen VIF und sein Standardfehler wirkt über Datensubsets instabil, hast du Evidenz, dass Kollinearität Probleme macht.

Themen

Lerne mit DataCamp

Kurs

Einführung in Regression mit R

4 Std.
77.1K
Sag die Immobilienpreise und die Klickrate von Anzeigen voraus, indem du Regressionsanalysen in R machst, analysierst und interpretierst.
Details anzeigenRight Arrow
Kurs starten
Mehr anzeigenRight Arrow