Lineare Regression (Regressionsanalyse)

Regression

Mit der Regression untersucht man den Zusammenhang (die Assoziation) zwischen zwei oder mehr Variablen. In einer Regressionsanalyse wird eine Variable (YY) durch mindestens einen Prädiktor (XX) vorhergesagt. Terminologisch sagt man, YY sei von XX abhängig; YY ist daher die abhängige Variable und XX die unabhängige Variable.

Aufgabe im Modell Synonym
Y Die Variable, die vorhergesagt werden soll Abhängige Variable, dependent variable, Outcome, Zielgröße, Zielvariable, label, target
X Wird zur Vorhersage von Y verwendet Prädiktor, predictor, feature, Kovariate, covariate

Angenommen, wir untersuchen den Zusammenhang zwischen BMI (Body-Mass-Index) und Blutzucker. Mit der Regression können wir die eine Variable verwenden, um den Wert der anderen vorherzusagen. In diesem Fall wird der BMI zur Vorhersage des Blutzuckers verwendet. Der BMI ist somit die unabhängige Variable (Prädiktor) und die Glukose die abhängige Variable (Outcome).

Wir veranschaulichen die lineare Regression mit Daten von Pima-Indianern, die ein sehr hohes Diabetesrisiko haben. Die Daten der Pima-Indianer sind im Package mlbench enthalten. Installieren Sie mlbench, laden Sie das Package und anschließend die Daten der Pima-Indianer mit folgendem Befehl:

library(mlbench)
data(PimaIndiansDiabetes)

## Grafik des Zusammenhangs zwischen mass und glucose
ggplot(data=PimaIndiansDiabetes,
       aes(x=mass, y=glucose, color=diabetes)) +
  geom_point() +
  geom_smooth()
Streudiagramm von BMI (mass) gegen Glukose nach Diabetesstatus mit blauer Regressionsgerade und markiertem Achsenabschnitt β0 bei x = 0

Die obige Abbildung zeigt, wie der BMI (mass) mit dem Blutzucker (glucose) assoziiert ist. In der Grafik ist eine gerade blaue Linie zu sehen, die Regressionsgerade für mass. Der Zusammenhang zwischen mass und glucose lässt sich mit einer einfachen Formel beschreiben.

Yi=b1Xi+b0+ϵiY_i = b_1 X_i + b_0 + \epsilon_i

  • b0b_0 ist der Achsenabschnitt (Intercept), also der Punkt, an dem die Regressionsgerade die Y-Achse schneidet (siehe Abbildung oben).
  • b1b_1 ist der Koeffizient für mass, also der Wert der Steigung der Regressionsgeraden.
  • ϵi\epsilon_i ist die Differenz zwischen dem vom Modell vorhergesagten Wert von YY und dem beobachteten Wert von YY. Dies ist also der Fehler des Modells (error).

Zusammengefasst handelt es sich um ein Modell, das YY mithilfe einer Regressionsgeraden mit der Steigung b1b_1 vorhersagt. Der Achsenabschnitt (b0b_0) interessiert uns nur sehr selten. Der Fehler des Modells (ϵi\epsilon_i) ist ein Maß dafür, wie gut das Modell ist.

Ziel ist es, eine Regressionsgerade zu erstellen, deren Steigung so angepasst wird, dass sie den Zusammenhang zwischen XX und YY abbildet. Die Steigung der Geraden hängt vom Zusammenhang zwischen mass und glucose ab. Die Steigung für mass wird auch als Koeffizient für mass bezeichnet. Wenn glucose mit zunehmendem mass ansteigt, hat die Regressionsgerade eine positive Steigung. In der obigen Abbildung ist zu erkennen, dass die Gerade eine positive Steigung hat, weshalb der Koeffizient für mass positiv ist.

Beachten Sie, dass die Beziehung zwischen XX und YY linear sein muss, damit das lineare Modell verwendet werden kann. Ist der Zusammenhang nicht linear, kann das lineare Modell irreführend sein. Im Folgenden ein Beispiel für einen nichtlinearen Zusammenhang zwischen XX und YY. Die berechnete Regressionsgerade erfasst den Zusammenhang zwischen XX und YY nicht.

Streudiagramm mit U-förmigem nichtlinearem Zusammenhang zwischen Prädiktor X und Outcome Y, bei dem eine gerade Regressionslinie schlecht passt

Wir fahren fort, indem wir in R ein lineares Regressionsmodell erstellen. Dies geschieht mit der Funktion lm(), die in Base R enthalten ist (Sie müssen kein Package installieren).

modell <- lm(glucose ~ mass, data=PimaIndiansDiabetes)

summary(modell)
Call:
lm(formula = glucose ~ mass, data = PimaIndiansDiabetes)

Residuals:
     Min       1Q   Median       3Q      Max
-128.970  -20.756   -3.705   19.509   81.568

Coefficients:
            Estimate Std. Error t value             Pr(>|t|)
(Intercept)  92.2129     4.7083  19.585 < 0.0000000000000002 ***
mass          0.8965     0.1429   6.274       0.000000000589 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 31.2 on 766 degrees of freedom
Multiple R-squared:  0.04887,	Adjusted R-squared:  0.04763
F-statistic: 39.36 on 1 and 766 DF,  p-value: 0.0000000005891
Streudiagramm von BMI (mass) gegen Glukose nach Diabetesstatus mit blauer Regressionsgerade und markiertem Achsenabschnitt β0 bei x = 0

Aus dem obigen Ergebnis geht Folgendes hervor:

  • Der Achsenabschnitt b0b_0 beträgt 92,2, das heißt, die Regressionsgerade schneidet die Y-Achse bei Y=92,2, was mit der grafischen Untersuchung übereinzustimmen scheint.
  • bBMIb_{BMI}, also der Koeffizient für mass, beträgt 0,8965. Das bedeutet: Steigt mass um 1 Einheit, steigt glucose um 0,8965 Einheiten.

Berechnung der Regressionsgeraden

Grundlegend für die Regressionsanalyse ist die Berechnung der Regressionsgeraden. Die gebräuchlichste Methode ist die least-squares method (auf Deutsch Methode der kleinsten Quadrate). Least-Squares wird auch als ordinary least-squares bezeichnet. Die Methode erzeugt eine Gerade, die die Summe der Fehler (error) minimiert. In der folgenden Abbildung wurden dieselben Daten wie oben (die Pima-Indianer) im Intervall 50 bis 150 auf der x-Achse und der y-Achse vergrößert, um zu verdeutlichen, was Quadratsummen sind. In der folgenden Abbildung ist außerdem eine Regressionsgerade zu sehen.

Streudiagramm von mass gegen glucose mit einer roten Linie und senkrechten Strichen, die den Abstand jedes Punktes zur Linie zeigen

Least-Squares zielt darauf ab, eine Regressionsgerade zu erstellen, die die Summe der Fehler aller Beobachtungen minimiert. In der obigen Abbildung ist zu erkennen, dass der Abstand der Regressionsgeraden zu den Punkten stark variiert. Im Intervall 100 bis 140 auf der x-Achse liegt die Gerade nahe an den Punkten (der Fehler ist klein), außerhalb dieses Intervalls ist die Gerade weiter von den Punkten entfernt (der Fehler ist größer). Die Methode der Quadratsummen besteht darin, den gesamten (totalen) Fehler zu minimieren. Die Gerade wird hin und her gekippt, bis die Steigung die Summe aller Fehler minimiert. Bevor alle Fehler addiert werden, werden sie quadriert; damit sollen alle negativen Fehler (die der Punkte unterhalb der Geraden) zu positiven Werten werden. Die Summe aller quadrierten Fehler wird RSS (Residual Sum of Squares) genannt. Die Aufgabe des linearen Modells besteht somit darin, b1b_1 und b0b_0 zu finden, die RSS minimieren. Die Formel für RSS lautet:

RSS=(y1−B0^−B1^x1)2+(y2−B0^−B1^x2)2+…+(yn−B0^−B1^xn)2RSS = (y_1 - \hat{B_0} - \hat{B_1}x_1)^2 + (y_2 - \hat{B_0} - \hat{B_1}x_2)^2 + … + (y_n - \hat{B_0} - \hat{B_1}x_n)^2

Bestimmtheitsmaß (coefficient of determination): R2

Um die Stärke des Zusammenhangs zwischen XX und YY zu schätzen, kann man den coefficient of determination (Bestimmtheitsmaß) verwenden, auch R2R^2 genannt. Dieser Wert reicht von 0 bis 1. Ist R2R^2 gleich 0, besteht kein Zusammenhang, und ist R2R^2 gleich 1, besteht ein perfekter Zusammenhang, das heißt, XX kann die gesamte Variation von YY erklären.

Annahmen der Regression mit der Least-Squares-Methode

Die folgenden Annahmen sind erforderlich, damit Least-Squares angewendet werden kann:

  1. Die Residuen müssen mit dem Mittelwert 0 normalverteilt sein. Dies lässt sich mit einem sogenannten Quantil-Quantil-Plot überprüfen. Im Quantil-Quantil-Plot sollte eine gerade Linie zu sehen sein, wenn die Annahme erfüllt ist.
  2. Die Residuen müssen eine konstante Varianz aufweisen. Dies lässt sich mit einem Streudiagramm der geschätzten Residuen gegen die Fitted Values überprüfen. Das Streudiagramm sollte eine Punktwolke ohne Zusammenhang zwischen den Werten zeigen.
  3. Die Residuen müssen voneinander unabhängig sein. Dies ist selten ein Problem, es sei denn, dieselbe Person/Zelle/Bakterie/Einheit/usw. ist mehrmals in der Studienpopulation enthalten. Ist dieselbe Person mehrmals in der Studienpopulation enthalten (beispielsweise durch wiederholte Messungen von BMI und Glukose), sind die Residuen dieser Beobachtungen voneinander abhängig.

Punkt (1) und (2) lassen sich in R einfach mit folgendem Befehl untersuchen, der alle erforderlichen Grafiken ausgibt:

plot(modell)
Residuals vs fitted: Residuen gegen die Fitted Values aufgetragen. Hier darf kein Muster vorliegen. Die Punkte sollen eine Wolke ohne Assoziation zwischen Residuen und Fitted Values bilden.
Residuals vs fitted: Residuen gegen die Fitted Values aufgetragen. Hier darf kein Muster vorliegen. Die Punkte sollen eine Wolke ohne Assoziation zwischen Residuen und Fitted Values bilden.
Quantile-Quantile plot (QQ-Plot): Dieser soll eine vollkommen gerade Linie zeigen, was in diesem Fall zutrifft (auch wenn an den Enden eine leichte Abweichung besteht).
Quantile-Quantile plot (QQ-Plot): Dieser soll eine vollkommen gerade Linie zeigen, was in diesem Fall zutrifft (auch wenn an den Enden eine leichte Abweichung besteht).
Scale-Location-Diagramm: Wurzel der absoluten standardisierten Residuen gegen die Fitted Values für lm(glucose ~ mass)
Residuals-vs-Leverage-Diagramm mit Cook-Distanz für lm(glucose ~ mass), in dem einige Beobachtungen nummeriert sind

Vorhersage mit der Regression

Das Regressionsmodell kann zur Vorhersage verwendet werden. Das bedeutet, dass wir den Wert von Y für einen gegebenen Wert von X schätzen können. Es kann beispielsweise von Interesse sein vorherzusagen, wie hoch glucose bei einem gegebenen Wert von mass sein wird. Dazu erstellen wir nun ein neues Modell mit der Spezifikation glucose ~ ., was bedeutet, dass wir glucose gegen alle anderen Variablen modellieren. Anschließend verwenden wir predict() mit dem Modellobjekt (modell_2) und geben an, an welchen Daten wir das Modell testen wollen. In diesem Fall testen wir an denselben Daten, mit denen wir das Modell trainiert haben, was nicht empfohlen wird. Den vorhergesagten Wert speichern wir als neue Spalte (Predicted_Glucose) im selben Data Frame. Ganz zum Schluss geben wir die ersten 10 Zeilen mit beobachteten und vorhergesagten Werten aus.

modell_2 <- lm(glucose ~ ., data=PimaIndiansDiabetes)

PimaIndiansDiabetes$Predicted_Glucose <- predict(modell_2, newdata=PimaIndiansDiabetes)

select(PimaIndiansDiabetes, glucose, Predicted_Glucose) %>%
  slice(1:10)
        glucose     Predicted_Glucose
1	148	    134.03797
2	85	    100.53489
3	183	    130.46052
4	89	    106.04599
5	137	    145.69693
6	116	    106.94069
7	78	    128.57557
8	115	    98.26398
9	197	    181.40914
10	125	    136.97599

Multiple Regression

Wenn wir untersuchen wollen, wie der BMI (mass) mit der Glukose (glucose) kovariiert, und dabei auch das Alter berücksichtigen möchten, verwenden wir die multiple Regression. Die multiple Regression ist schlicht als Regression mit mindestens 2 Prädiktoren definiert. Die multiple Regression folgt denselben Prinzipien wie die bisher besprochene lineare Regression. Die Least-Squares-Methode wird wie gewohnt angewendet, in diesem Fall wird jedoch keine Regressionsgerade, sondern eine Regressionsebene durch die Datenpunkte gelegt. Diese Ebene hat ein dreidimensionales Erscheinungsbild, das unten anhand derselben Daten veranschaulicht wird. Der zweite Prädiktor ist pressure (Blutdruck).

Dreidimensionales Diagramm mit Regressionsebene für glucose gegen mass und pressure, Farbskala nach Glukosewert

Der Code für das Regressionsmodell lautet:

modell_2 <- lm(glucose ~ mass + pressure, data=PimaIndiansDiabetes)
summary(modell_2)
Call:
lm(formula = glucose ~ mass + pressure, data = PimaIndiansDiabetes)

Residuals:
     Min       1Q   Median       3Q      Max
-129.725  -20.893   -3.277   19.206   80.092

Coefficients:
            Estimate Std. Error t value             Pr(>|t|)
(Intercept) 84.60294    5.48135  15.435 < 0.0000000000000002 ***
mass         0.78442    0.14834   5.288          0.000000161 ***
pressure     0.16201    0.06042   2.681              0.00749 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 31.08 on 765 degrees of freedom
Multiple R-squared:  0.05773,	Adjusted R-squared:  0.05526
F-statistic: 23.43 on 2 and 765 DF,  p-value: 0.0000000001326

Die Koeffizienten werden wie folgt interpretiert.

  • Steigt mass um 1 Einheit, nimmt glucose um 0,78442 Einheiten zu. Dieser Effekt ist für pressure adjustiert.
  • Steigt pressure um 1 Einheit, nimmt glucose um 0,16201 Einheiten zu. Dieser Effekt ist für mass adjustiert.