Willkommen bei Stats by Randolph. Hier geht es zur Hauptseite mit weiteren Informationen und Inhalten.
Autor:innen dieser Seite: An den Inhalten dieser Seite haben mitgearbeitet: Markus Janczyk, Eva Röttger und Valentin Koob. Der Inhalt dieser Seite wird in der Lehre in den Studiengängen Psychologie von der AG Forschungsmethoden und Kognitive Psychologie an der Universität Bremen verwendet, steht aber allen Interessierten zur Verfügung. Rückmeldungen/Fehler/Vorschläge können gesendet werden an randolph@uni-bremen.
Versionshistory:
Das Ziel der Regressionsrechnung ist es, eine mathematische Gleichung zu finden, die auf kompakte Art und Weise empirische Daten “bestmöglich” beschreibt. Dazu betrachten wir die Beispiele der nächsten Abbildung, in der die Daten von \(n=5\) Personen dargestellt sind, von denen das Alter und die Größe gemessen wurden.
Im linken Teil ist die Korrelation der beiden Variablen mit \(r=1.0\) angegeben und alle Punkte liegen klar auf einer Geraden. Diese Gerade hat die allgemeine Form
\[\text{Größe}=b\cdot\text{Alter}+a\] wobei \(b\) die Steigung und \(a\) der Achsenabschnitt ist. Im rechten Teil der Abbildung ist die die Korrelation der beiden Variablen \(r=0.95\) und natürlich liegen dann nicht mehr alle Daten auf einer Geraden. Dennoch scheint ein linearer Zusammenhang vorzuliegen und die eingezeichnete gestrichelte Gerade scheint eine intuitiv gute und kompakte Zusammenfassung der Daten zu sein, von der manche Datenpunkte nach oben und andere nach unten abweichen. Die Frage, wie \(b\) und \(a\) dieser Geraden gewählt werden müssen, um die Daten “möglichst gut” zu beschreiben, ist Thema dieses Kapitels.
Wir betrachten hier die einfache lineare Regression. Das heißt, wir betrachten lineare Funktionen, die lediglich von einer Variablen (siehe x-Achse) abhängen und damit als Gerade repräsentiert werden können, um eine zweite Variable (siehe y-Achse) zu beschreiben. Beide Variablen müssen bei einer einfachen linearen Regression intervallskaliert sein.
In einem späteren Teil werden wir dann auch Funktionen betrachten, die von mehreren Variablen abhängen, die multiple Regression sowie Zusammenhänge mit einer weiteren Variablen, die auch nicht-linear sein können, also z.B. quadratisch, exponentiell, usw. Zusätzlich lassen wir dann auch Variablen anderen Skalenniveaus zu, was z.B. zur logistischen Regression führt.
Aus der vorherigen Abbildung wird deutlich, dass es einen Zusammenhang von Korrelation und Regression gibt. Im Detail ist die Sichtweise beider Verfahren aber auch unterschiedlich. Bei der Korrelation wird ein einfacher Zusammenhang zwischen \(X\) und \(Y\) angenommen, während die kausale Richtung unbestimmt bleibt. In der Regression wird hingegen zuweilen eine kausale Richtung unterstellt. Damit verfolgt die Regression auch die Möglichkeit zur Vorhersage des Wertes einer Variablen bei Kenntnis bzw. Annahme eines Wertes auf einer anderen Variablen. Die folgende Abbildung stellt noch einmal die idealisierten Daten da, bei denen alle Datenpunkte auf einer Geraden liegen. In dieser Stichprobe wurde keine vierjährige Person untersucht. Kennen wir allerdings die Geradengleichung können wir berechnen, welche Größe eine Person dieses Alters haben sollte. Dies wird durch die beiden roten gestrichelten Linien veranschaulicht und die Schätzung wäre in etwa eine Größe von \(68.6\) cm.
Andere Beispiele wären:
In diesen Beispielen wird eine Variable des einen (früheren) Zeitpunktes zur Vorhersage der Variable des anderen (späteren) Zeitpunktes genutzt. Wenn es tatsächlich eine kausale Verursachung gibt, ist ihre Richtung dann vorgegeben.
Hier werden (vermutlich) beide Variablen gleichzeitig erhoben und in diesem Fall wird eine Kausalrichtung unterstellt, wenn es sie überhaupt gibt.
In der Regressionsrechnung gibt es für die Variablen spezielle Namen:
Wir betrachten nun die folgenden Beispieldaten, die einen positiven, linearen Zusammenhang zwischen den beiden Variablen \(X\) und \(Y\) nahelegen. Dazu legen wir verschiedene Geraden in das Koordinatensystem und überlegen, wie gut diese Geraden die Daten widerspiegeln. Je besser eine Gerade dies tut, umso weniger sollten die Datenpunkte auf der \(y\)-Achse (d.h. auf dem Kriterium) von der Geraden abweichen. Diese Abweichung quantifizieren wir, indem wir für jeden Wert auf dem Prädiktor \(X\) die Differenz des dazugehörigen Wertes auf \(Y\) und des Wertes auf der Geraden bestimmen und die absoluten Differenzen dann aufsummieren. Diese Summe wäre dann ein Maß für die “Gesamtabweichung”.
Als einen 1. Versuch legen wir eine Gerade einfach parallel zur \(x\)-Achse in das Koordinatensystem, bei der vermutlich jede:r zustimmen würde, dass sie die Daten nicht gut repräsentiert (linker Teil der folgenden Abbildung). Danach berechnen wir für jeden Datenpunkt die Abweichung des Datenpunktes von der Geraden in \(y\)-Richtung. Für den Datenpunkt mit \(x=2\) ergibt sich also eine Abweichung von \(3-12=-9\). Der rechte Teil der Abbildung zeigt dies für alle Datenpunkte und die Summe der absoluten Abweichungen ergibt dann \(26\). Diese Zahl ist ein erstes Maß dafür, wie gut die Gerade die Daten repräsentiert: je kleiner die Summe der absoluten Abweichungen, desto besser wäre die Passung. Nun verschieben wir als 2. Versuch die Gerade nach unten (linker Teil der folgenden Abbildung) und berechnen die Abweichungen auf die gleiche Weise. Da die Summe der absoluten Abweichungen kleiner wird, scheint diese Gerade besser geeignet zu sein – auch wenn sie offenbar die Daten trotzdem nicht wirklich gut widerspiegelt. Versuchen wir es als 3. Versuch mit einer Geraden mit negativer Steigung (rechter Teil der folgenden Abbildung) wird die Passung sogar schlechter (was erwartbar ist, da der Zusammenhang ja positiv ist).
Probieren wir es mit einer Geraden mit einer positiven Steigung als 4. und 5. Versuch sehen wir, dass die Summe der absoluten Abweichungen auch direkt kleiner wird. Die exakte Steigung der Geraden hat aber ebenso noch Auswirkungen auf die Passung, wie man im Vergleich der beiden folgenden Abbildungen sehen kann.
Nun wollen wir formalisieren, wie wir an die “beste” Gerade kommen. Der Ausgangspunkt der folgenden Überlegungen ist die allgemeine Geradengleichung \[\hat{Y} = b\cdot X +a \] wobei \(\hat{Y}\) diejenigen Werte auf dem Kriterium sind, die durch die Gerade für die Werte des Prädiktors \(X\) vorhergesagt werden und \(b\) bzw. \(a\) die Steigung bzw. der Achsenabschnitt der Geraden ist. Gesucht werden nun diejenigen Werte für \(b\) und \(a\) mit denen “die Summe der Abweichungen” minimal wird, was dann heißt, dass diese Gerade die Daten “bestmöglich” widerspiegelt.
In der folgenden Abbildung betrachten wir als Beispiel den 2. Datenpunkt mit den empirischen Koordinaten \((x_2,y_2)\). Der für \(x_2\) von der Gerade vorhergesagte Wert ist dann \(\hat{y}_2\) und dieser Punkt hat entsprechend die Koordinaten \((x_2,\hat{y}_2)\). Als Residuum \(e_i\) bezeichnen wir nun die Distanz zwischen beobachtetem und vorhergesagtem Wert bzgl. der \(y\)-Achse: \[e_i = y_i-\hat{y}_i\]
In Teil 4 (Abschnitt 4.3) hatten wir das Kriterium der kleinsten Quadrate kennengelernt. Statt absoluter Abweichungen (also \(|e_i|\)) werden wir auch hier wieder quadrierte Abweichungen benutzen, das heißt, wir betrachten für jeden Datenpunkt das quadrierte Residuum \(e_i^2\). Insgesamt wollen wir dann erreichen, dass die Summe der quadrierten Residuen möglichst klein wird. Wir nennen diese Summe \(Q\) und setzen für \(e_i^2\) direkt nach obiger Definition \((y_i-\hat{y}_i)^2\) ein: \[Q=\sum_{i=1}^n e_i^2=\sum_{i=1}^n (y_i-\hat{y}_i)^2\]
Nun setzen wir noch für \(\hat{y}_i\) die allgemeine Form der Geradengleichung ein, also \[Q=\sum_{i=1}^n e_i^2=\sum_{i=1}^n (y_i-[b\cdot x_i + a])^2\] und erhalten damit eine Funktion \(Q\), die (für gegebene Werte auf den Variablen \(X\) und \(Y\)) von zwei Variablen abhängig ist, nämlich von \(b\) (der Steigung) und \(a\) (dem Achsenabschnitt): \[Q(b,a)=\sum_{i=1}^n (y_i-[b\cdot x_i + a])^2\]
Der letzte Schritt besteht nun daraus herzuleiten, für welche Werte von \(b\) und \(a\) die Funktion \(Q(b,a)\) ihr Minimum annimmt. Tatsächlich gibt es für jeden Satz an gegebenen Werten für \(X\) und \(Y\) eine eindeutige analytische Lösung. Dazu werden zunächst die partiellen Ableitungen von \(Q(b,a)\) nach \(b\) und nach \(a\) gebildet und gleich Null gesetzt. Dann kann das entstandene Gleichungssystem gelöst werden und es ergeben sich als optimale Werte für \(b\) und \(a\) (eine ShinyApp zum Ausprobieren finden Sie hier und eine ausführliche Herleitung wird hier gezeigt): \[ b=\frac{\text{Kov}(X,Y)}{S_X^2}\text{ und } a=M_Y - b\cdot M_X \] Beide Werte werden auch als Regressionskoeffizienten bezeichnet:
Setzen wir entsprechend für \(\frac{\text{Kov}(X,Y)}{S_X^2}\) nun \(r_{XY}\cdot\frac{S_Y}{S_X}\) in die Gleichung der Regressionsgeraden ein, kann diese Regressionsgerade auch geschrieben werden als: \[ \hat{Y}=r_{XY}\cdot\frac{S_Y}{S_X}\cdot (X-M_X)+M_Y \] Diese Form der Regressionsgeraden hebt die Beziehung zwischen Korrelation und Regression nocheinmal hervor, die wir im folgenden genauer untersuchen werden.
Die optimale Regressionsgerade hat einige Eigenschaften, die wir hier kurz betrachten:
Wir betrachten nun einige Zusammenhänge zwischen den Variablen \(X\) und \(Y\), also dem Prädiktor und dem Kriterium, und der Residuenvariable \(E\). Auch hier werden wir sehen, dass uns der Korrelationskoeffizient \(r_{XY}\) wieder begegnen wird.
Insgesamt ergibt sich also als Mittelwert und Varianz der Variablen \(\hat{Y}\): \[ M_{\hat{Y}}=M_Y\text{ und }S^2_{\hat{Y}}=r_{XY}^2\cdot S_Y^2 \]
Als nächstes betrachten wir nun die Residuenvariable \(E\), also die rot-eingezeichneten Linien in der folgenden Abbildung, und bestimmen den Mittelwert und die Varianz von \(E\).
Für den Mittelwert von \(E\) ergibt sich sehr schnell \(M_E=0\): \[\begin{aligned} M_E &=M_{Y-\hat{Y}}\\ &=M_Y-M_{\hat{Y}}\\ &=M_Y-M_Y\\ &=0 \end{aligned}\]Die Varianz von \(E\) ist etwas schwerer zu bestimmen (die vollständige Herleitung finden Sie hier) und es ergibt sich \[S^2_E=S_Y^2\cdot(1-r^2_{XY})\] Zu \(S_E^2\) sagt man auch Schätzfehlervarianz. Die Wurzel aus ihr wird auch Standardschätzfehler genannt. Zwei Beziehungen können leicht gezeigt werden:
Im Prinzip kann für jeden Satz an Werten für die Variablen \(X\) und \(Y\) eine Regressionsgerade bestimmt werden, die die Daten bestmöglich repräsentiert. Dies bedeutet aber noch nicht, dass die Regressionsgerade auch wirklich “gut” ist. Die Vorarbeiten aus Abschnitt 3 ermöglichen nun leicht die Herleitung einer wichtigen Beziehung. Diese wird uns dem Konzept der Varianzaufklärung näherbringen und eine Zahl liefern, die eine relative Auskunft darüber gibt, wie gut die Regressionsgerade die Daten repräsentiert.
Aus der Defnition der Residuen folgt zunächst \[ E=Y-\hat{Y}\Leftrightarrow Y=\hat{Y}+E \] Das heißt, dass die Varianz von \(Y\) gleich der Varianz von \(\hat{Y}+E\) ist und unter Verwendung der Rechenregeln für die Varianz folgt dann: \[ S_Y^2=S^2_{\hat{Y}+E}=S^2_{\hat{Y}}+S_E^2+2\cdot \text{Kov}(\hat{Y},E) \] Zusätzlich haben wir am Ende des letzten Abschnitts gezeigt, dass \(\text{Kov}(\hat{Y},E)=0\) ist, und damit vereinfacht sich die letzte Gleichug zu: \[S_Y^2=S^2_{\hat{Y}}+S_E^2\] In Worten heißt dies, dass sich die Varianz von \(Y\) additiv zusammensetzt aus der Varianz der vorhergesagten Werte \(\hat{Y}\) und der Varianz der Residuen \(E\). Dies ist ein Beispiel für eine sog. Varianzaufteilung. Hier wird die Varianz von \(Y\) aufgeteilt in…
Im Extremfall, wenn alle Datenpunkte auf der Regressionsgeraden liegen, gilt zunächst \(|r_{XY}|=1\). Das heißt aber auch, dass alle Residuen Null sind und die Variable \(E\) daher keine Varianz besitzt, also \(S_E^2=0\) ist. In diesem Fall gilt dann weiter:
\[\begin{aligned} S_Y^2 &= S^2_{\hat{Y}}+S_E^2\\ &= S^2_{\hat{Y}}+0\\ &= S^2_{b\cdot X+a}\\ &= b^2\cdot S_X^2 \end{aligned}\]In diesem Fall ist die Varianz von \(Y\) also bis auf den Faktor \(b^2\) gleich der Varianz von \(X\), das heißt, die Varianz von \(Y\) ist vollständig determiniert (bestimmt) durch die Varianz der Werte auf \(X\). In diesem Fall wird auch gesagt, die Varianz von \(Y\) würde vollständig durch die Varianz von \(X\) aufgeklärt werden.
Im Regelfall ist aber die Korrelation \(|r_{XY}|<1\) und daher gibt es auch eine positive Varianz der Residuen, also \(S_E^2>0\). In diesem Fall ist die Varianz von \(\hat{Y}\) aber nach wie vor vollständig durch die lineare Beziehung, also durch das statistische Modell, aufgeklärt (es liegen ja alle Punkte von \(\hat{Y}\) auf der Geraden). Als Maß der Varianzaufklärung berechnen wir nun den Anteil der durch die lineare Beziehung aufgeklärten Varianz (also \(S^2_{\hat{Y}}\)) an der Gesamtvarianz von \(Y\), also \(S_Y^2\): \[\frac{S^2_{\hat{Y}}}{S_Y^2}\left[=\frac{S^2_{\hat{Y}}}{S^2_{\hat{Y}}+S_E^2}\right]\] Da beide Werte nie negativ sind und die Varianz im Zähler nie größer sein kann als die Varianz im Nenner, liegt der Bruch immer im Interval \([0,1]\). Je mehr Varianz aufgeklärt wird (d.h., je größer \(S^2_{\hat{Y}}\) und je kleiner \(S_E^2\) wird), desto mehr geht der Bruch gegen 1. Das heißt, dass ein höherer Wert für mehr Varianzaufklärung durch das statistische Modell (hier also die Regressionsgerade) spricht.
Weiter oben hatten wir eingeführt, dass \[S^2_{\hat{Y}}=r^2_{XY}\cdot S_Y^2\] gilt. Wenn wir diese Gleichung umstellen, wird wieder eine Beziehung zur Korrelation deutlich: \[\frac{S_\hat{Y}^2}{S_Y^2}=r^2_{XY}\] Die quadrierte Korrelation von Kriterium \(Y\) und Prädiktor \(X\), also \[r^2_{XY}\] wird als Determinationskoeffizient bezeichnet und ist im Fall der einfachen linearen Regression also ein Maß für die Varianzaufklärung. Für die Beispieldaten, die wir weiter oben verwendet haben, ergibt sich \[r^2_{XY}=0.652\] Es ist dann üblich zu sagen, 65.2% der Varianz von \(Y\) würden durch die Varianz von \(X\) aufgeklärt werden. Als Hinweis bereits an dieser Stelle sei schon einmal vorweg genommen, dass \(r^2_{XY}\) ein Spezialfall des allgemeineren Maßes \(R^2\) ist (welches wir im Kontext multiple Regression einführen werden, und welches auch in Outputs von R zu sehen ist).
In diesem Abschnitt demonstrieren wir zunächst die rechnerische
Durchführung per Hand unter Verwendung der Formeln. Anschließend
demonstrieren wir die entsprechende Variante mit R und der Funktion
lm()
. Dazu benutzen wir die folgenden Beispieldaten von
\(n=10\) Personen, von denen zwei
Variablen \(X\) (als Prädiktor) und
\(Y\) (als Kriterium) erhoben
wurden:
Diese Daten sind als Punktewolke in der folgenden Abbildung dargestellt. Die blaue gestrichelte Linie ist die optimale Regressionsgerade die sich aus der Gleichung \[ \hat{Y}=-1.461\cdot X+20.051 \] ergibt.
Eine Hilfe beim händischen Berechnen der Regressionskoeffizienten, sind die alternativen Berechnungsarten für die Kovarianz und die Varianz. Dazu erstellen wir aus den Rohdaten eine Tabelle, in der wir zunächst die beiden Variablen \(X^2\) und \(X\cdot Y\) berechnen und dann von allen Variablen die Mittelwerte:
Nun können wir leicht die Kovarianz von \(X\) und \(Y\) bestimmen als \[\begin{aligned} \text{Kov}(X,Y) &= M_{XY}-M_X\cdot M_Y \\ &= 57.7-5.1\cdot 12.6\\ &= -6.56 \end{aligned}\] und ebenso die Varianz von \(X\): \[\begin{aligned} S_X^2 &= M_{X^2}-(M_X)^2\\ &= 30.5-5.1^2\\ &= 4.49 \end{aligned}\] Diese Werte setzen wir nun in die Formeln für \(b\) und \(a\) ein und erhalten \[\begin{aligned} b &= \frac{\text{Kov}(X,Y)}{S_X^2}\\\\ &= \frac{-6.56}{4.49}\\\\ &= -1.461 \end{aligned}\] und \[\begin{aligned} a &= M_Y-b\cdot M_X\\\\ &= 12.6+1.461\cdot 5.1\\\\ &= 20.051 \end{aligned}\]Zum Vergleich demonstrieren wir kurz die Anwendung der Formeln direkt in R:
# Ausgangsdaten
X <- c( 1, 3, 5, 4, 6, 4, 7, 8, 5, 8)
Y <- c(19, 18, 14, 13, 15, 12, 9, 10, 9, 7)
# neue Variablen berechnen
XY <- X * Y # X mal Y
X2 <- X^2 # X-Quadrat
# dann daraus Kovarianz von X und Y und die Varianz von X berechnen
kov.XY <- mean(XY) - mean(X) * mean(Y)
varianz.X <- mean(X2) - mean(X)^2
# als Koeffizienten ergeben sich dann
b <- kov.XY / varianz.X # Regressionsgewicht / Steigung
a <- mean(Y) - b * mean(X) # Intercept / Achsenabschnitt
# formatiert schön ausgeben könnte man die Werte so:
paste0("Regressionsgewicht b = ", round(b,3), " Intercept = ", round(a,3))
## [1] "Regressionsgewicht b = -1.461 Intercept = 20.051"
lm()
Viele Regressionen werden mit der Funktion lm()
berechnet, wobei der Name der Funktion für linear model steht.
Diese Funktion benutzt die Modellsprache von R, die wir
daher hier nun einführen werden. Tatsächlich ist diese Sprache sehr
mächtig und viele Funktionen können auf diese Art und Weise benutzt
werden.
Das Beispiel der einfachen linearen Regression kann auch formuliert
werden als: “Das Kriterium soll durch den Prädiktor modelliert werden”.
Derartige Formulierungen werden uns später immer wieder begegnen, und es
ist ratsam, sich die Modellsprache daher anzugewöhnen. Das Beispiel der
einfachen linearen Regression wird formuliert als: \[
\text{Kriterium ~ Prädiktor(en)}
\] Links der Tilde steht also die Variable, die modelliert werden
soll (hier das Kriterium) und rechts steht die Variable, die zur
Modellierung genutzt werden soll (hier also ein Prädiktor). Da
üblicherweise die Daten als DataFrame vorliegen, legen wir einen solchen
zunächst unter dem Namen daten
an und arbeiten dann damit
weiter:
# Ausgangsdaten
X <- c( 1, 3, 5, 4, 6, 4, 7, 8, 5, 8)
Y <- c(19, 18, 14, 13, 15, 12, 9, 10, 9, 7)
daten <- data.frame(X,Y) # Zusammenfassung zu einem DataFrame
head(daten, n = 3) # die ersten 3 Zeilen ausgeben
Der Funktion lm()
werden dann im einfachsten Fall zwei
Dinge übergeben, nämlich zum einen die Modellgleichung und zum anderen
der DataFrame, in dem die Variablen der Modellgleichung zu finden
sind:
# Berechnung der Regression mit lm():
modell <- lm(Y ~ X, # Y modelliert durch X
data = daten) # welcher Datensatz?
modell # gibt bereits die Koeffizienten aus...
##
## Call:
## lm(formula = Y ~ X, data = daten)
##
## Coefficients:
## (Intercept) X
## 20.051 -1.461
Unter (Intercept)
finden wir den Achsenabschnitt, also
den Wert für \(a\), und unter
X
(der Name des Prädiktors) finden wir das
Regressionsgewicht, also \(b\).
Auf die Koeffizienten können wir auch direkt zugreifen, da diese im
Objekt modell
(also dem Ergebnis von lm()
)
gespeichert sind. Da dies ein Vektor ist, können wir sogar die einzelnen
Werte auslesen und für weitere Analysen verwenden:
modell$coefficients # gibt auch die Koeffizienten aus (als Vektor)
## (Intercept) X
## 20.051225 -1.461024
modell$coefficients[1] # nur Intercept a
## (Intercept)
## 20.05122
modell$coefficients[2] # nur Steigung b
## X
## -1.461024
Es gibt noch eine Reihe weiterer nützlicher Funktionen, die wir auf
das Ergebnis der Funktion lm()
anwenden können. Zum
Beispiel können wir sehr leicht mit der Funktion predict()
die von der Regressionsgeraden vorhergesagten Werte, also \(\hat{Y}\) berechnen:
predict(modell)
## 1 2 3 4 5 6 7 8
## 18.590200 15.668151 12.746102 14.207127 11.285078 14.207127 9.824053 8.363029
## 9 10
## 12.746102 8.363029
Da die Residuen ja die Differenz der empirischen und der vorhergesagten Werte sind, \(E=Y-\hat{Y}\), können wir auch diese leicht berechnen:
daten$Y - predict(modell)
## 1 2 3 4 5 6 7
## 0.4097996 2.3318486 1.2538976 -1.2071269 3.7149220 -2.2071269 -0.8240535
## 8 9 10
## 1.6369710 -3.7461024 -1.3630290
Natürlich gibt es mit resid()
auch eine Funktion zur
Bestimmung der Residuen und sie sind auch direkt im Ergebnis von
lm()
gespeichert. Die Residuen werden wir im nächsten
Abschnitt zur Berechnung der sog. Partialkorrelation benötigen:
resid(modell) # oder: modell$residuals
## 1 2 3 4 5 6 7
## 0.4097996 2.3318486 1.2538976 -1.2071269 3.7149220 -2.2071269 -0.8240535
## 8 9 10
## 1.6369710 -3.7461024 -1.3630290
Eine vollständige Auswertung erhalten wir mit der Funktion
summary()
. Diese liefert aber eine Reihe von Details, die
wir erst später kennenlernen werden.
summary(modell)
##
## Call:
## lm(formula = Y ~ X, data = daten)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7461 -1.3241 -0.2071 1.5412 3.7149
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 20.051 1.988 10.085 7.97e-06 ***
## X -1.461 0.360 -4.058 0.00364 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.412 on 8 degrees of freedom
## Multiple R-squared: 0.6731, Adjusted R-squared: 0.6322
## F-statistic: 16.47 on 1 and 8 DF, p-value: 0.003642
In der Ausgabe erkennen wir aber die Regressionskoeffizienten auch
wieder. Zudem finden wir die Angabe
Multiple R-squared: 0.6731
. Wir hatten weiter oben schon
angemerkt, dass der Determinationskoeffizient \(r_{XY}^2\) ein Spezialfall (nämlich im Fall
der einfachen linearen Regression) genau dieses allgemeineren \(R^2\) ist. Dies können wir leicht
überprüfen, indem wir den Determinationskoeffizienten berechnen und mit
dem angegebenen \(R^2\)
vergleichen:
cor(daten$X, daten$Y)^2 # Determinationskoeffizient
## [1] 0.6730562
summary(modell)$r.squared # R^2 der Funktion lm()
## [1] 0.6730562
Die folgende Abbildung visualisiert Daten, bei denen eine Berechnung der Korrelation über alle Personen hinweg zu einer Fehlbeschreibung führt. An allen Personen wurden zum Einen die Variablen \(X\) und \(Y\) erhoben. Über alle Personen hinweg ergibt sich dann eine positiver linearer Zusammenhang:
cor(X, Y) # Korrelation zwischen X und Y
## [1] 0.8724247
Allerdings wurde auch eine dritte Variable \(Z\) erhoben und die Punkte der Punktwolke wurden eingefärbt, je nachdem welchen Wert eine Person auf dieser Variable geliefert hat. Betrachten wir nun diese Teil-Stichproben (also jeweils nach den Farben getrennt), dann wird klar, dass innerhalb jeder Teil-Stichprobe der Zusammenhang negativ ist, nämlich \(r=-0.56\). Tatsächlich gibt es auch einen Zusammenhang von \(Z\) mit \(X\) und \(Y\):
cor(X, Z) # Korrelation zwischen X und Z
## [1] 0.9582385
cor(Y, Z) # Korrelation zwischen Y und Z
## [1] 0.9582385
Um eine richtige Einschätzung des Zusammenhangs von \(X\) und \(Y\) zu erhalten, ist also eine Betrachtung nach Teilstichproben nötig. Statistisch wird dann versucht, den Einfluss einer (dritten) Variablen, hier also \(Z\), loszuwerden bzw. sie “auszupartialisieren”. Im vorliegenden Fall ist dafür die Partialkorrelation geeignet.
Eine Partialkorrelation liefert uns also den linearen Zusammenhang von \(X\) und \(Y\), wenn der lineare Zusammenhang zu einer dritten Variablen \(Z\) ausgeschaltet wurde. Dazu bedienen wir uns nun der einfachen linearen Regression, die wir in diesem Teil kennengelernt haben. Dies tun wir, da sie uns ja eben genau den linearen Anteil eines Prädiktors an einem Kriterium liefert. In unserem Fall ist nun also \(Z\) der Prädiktor und wir benutzen \(X\) und \(Y\) als Kriterium jeweils einer einfachen linearen Regression:
\(\hat{X}\) und \(\hat{Y}\) sind also nun die Variablen, die die lineare Beziehung zu \(Z\) widerspiegeln. Wie kommen wir nun an \(X\) und \(Y\) ohne genau diese lineare Beziehung zu \(Z\)? Indem wir von \(\hat{X}\) von \(X\) und \(\hat{Y}\) von \(Y\) subtrahieren, also die Residuen der beiden Regressionen betrachten: \[E_X=X-\hat{X}\hspace{0.5cm}\text{und}\hspace{0.5cm}E_Y=Y-\hat{Y}\] \(E_X\) und \(E_Y\) sind also \(X\) und \(Y\), aber vom linearen Einfluss von \(Z\) befreit.
Die Partialkorrelation \(r_{XY\cdot Z}\) ist nun die Korrelation der beiden Residuenvariablen, also: \[ r_{XY\cdot Z}=r_{E_X E_Y} \] Hier können wir natürlich auch die entsprechenden Werte einsetzen und durch einige Umformungen, gelangen wir zur folgenden Form: \[ r_{XY\cdot Z}=r_{E_X E_Y}=\frac{r_{XY}-r_{XZ}\cdot r_{YZ}}{\sqrt{1-r^2_{XZ}}\cdot\sqrt{1-r^2_{YZ}}} \] Dies können wir in R demonstrieren, indem wir zunächst die beiden Residuenvariablen speichern und dann deren Korrelation berechnen:
E_X <- resid(lm(X~Z)) # Residuum der Regression von X auf Z
E_Y <- resid(lm(Y~Z)) # Residuum der Regression von Y auf Z
cor(E_X, E_Y) # Korrelation der Residuenvariablen
## [1] -0.56
Natürlich gibt es auch Funktionen zur Berechnung der
Partialkorrelation. Eine Möglichkeit besteht in der Funktion
pcor.test()
aus dem Paket ppcor
. Das Ergebnis
ist unter estimate
zu finden:
library(ppcor)
pcor.test(X, Y, Z)
Eine implizite Annahme bei der Partialkorrelation ist, dass unter jeder Stufe von \(Z\) die Korrelation von \(X\) und \(Y\) identisch ist. Im obigen Beispiel ist dies der Fall. Die nächste Abbildung visualisiert ein Beispiel, wo dies allerdings nicht der Fall ist und in diesem Fall liefert die Partialkorrelation ein schwer zu interpretierendes Ergebnis.
Obwohl über alle Punkte hinweg wieder eine positive Korrelation vorliegt, ist die Partialkorrelation nun \(r_{XY\cdot Z}=0\):
cor(X, Y) # positive Korrelation über alle Daten hinweg
## [1] 0.9182209
pcor.test(X, Y, Z) # ... aber Partialkorrelation ist jetzt 0