Wenn die Zielgröße Ja/Nein ist
Die lineare Regression sagt eine Zahl vorher. Aber viele modellierenswerte Fragen sind binär: Kündigt der Kunde, genest die Patientin, wird die E-Mail geklickt. Eine Gerade an eine 0/1-Zielgröße anzupassen bricht sofort - die Gerade sagt fröhlich Wahrscheinlichkeiten von −0,3 oder 1,4 vorher, was Unsinn ist.
Die logistische Regression behebt das, indem sie die Wahrscheinlichkeit der Zielgröße über die Log-Odds-Transformation (Logit) modelliert: log(p / (1 − p)) = Achsenabschnitt + Steigung × x. Die Log-Odds-Skala läuft über die gesamte Zahlengerade, sodass eine lineare Gleichung dort natürlich passt - und die Rückabbildung quetscht jede Vorhersage entlang der vertrauten S-Kurve in (0, 1). Der Preis des Tricks: Koeffizienten leben auf der Log-Odds-Skala, und das ganze Spiel beim Lesen einer logistischen Regression besteht darin, sie in etwas zurückzuübersetzen, das Menschen verstehen.
Anpassen: glm() mit family = binomial
glm() (generalisiertes lineares Modell) ist das große Geschwister von lm(); family = binomial wählt die logistische Regression. In mtcars erfasst am die Getriebeart (1 = manuell, 0 = automatisch) - neigen sparsame Autos zu Handschaltung?
Zwei Dinge vor dem Lesen der Ausgabe. Erstens: family = binomial ist nicht optional - lass es weg, und glm() passt still eine gewöhnliche Kleinste-Quadrate-Schätzung an. Zweitens muss die Zielgröße binär sein: 0/1, logisch oder ein zweistufiger Faktor (R modelliert die Wahrscheinlichkeit des zweiten Levels).
Nun die Zusammenfassung, Block für Block:
- Coefficients - das
mpg-Estimate liegt bei etwa 0,31, und es ist eine Log-Odds-Steigung: Jeder zusätzliche mpg fügt 0,31 zu den Log-Odds hinzu, manuell zu sein. Positiv bedeutet "erhöht die Wahrscheinlichkeit", negativ "senkt sie" - jenseits des Vorzeichens funktioniert auf dieser Skala niemandes Intuition, weshalb es den nächsten Abschnitt gibt. - z value und Pr(>|z|) - dieselbe Logik wie bei den t-Tests der Regression (Estimate ÷ Std. Error, dann ein p-Wert für "Könnte das null sein?"), nur mit einer Normalapproximation - daher z statt t. Hier p ≈ 0,011: Der Zusammenhang zwischen mpg und Getriebeart ist unwahrscheinlich Rauschen.
- Null deviance vs. Residual deviance - die Devianz ist das Schlechtigkeitsmaß der glm-Welt (kleiner = besser). Die Null-Devianz (43,2 bei 31 df) gehört zum Modell nur mit Achsenabschnitt; die Residualdevianz (29,7 bei 30 df) zu deinem. Der Abfall um etwa 13,6 für einen Freiheitsgrad Prädiktor ist das glm-Analogon zu "das Bestimmtheitsmaß ist gestiegen".
- AIC - eine Modellvergleichskennzahl, die Anpassungsgüte gegen Komplexität abwägt; niedriger gewinnt. Allein bedeutungslos, nützlich zwischen Kandidatenmodellen auf denselben Daten.
Von Log-Odds zu Odds Ratios: exp(coef())
Exponenzieren verschiebt Koeffizienten von der additiven Log-Odds-Skala auf die multiplikative Odds-Skala:
exp(0.307) ≈ 1.36, und hier ist das ehrliche Satzmuster zum Auswendiglernen: "Jeder zusätzliche mpg multipliziert die Odds für ein Schaltgetriebe mit etwa 1,36." Ein Odds Ratio über 1 erhöht die Odds, unter 1 senkt es sie, genau 1 heißt kein Effekt - weshalb das Konfidenzintervall-Urteil für Odds Ratios lautet: "Schließt das Intervall die 1 aus?" (nicht die Null; die Null war die Grenze zurück auf der Log-Odds-Skala).
Achte auf die Sprache: Odds sind keine Wahrscheinlichkeiten. Odds = p / (1 − p), also entspricht eine Wahrscheinlichkeit von 0,75 Odds von 3. Odds mit 1,36 zu multiplizieren ist nicht dasselbe wie eine Wahrscheinlichkeit mit 1,36 zu multiplizieren - und wenn die Zielgröße häufig ist, ist die Lücke groß. Ein Odds Ratio von 2 verhält sich bei einer seltenen Zielgröße wie "ungefähr doppeltes Risiko"; bei einer Zielgröße mit 50 % Auftreten ausdrücklich nicht. Berichte ein Odds Ratio nie mit Risikoverhältnis-Formulierungen ("1,36-mal so wahrscheinlich"), sofern die Zielgröße nicht selten ist.
Vorhergesagte Wahrscheinlichkeiten: die type = "response"-Falle
Der mit Abstand häufigste Bug bei logistischer Regression in freier Wildbahn:
Der erste Aufruf liefert die Voreinstellung type = "link" - Vorhersagen auf der Log-Odds-Skala, negative Werte inklusive. Der zweite liefert echte Wahrscheinlichkeiten. Falls deine "Wahrscheinlichkeiten" je negativ oder über 1 herauskommen, ist das der Grund. Führ den Block aus: Ein 15-mpg-Auto hat praktisch keine Chance, manuell zu sein, ein 30-mpg-Auto ist sehr wahrscheinlich manuell, und die S-Kurve biegt sich durch die Mitte.
Klassifikation: Schwellenwert und Konfusionstabelle
Aus Wahrscheinlichkeiten werden vorhergesagte Klassen, indem man einen Schwellenwert wählt - 0,5 ist die Standardwahl -, und das ehrliche Zeugnis ist eine Tabelle aus Vorhersage vs. Realität:
Die Diagonalzellen sind richtige Entscheidungen; die beiden Zellen abseits der Diagonale sind die zwei verschiedenen Fehler (manuell vorhersagen für ein Automatikauto und umgekehrt). Die Gesamtgenauigkeit allein kann ein Modell übel schmeicheln - kündigen 95 % der Kunden nicht, erzielt "sag vorher, dass niemand kündigt" 95 %, während es null Kündiger erwischt -, sieh dir also immer beide Fehlerarten an. Und 0,5 ist eine Konvention, kein Gesetz: Wenn die beiden Fehler unterschiedlich teuer sind, verschieb den Schwellenwert entsprechend.
Ein Ehrlichkeitsvorbehalt: Diese Tabelle bewertet das Modell auf denselben Daten, auf denen es angepasst wurde, was ihm schmeichelt. Echte Bewertung hält Daten zurück, die das Modell nie gesehen hat.
Mehrere Prädiktoren
Genau wie bei lm() - Terme mit + hinzufügen, und jede Interpretation bekommt den Zusatz "bei konstant gehaltenen anderen":
Jeder exponenzierte Koeffizient ist nun der Odds-Multiplikator für eine Erhöhung dieses Prädiktors um eine Einheit unter Autos, die sich in den anderen Prädiktoren gleichen. Die Maschinerie skaliert, aber die Vorbehalte aus der linearen Regression auch: Korrelierte Prädiktoren mischen die Koeffizienten der jeweils anderen neu.
Vorsicht
- Vollständige Separation. Trennt ein Prädiktor die Zielgröße perfekt (jedes Auto über einem gewissen mpg-Wert ist manuell, jedes darunter automatisch), will der Maximum-Likelihood-Koeffizient unendlich sein. R warnt -
glm.fit: fitted probabilities numerically 0 or 1 occurred- und meldet riesige Koeffizienten mit absurden Standardfehlern. Liefere diese Zahlen nicht aus; vereinfache das Modell, hol mehr Daten oder nutze ein penalisiertes Verfahren (die Paketebrglm2oderlogistf). - Genug Ereignisse. Die bindende Nebenbedingung ist die Anzahl der selteneren Zielausprägung, nicht die Gesamtzahl der Zeilen. Eine alte Faustregel will in der Größenordnung 10-15 Ereignisse pro Prädiktor; die 32-Auto-Beispiele hier dienen dem Lehren der Mechanik, nicht als Vorlage für publikationsfähige Stichprobengrößen.
- Odds Ratios sind keine Risikoverhältnisse, wenn die Zielgröße häufig ist - oben behandelt, hier wiederholt, weil Gutachter es erwischen werden, selbst wenn du es nicht tust.
Was du mitnimmst
- Binäre Zielgröße →
glm(y ~ x, data = df, family = binomial); vergiss nie diefamily. - Rohe Koeffizienten sind Log-Odds;
exp(coef(fit))liefert Odds Ratios, und der Nullwert für ihre Intervalle ist 1. - Das Satzmuster: "Jede Erhöhung von x um eine Einheit multipliziert die Odds der Zielgröße mit exp(b)."
predict(..., type = "response")für Wahrscheinlichkeiten - die Voreinstellung gibt Log-Odds zurück, die Verwirrung Nummer eins.- Klassifiziere mit einem Schwellenwert und urteile mit einer Konfusionstabelle; Genauigkeit allein kann lügen.
- Achte auf Separationswarnungen, zähl deine Ereignisse, und verkleide Odds Ratios nicht als Risikoverhältnisse.
Als Nächstes: die Maschinerie hinter jedem Intervall, das du bisher gesehen hast - Konfidenzintervalle mit t.test(), confint() und prop.test().
Häufig gestellte Fragen
Wie führt man in R eine logistische Regression durch?
Mit glm() und family = binomial: fit <- glm(am ~ mpg, data = mtcars, family = binomial), dann summary(fit). Die Zielgröße muss binär sein - 0/1, TRUE/FALSE oder ein zweistufiger Faktor. family = binomial zu vergessen passt still eine gewöhnliche lineare Regression an.
Wie interpretiert man glm-Koeffizienten in R?
Rohe Koeffizienten liegen auf der Log-Odds-Skala, in der niemand denkt. Exponenziere sie - exp(coef(fit)) -, um Odds Ratios zu bekommen: Ein Wert von 1,36 für einen Prädiktor bedeutet, dass jede Erhöhung um eine Einheit die Odds der Zielgröße mit etwa 1,36 multipliziert. Werte über 1 erhöhen die Odds, unter 1 senken sie, genau 1 heißt kein Effekt.
Wie bekommt man aus glm in R vorhergesagte Wahrscheinlichkeiten?
Nutze predict(fit, newdata, type = "response"). Das ist die Falle Nummer eins: Die Voreinstellung type = "link" gibt Log-Odds zurück, keine Wahrscheinlichkeiten - wenn deine "Wahrscheinlichkeiten" also negativ oder über 1 sind, hast du type = "response" vergessen.
Was ist der Unterschied zwischen Odds und Wahrscheinlichkeit?
Wahrscheinlichkeit sind Erfolge geteilt durch alle Versuche; Odds sind Erfolge geteilt durch Misserfolge. Eine Wahrscheinlichkeit von 0,75 entspricht Odds von 3 (drei Erfolge je Misserfolg). Die Odds Ratios der logistischen Regression multiplizieren Odds, nicht Wahrscheinlichkeiten - und wenn die Zielgröße häufig ist, kann ein Odds Ratio weit größer sein als das entsprechende Risikoverhältnis, präsentiere also nie das eine als das andere.