Regressionsdiagnostik in RStudio

Erfahren Sie, wie Sie in RStudio die Annahmen der klassischen linearen Regression prüfen und wie Annahmeverletzungen begegnet werden kann.

Weiterlesen
Berthold | 11.07.2024 | Lesedauer 10 min

Regressionsdiagnostik in RStudio. In einem anderen Artikel wird aufgezeigt, wie lineare Regressionen mit RStudio durchgeführt werden können. Für eine korrekte Schätzung müssen bestimmte Voraussetzungen erfüllt sein. In der empirischen Praxis ist die Erfüllung aller Voraussetzungen leider oft nicht gewährleistet. Eine Verletzung der Modellannahmen der klassischen linearen Regression kann zu Verzerrungen bei Standardabweichungen, Schätzergebnissen und Signifikanzwerten führen. Um inkorrekte und irreführende Regressionsergebnisse zu vermeiden, sollten die Modellannahmen mithilfe einer Regressionsdiagnostik überprüft werden.

In diesem Beitrag werden die Modellannahmen der klassischen linearen Regression vorgestellt. Zudem wird anhand eines Beispiels gezeigt, wie eine Regressionsdiagnostik in RStudio durchgeführt werden kann. Es wird deutlich gemacht, welche Folgen die Verletzung einzelner Annahmen hat. Zusätzlich werden Strategien vorgestellt, wie diese vermieden werden können.

Die Berechnungen in RStudio erfolgen im Gegensatz zu anderen Statistik-Softwareprodukten nicht durch eine Menüleiste, sondern über einen Befehlscode bzw. eines Skripts. Hierzu wird der Code in ein Skript eingegeben und ausgeführt. Dieser Code dient gleichzeitig auch als Protokoll der Arbeitsschritte und kann Seminar- oder Abschlussarbeiten beigefügt werden.

Als Beispiel dient ein Datensatz, der neben dem Bruttoinlandsprodukt der Eurozone auch die Inflationsrate, das Zinsniveau, die Geldmenge M2, den Aktienindex Eurostoxx 50 und irrelevante Zufallszahlen enthält. Zunächst wird hierfür durch Klicken auf ‚+‘ in der linken oberen Ecke und Auswahl von ‚R Skript‘ ein neues Skript in RStudio erstellt. Anschliessend wird der Beispieldatensatz ‚daten.txt‘ eingelesen, indem nachfolgender Befehl ausgeführt wird:

datensatz <- read.table('daten.txt', dec=".", sep=";", header=TRUE)

Das Einlesen von Datensätzen in RStudio und die Schätzung linearer Regressionsmodelle werden in einem anderen Artikel genauer erklärt: Lineare Regression RStudio.

Funktionale Spezifikation des Modells

Korrekte Auswahl der unabhängigen Variablen

Im Idealfall sind alle relevanten unabhängigen Variablen im Regressionsmodell enthalten. Gleichzeitig sollten keine irrelevanten Variablen genutzt werden. Die Entscheidung, welche Variablen relevant sind, muss hierbei auf Basis theoretischer Überlegungen getroffen werden und ist nicht immer eindeutig.

In RStudio kann das anhand eines Beispiels gezeigt werden. Hierzu schätzt man folgende 3 Modellspezifikationen mithilfe des eingelesenen Datensatzes und vergleicht die Ergebnisoutputs:

vollständiges_modell <- lm(BIP_Eurozone ~ Zinsen + Inflation
   + Eurostoxx_50 , data=datensatz)

ohne_relevante_variable <- lm(BIP_Eurozone ~  Inflation
   + Eurostoxx_50 , data=datensatz)

mit_irrelevanter_variable <- lm(BIP_Eurozone ~ Zinsen
   + Inflation + Eurostoxx_50
   + Zufallszahlen , data=datensatz)

summary(vollständiges_modell)
summary(ohne_relevante_variable)
summary(mit_irrelevanter_variable)

Regressionsdiagnostik RStudio

Abbildung 1: Schätzung des ‚vollständigen Modells‘

Regressionsdiagnostik RStudio

Abbildung 2: Schätzung ohne relevante Variable

Regressionsdiagnostik RStudio

Abbildung 3: Schätzung mit irrelevanter Variable

Beim ‚vollständigen Modell‘ wird angenommen, dass Zinsen, Inflation und der Aktienindex Eurostoxx 50 signifikante Einflüsse auf das BIP der Eurozone ausüben. Lässt man hingegen Zinsen als relevante Variable weg, sind Schätzergebnisse (‚Estimate‘) und Standardfehler (‚Std. Error‘) bei der Inflation und dem Aktienindex Eurostoxx 50 im Vergleich zum ‚vollständigen Modell‘ stark verzerrt. Das Hinzufügen irrelevanter Zufallszahlen führt zu geringen Verzerrungen bei den Schätzergebnissen und grösseren Standardfehlern bei den unabhängigen Variablen. Bei perfekter Unabhängigkeit der Zufallszahlen vom BIP wären nur die Standardfehler verzerrt. Das Vorhandensein irrelevanter Variablen erschwert daher vor allem Hypothesentests.

Die Entscheidung, ob eine Variable aufgenommen werden sollte, wird hauptsächlich auf Basis der zugrunde liegenden Theorie getroffen. Zusätzlich können auch bestimmte Masszahlen herangezogen werden. Am bekanntesten ist das adjustierte Bestimmtheitsmass R², das in den Outputs der Abbildungen 1 bis 3 abgelesen werden kann. Je höher das adjustierte R² ist, desto besser ist die Auswahl der unabhängigen Variablen. Im Beispiel hat das ‚vollständige Modell‘ mit 0,711 das höchste adjustierte R², während sowohl das Auslassen der Zinsen (adj. R² = 0,454), als auch das Hinzufügen irrelevanter Zufallszahlen (adj. R² = 0,703) zu geringeren Werten führen.

Linearer Zusammenhang zwischen abhängiger und unabhängiger Variable

Die lineare Regression geht von einem linearen Zusammenhang zwischen abhängiger Variable und unabhängigen Variablen aus. Diese Annahme ist in der Realität häufig nicht erfüllt und sollte daher in RStudio überprüft werden.

Im Modell mit nur einer erklärenden Variablen kann man Linearität mit einem Streudiagramm und einer Regressionsgeraden überprüfen. Nachfolgender Befehl führt dies in RStudio für den Zusammenhang zwischen der Inflation und dem Aktienindex Eurostoxx 50 sowie für jenen zwischen den Zinsen und der Geldmenge M2 aus.

plot(datensatz$Eurostoxx_50, datensatz$Inflation, cex = 1.1,
     pch = 1,col = "black",
     main = "Zusammenhang zwischen Inflation und Eurostoxx 50",
     xlab="Eurostoxx 50", ylab="Inflation")

abline(lm(Inflation ~ Eurostoxx_50, data = datensatz),
     col="red", lwd=2)


plot(datensatz$Geldmenge_M2, datensatz$Zinsen, cex = 1.1,
     pch = 1,col = "black",
     main="Zusammenhang zwischen Zinsen und Geldmenge M2",
     ylab="Zinsen", xlab="Geldmenge M2")

abline(lm(Zinsen ~ Geldmenge_M2, data = datensatz),
     col="red", lwd=2)
Zusammenhang zwischen Inflation und Eurostoxx 50
Zusammenhang zwischen Inflation und Eurostoxx 50
Zusammenhang zwischen Zinsen und Geldmenge M2
Zusammenhang zwischen Zinsen und Geldmenge M2

Abbildung 4: Streudiagramme und Regressionsgeraden bei Schätzungen mit einer erklärenden Variablen

In beiden Streudiagrammen ist kein eindeutiger linearer Zusammenhang zu erkennen. Im linken Streudiagramm liegen alle Datenpunkte des linken Viertels oberhalb der Regressionsgerade und ziehen diese nach oben, wodurch sich auch der Schnittpunkt mit der Y-Achse verschiebt.

Im rechten Streudiagramm steht eine steigende Geldmenge zunächst mit einem Zinsanstieg in Verbindung. Dieser Effekt erreicht aber bei einer bestimmten Geldmenge ein Maximum und kehrt sich anschliessend um. Die Regressionsgerade suggeriert jedoch einen durchgängig negativen Zusammenhang. Eine Verletzung der Linearitätsannahme kann demnach zu falschen Schlussfolgerungen führen.

Bei Schätzungen mit mehreren unabhängigen Variablen kann der Zusammenhang zwischen diesen und der abhängigen Variable mithilfe eines Component + Residual Plots (Erweiterung eines Partial Residual Plots) dargestellt werden. Um dies darstellen zu können, muss vorher das Paket ‚car‘ installiert und geladen worden sein. Anschliessend kann man die grafische Darstellung der Component + Residual Plots des ‚vollständigen Modells‘ ausgeben:

install.packages("car")
library(car)
crPlots(vollständiges_modell)
Component + Residual Plots
Component + Residual Plots

Abbildung 5: Component + Residual Plots (Partial Residual Plots)

Diese partiellen Diagramme ermöglichen die Überprüfung der Linearität jeder einzelnen unabhängigen Variablen. Die blaue Linie zeigt die Werte, die bei einer perfekten linearen Beziehung auftreten würden. Die pinke Linie zeigt die tatsächlichen Werte. Je dichter blaue und pinke Linie beieinanderliegen, desto eher kann von einem linearen Zusammenhang ausgegangen werden. Die Abweichungen deuten im ‚vollständigen Modell‘ auf eine Verletzung der Linearitätsannahme hin. Analytisch kann das mit einem Rainbow-Test überprüft werden. Vor Durchführung dieses Tests muss das Paket ‚lmtest‘ installiert werden.

install.packages("lmtest")
library(lmtest)
raintest(vollständiges_modell)
Rainbow test
data: vollständiges_modell
Rain = 35.904, df1 = 60, df2 = 56, p-value < 2.2e-16

Abbildung 6: Output des Rainbow-Tests

Da der p-Wert unter 0,01 liegt, deutet der Test auf einen nicht linearen Zusammenhang hin. Daher sollte man hier versuchen, das Modell in ein linear schätzbares Modell zu transformieren. Insignifikante p-Werte (> 0,1) würden hingegen für einen linearen Zusammenhang sprechen.

Keine Multikollinearität

Diese Voraussetzung besagt, dass erklärende Variablen nicht miteinander korreliert sein dürfen. Liegt perfekte Multikollinearität zwischen zwei Variablen vor, ist eine Schätzung nur noch nach Entfernung einer der korrelierten Variablen möglich. Bei imperfekter Multikollinearität führt eine Schätzung vor allem zu höheren Standardfehlern, was wiederum Hypothesentests erschwert. In RStudio kann mittels des Varianzinflationsfaktors (VIF) auf Multikollinearität geprüft werden. Zur Berechnung der VIF-Werte des ‚vollständigen Modells‘ lädt man das Paket ‚car‘ und führt folgenden Befehl aus:

vif(vollständiges_modell)
Zinsen    Inflation  Eurostoxx_50 
2.390711    1.518060       2.215386

Abbildung 7: Varianzinflationsfaktor

Da die VIF-Werte aller unabhängigen Variablen unter 10 liegen, kann davon ausgegangen werden, dass im Modell keine Multikollinearität vorliegt. Sollte mindestens ein Wert über 10 liegen, müssen weitere Massnahmen ergriffen werden. So könnte man die Variable mit dem höchsten VIF-Wert entfernen. Hierbei muss aber darauf geachtet werden, dass dies nicht zu einer Fehlspezifikation führt. Weitere Möglichkeiten sind Datentransformationen oder die Verwendung zusätzlicher Beobachtungen.

Residualdiagnostik

Erwartungswert der Störgrösse ist nahe bei null

Im klassischen Regressionsmodell wird angenommen, dass die Störgrössen im Mittel einen Wert von null aufweisen. Eine Verletzung dieser Annahme führt zu Verzerrungen von Regressionsparametern und Varianzen. Mögliche Ursachen sind systematische Messfehler oder eine gestutzte abhängige Variable. Eine nachträgliche Überprüfung dieser Annahme ist im Regelfall nicht möglich. Daher sollten potenzielle Messfehler bereits bei der Datenerhebung bedacht und ausgeschlossen werden.

Homoskedastizität der Residuen

Homoskedastizität besagt, dass die Residuen für alle Beobachtungen eine konstante Varianz haben. Ist diese Voraussetzung verletzt, spricht man von Heteroskedastizität. Die geschätzten Koeffizienten sind dann zwar weiterhin nicht verzerrt, allerdings sind die Standardfehler verzerrt und somit ineffizient.

Homoskedastizität kann man in RStudio für das ‚vollständige Modell‘ durch folgenden Befehl grafisch mit einem Streudiagramm überprüfen:

plot(vollständiges_modell,1)

Dadurch wird das Verhältnis der geschätzten Werte des Modells und der Residuen zueinander dargestellt:

Residuals vs Fitted
Residuals vs Fitted

Abbildung 8: Streudiagramm Residuen und gefittete Werte

Bei Homoskedastizität wäre die Streuung gleichmässig verteilt und die rote Linie annähernd eine waagerechte Gerade. In der Abbildung ist die Streuung jedoch nicht konstant. Die rote Linie verläuft u-förmig. Die grafische Darstellung deutet daher auf Heteroskedastizität hin.

Mit einem studentisierten Breusch-Pagan-Test aus dem Paket ‚lmtest‘ kann man das auch analytisch prüfen.

bptest(vollständiges_modell)
studentized Breusch-Pagan test
data:  vollständiges_modell
BP = 9.3803, df = 3, p-value = 0.02464

Abbildung 9: studentisierter Breusch-Pagan Test

Die Nullhypothese („Homoskedastizität liegt vor“) kann abgelehnt werden, da der p-Wert unter 0,1 liegt. Der studentisierte Breusch-Pagan-Test deutet somit ebenfalls auf Heteroskedastizität hin. Aufgrund der Verzerrung in den Standardfehlern bietet es sich in diesem Fall an, das Modell mit robusten Standardfehlern neu zu schätzen.

Keine Autokorrelation der Residuen

Bei der linearen Regression dürfen die Residuen nicht miteinander korreliert („autokorreliert“) sein. Autokorrelation tritt vor allem bei Zeitreihendaten häufiger auf. Die Folgen sind vergleichbar mit denen der Heteroskedastizität. Die geschätzten Koeffizienten sind zwar weiterhin nicht verzerrt, die Standardfehler können jedoch verzerrt sein und zu falschen Ergebnissen bei Hypothesentests führen.

Im ‚vollständigen Modell‘ wurden Zeitreihendaten untersucht, wodurch das Vorliegen von Autokorrelation sehr wahrscheinlich ist. Zur Überprüfung kann in RStudio der Durbin-Watson-Test aus dem Paket ‚car‘ verwendet werden.

durbinWatsonTest(vollständiges_modell)
lag Autocorrelation D-W Statistic p-value
1      0.9157353     0.1424085     0
Alternative hypothesis: rho != 0

Abbildung 10: Durbin-Watson-Test

Die D-W-Teststatistik liegt immer im Bereich zwischen 0 und 4. Je dichter der Wert an 2 liegt, desto geringer ist die Autokorrelation. Der D-W-Wert (0,1424085) des ‚vollständigen Modells‘ liegt dicht bei 0, was auf eine starke positive Autokorrelation hindeutet. Wäre der D-W-Wert hingegen dicht bei 4, würde dies für eine negative Autokorrelation sprechen. Der p-Wert des Durbin-Watson-Tests liegt zudem bei 0, wodurch die Nullhypothese („keine Autokorrelation“) abgelehnt werden muss. Das Problem der verzerrten Standardfehler kann bekämpft werden, indem man das Modell mit robusten Standardfehlern erneut schätzt.

Normalverteilung der Residuen

Im klassischen Regressionsmodell müssen Residuen normalverteilt sein. Bei Verletzung dieser Annahme sind die geschätzten Koeffizienten zwar weiterhin nicht verzerrt, auf die Standardfehler trifft dies jedoch nicht zu. Das kann wiederum zu falschen Hypothesentests führen.

Nicht normalverteilte Residuen sind in der Praxis oft nur von geringer Bedeutung. Das liegt vor allem daran, dass Wahrscheinlichkeitsverteilungen von Kleinste-Quadrate-Schätzungen aufgrund des zentralen Grenzwertsatzes mit steigender Stichprobengrösse in Richtung Normalverteilung konvergieren. In der Praxis wird oft mit grossen Stichproben gearbeitet. Daher kann man meist davon ausgehen, dass die geschätzten Konfidenzintervalle und Hypothesentests approximativ korrekt sind. Arbeitet man jedoch mit kleineren Stichprobengrössen, sollte eine Überprüfung durchgeführt werden.

Normalverteilte Störgrössen lassen sich in RStudio grafisch und analytisch überprüfen. Eine grafische Analyse der standardisierten Residuen auf Basis eines Histogramms kann für das ‚vollständige Modell‘ mit folgendem Befehl durchgeführt werden:

hist(rstandard(vollständiges_modell),
main = "Histogramm der standardisierten Residuen",
xlab = "Residuen", ylab = "Häufigkeit")
Histogramm der standardisierten Residuen
Histogramm der standardisierten Residuen

Abbildung 11: Histogramm der standardisierten Residuen zur Prüfung auf Normalverteilung

Die Ergebnisse des Histogramms sind nicht eindeutig. Der Gipfel der Verteilung ist zwar dicht bei null, liegt im Gegensatz zur klassischen Normalverteilung allerdings leicht links der Mitte.

Eine weitere Möglichkeit zur grafischen Überprüfung bietet ein QQ-Plot. Hierzu installiert und lädt man zunächst das Paket ‚DescTools‘:

install.packages("DescTools")
library(DescTools)

Dann erstellt man den QQ-Plot, der die theoretischen und beobachteten Quantile gegenüberstellt, mit dem Befehl:

PlotQQ(rstandard(vollständiges_modell),
   main = "QQ-Plot der standardisierten Residuen",
   xlab="Theoretische Quantile", ylab = "Beobachtete Quantile",
   col="deepskyblue3",
   args.qqline = list(col="red", lwd=2, lty=3),
QQ-Plot der standardisierten Residuen
QQ-Plot der standardisierten Residuen

Abbildung 12: QQ-Plot der standardisierten Residuen zur Prüfung auf Normalverteilung

Bei perfekter Normalverteilung würden die blauen Punkte auf der gestrichelten roten Linie liegen. In der Abbildung liegen Werte teilweise ausserhalb des grauen Konfidenzintervalls. Da dies jedoch hauptsächlich Werte im Randbereich der Grafik betrifft, spricht das noch nicht gegen Normalverteilung.

Zur weiteren Prüfung können analytische Tests, wie der Kolmogorov-Smirnov-Test und der Shapiro-Wilk-Test, herangezogen werden. Die Nullhypothese beider Tests geht davon aus, dass Normalverteilung vorliegt.

Bei der Durchführung des Kolmogorov-Smirnov-Tests müssen in RStudio neben den standardisierten Residuen noch die zu prüfende kumulative Normalverteilungsfunktion ‚pnorm‘ sowie Erwartungswert und Standardabweichung der standardisierten Residuen angegeben werden. Der Befehl für diesen Test lautet:

 

ks.test(rstandard(vollständiges_modell), "pnorm",
   mean=mean(rstandard(vollständiges_modell)),
   sd=sd(rstandard(vollständiges_modell)))
Asymptotic one-sample Kolmogorov-Smirnov test
data:  rstandard(vollständiges_modell)
D = 0.10266, p-value = 0.1593
alternative hypothesis: two-sided

Abbildung 13: Ergebnis des Kolmogorov-Smirnov-Tests

Der p-Wert (0,1593) liegt über dem Signifikanzniveau von 0,1. Die Nullhypothese kann daher nicht verworfen werden, was gegen eine Verletzung der Normalverteilungsannahme spricht.

Zur Anwendung des Shapiro-Wilk-Tests führt man folgenden Befehl aus:

shapiro.test(rstandard(vollständiges_modell))
Shapiro-Wilk normality test
data:  rstandard(vollständiges_modell)
W = 0.95159, p-value = 0.0002831

Abbildung 14: Ergebnis des Shapiro-Wilk-Tests

Der Test zeigt einen p-Wert unter 0,1, wodurch die Nullhypothese verworfen werden muss. Im Gegensatz zum Kolmogorov-Smirnov-Test deutet der Shapiro-Wilk-Test daher auf eine Verletzung der Normalverteilungsannahme hin. Es muss bei beiden analytischen Tests allerdings beachtet werden, dass der Einfluss von Ausreissern im QQ-Plot mit steigender Stichprobengrösse steigt. Dadurch steigt auch die Wahrscheinlichkeit, dass die Nullhypothese verworfen wird, obwohl der Grossteil der Residuen der Normalverteilung folgt. In der Gesamtschau kann im gezeigten Beispielmodell durchaus noch von Normalverteilung ausgegangen werden.

Zusammenfassung

Modellannahmen der klassischen linearen Regression:

  • Alle relevanten, aber keine irrelevanten unabhängigen Variablen im Modell.
  • Linearer Zusammenhang zwischen abhängiger Variable und unabhängigen Variablen.
  • Keine Multikollinearität, d. h. weder perfekte noch imperfekte Korrelation zwischen den unabhängigen Variablen.
  • Störgrössen gleichen sich im Mittel aus, wodurch der Erwartungswert null ist.
  • Die Varianz der Residuen ist konstant (Homoskedastizität).
  • Residuen sind untereinander nicht korreliert, d. h., Autokorrelation liegt nicht vor.
  • Residuen müssen einer Normalverteilung folgen.
Weiterführende Literatur:

Gehrke, M. (2022). Angewandte empirische Methoden in Finance & Accounting: Umsetzung mit R. Walter de Gruyter GmbH & Co KG.

Hatzinger, R., Nagel, H., Hornik, K. & Maier, M. (2014). R: Einführung durch angewandte Statistik, 2. aktualisierte Auflage. Pearson Deutschland GmbH.

Hodeghatta, U. R. & Nayak, U. (2016). Business analytics using R-a practical approach. Apress.

Ligges, U. (2008). Programmieren mit R. Springer-Verlag

von Auer, L. (2023).  Ökonometrie: Eine Einführung. Springer Fachmedien Wiesbaden.

Wollschläger, D. (2015). Grundlagen der Datenanalyse mit R: Eine anwendungsorientierte Einführung. Springer.