Zurück...

Logistische Regression

Methodisch gehört die logistische Regression zu den strukturprüfenden Verfahren und hat eine verwandtschaftliche Beziehung zur Diskriminanzanalyse und natürlich zur Regressionsanalyse.
Ein Einführungsvideo zur logistischen Regression wird Ihnen über das Ad-Oculos-Projekt angeboten.

Kann die Zielgröße Y (abhängige Variable) nur eine binäre (dichotome Verteilung) oder allgemein eine diskrete Ausprägung, z. B.

        yi = 1 (für Erfolg oder wahr oder ...) oder
        yi = 0 (für Misserfolg oder falsch oder ...)

annehmen, kann die unter lineare Regression dargestellte Methode nicht angewendet werden. Dieser Regressionsansatz würde Werte für die abhängige Variable (Zielgröße) yi < 0 und yi > 1 erlauben. Hier kommt das Verfahren der logistischen Regression zur Anwendung. Über die logistische Regression wird geschätzt, mit welcher Erfolgswahrscheinlichkeit P ein Ereignis Y, das Eintreten von Erfolg oder Misserfolg, von der/den unabhängige(n) Variablen X1 und X2 (oder allgemein von X1, ..., Xn) abhängt.

Der Modellansatz nach

            P = a + bx
            (Parameter a und b werden durch die Regression geschätzt)

beinhaltet die Herausforderung, dass die Wahrscheinlichkeit P, wie bekannt, nur zwischen 0 <= P <= 1 liegen kann. Ãœber die logistische Transformation (F1) werden die Funktionswerte auf diesen Bereich begrenzt:

F1

Grafische Darstellung von F1 für a = 0 und b wie als X-Achse dargestellt.

Ist die Wahrscheinlichkeit P = 0,5, hat das Merkmal X keinen Einfluss auf die Erfolgswahrscheinlichkeit des Ereignisses Y. D. h., ob das Ereignis Y auftritt oder nicht, hängt nicht von X ab! Die folgende Grafik beschreibt diese Aussage:

Ãœber die logistische Transformation kann der obige Modellansatz linearisiert werden (Linkfunktion Logit):

          log(P(x)) = a + bx

Die Schätzung der Parameter a und b erfolgt nach der Maximum-Likelihood-Methode. Um den rechnerischen Aufwand gering zu halten, wird allerdings das Statistikprogramm R zur Schätzung bemüht. Zur Schätzung der Parameter a und b wird die Funktion glm() (GLM: Generalisierte lineare Modelle) mit exponentielle Verteilungsmodelle verwendet.
In dem folgenden Beispiel gehen wir von dem Challenger-Beispiel aus. Sie erinnern sich an die Space-Shuttle-Katastrophe am 28.01.1986? Die Unglücksursache waren defekte Gummidichtungen bei einer der Starterraketen. Den Beispieldatensatz shuttle finden Sie im Paket SMPracticals.

Wir interessieren uns für die Datenobjekte r und temperature des Datensatzes shuttle. r ist die Variable Zustand der Gummidichtungen und temperature die Temperatur zum Zustand der Gummidichtung. Im Folgenden bedeutet 0 o.k. und >=1 defekt als Zustandbeschreibung für die Gummidichtung!

Ausgehend von dieser Voraussetzung, speichern wir den Dichtungszustand (o.k. oder defekt) als numerischen Wahrheitswert in dem Vektor Zustand ab:

> Zustand <- as.numeric(shuttle$r > 0)
> Zustand
 [1] 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1
>

Die Temperatur speichern wir in den Vektor Temp ab:

> Temp <- shuttle$temperature
> Temp
 [1] 66 70 69 68 67 72 73 70 57 63 70 78 67 53 67 75 70 81 76 79 75 76 58
>

Nun schätzen wir über die Funktion glm() die Parameter a und b und legen das geschätzte Modell im R-Objekt Ergebnis ab:

      > Ergebnis <- glm(Zustand ~ Temp, family = binomial("logit"))

Unter family wird das exponentielle Verteilungsmodell Binomial und logit (Linkfunktion) angegeben. über die Funktion coef() lassen wir uns die Parameter a (= Intercept) und b (= Temp) ausgeben:

      > coef(Ergebnis)
      (Intercept)    Temp
       15.0429016 -0.2321627

Über beide Parameter lässt sich durch Einsetzen in F1 die Eintrittswahrscheinlichkeit schätzen, ob die Gummidichtung bei z. B. -0,6 Grad Celsius (= 31 Grad Fahrenheit) ihre Bestimmung aufgibt, also undicht wird:

Nach diesem Modell liegt die Ausfallwahrscheinlichkeit der Gummidichtung bei 99,96%!

Eine Kenngrößenzusammenfassung erhalten Sie über die R-Funktion summary():

> summary(Ergebnis)

Call:
glm(formula = Zustand ~ Temp, family = binomial("logit"))

Deviance Residuals:
  Min    1Q  Median    3Q   Max 
-1.0611 -0.7613 -0.3783  0.4524  2.2175 

Coefficients:
      Estimate Std. Error z value Pr(>|z|) 
(Intercept) 15.0429   7.3786  2.039  0.0415 *
Temp     -0.2322   0.1082 -2.145  0.0320 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

  Null deviance: 28.267 on 22 degrees of freedom
Residual deviance: 20.315 on 21 degrees of freedom
AIC: 24.315

Number of Fisher Scoring iterations: 5

Auffällig sind die Kenngrößen zu Deviance Residuals (Deviance: Abweichung, frz. “dévier”) und zu den Koeffizienten (Coefficients), hier der Standardfehler (Std. Error)!

Das geschätzte Modell haben wir im R-Objekt Ergebnis abgelegt. Darauf basierend können wir eine Prognose hinsichtlich der Zielgröße Y, also der Eintrittwahrscheinlichkeit in Bezug einer bestimmten Temperatur, durchführen. Dazu werden wir die R-Funktion predict() verwenden.

Zuerst legen wir einen Datensatz über die Vorhersagetemperatur an:

    > T.min = 20  # Grad Fahrenheit
    > T.max = 100  # Grad Fahrenheit
    > # Temperaturfolge von T.min bis T.max bilden:
    > Temp.X <- seq(T.min, T.max, by=0.15)
    > # Dataframe für das Modell bilden:
    > Temp.Modell <- data.frame(Temp = Temp.X)
    > head(Temp.Modell) # Die ersten Einträge des Datensatzes
       Temp
    1 20.00
    2 20.15
    3 20.30
    4 20.45
    5 20.60
    6 20.75
    > tail(Temp.Modell) # Die letzten Einträge des Datensatzes
         Temp
    529 99.20
    530 99.35
    531 99.50
    532 99.65
    533 99.80
    534 99.95

Nun wird die Prognose über die Funktion predict() durchgeführt:

    > Temp.Prognose <- predict(Ergebnis, Temp.Modell, type = "response")

Hinweis zum Funktionsaufruf: Da wir glm-R-Objekte nutzen, müssen wir den type = “response” als predict-Attribut mitgeben (siehe predict.glm)!

Lassen wir uns die Prognosetemperatur Temp.Prognose (d. h. die Wahrscheinlichkeiten P) gegen die Vorgabetemperatur Temp.X grafisch darstellen:

    > sunflowerplot(Temp, Zustand, main = "Darstellung der Prognose", xlab = "Temperatur", ylab = "Wahrscheinlichkeit P")
    > lines(Temp.X, Temp.Prognose)
    > abline(h = seq(0,1,0.1), lty = 2)
    > abline(v = seq(55,80,5), lty = 2)

Obige Grafik zeigt, je tiefer die Temperatur desto höher die Eintrittswahrscheinlichkeit, dass der Dichtungsring undicht wird.
Die Punkte auf der Wahrscheinlichkeits-Line P = 0 sind die ”dichten” Dichtungsringe der Originalerhebung. Diejenigen auf der P = 1-Linie sind die defekten Dichtungsringe.

Seitenanfang

Hat der Inhalt Ihnen weitergeholfen und Sie möchten diese Seiten unterstützen?