1 Zu prüfende Annahmen:

  • Normalverteilung des Kriteriums bei jeder Ausprägung der Prädiktoren

  • Linearität der Zusammenhänge zwischen Prädiktoren und Kriterium

  • Multikollinearität (sollte möglichst nicht vorliegen)

  • Homoskedastizität

  • Normalverteilung der Residuen

  • Ausreißer (sollten möglichst nicht vorliegen)

  • Autokorrelation (sollte möglichst nicht vorliegen)

2 Einlesen der Daten, Erstellen des Regressionsmodells

Daten <- read.csv("Daten_Pruefungsleistung_Annahmen.csv",sep=";")

library(Rcmdr)

RegModel.1 <- lm(Y_Pruefungsleistung~X1_Lernzeit+X2_Pruefungsangst+X3_Gender_num, 
  data=Daten)

summary(RegModel.1)
## 
## Call:
## lm(formula = Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + 
##     X3_Gender_num, data = Daten)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -46.632 -16.960  -0.619  21.653  40.088 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        87.9867    17.1423   5.133 1.43e-06 ***
## X1_Lernzeit         0.2461     0.1824   1.349   0.1803    
## X2_Pruefungsangst  -0.4814     0.1921  -2.506   0.0138 *  
## X3_Gender_num      -1.0396     4.6478  -0.224   0.8235    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23.42 on 99 degrees of freedom
## Multiple R-squared:  0.2091, Adjusted R-squared:  0.1851 
## F-statistic: 8.722 on 3 and 99 DF,  p-value: 3.442e-05

3 Streudiagramm-Matrix erstellen

Ermöglichst die erste optische Prüfung von:

  1. Linearität der Zusammenhänge zwischen Prädiktoren und Kriterium

  2. Verteilung des Kriteriums: unimodal und grob symmetrisch (als Hinweis für spätere Normalverteilung der Residuen bei jeder Ausprägung der Prädiktoren - NV des Kriteriums unabhängig von den Prädiktoren ist nicht die eigentliche Annahme.)

  3. Starke Zusammenhänge der Prädiktoren untereinander? (Multikollinearität)

scatterplotMatrix(~X1_Lernzeit+X2_Pruefungsangst+X3_Gender_num+Y_Pruefungsleistung, regLine=TRUE, 
  smooth=list(span=0.5, spread=FALSE), diagonal=list(method="density"), 
  data=Daten)

zu 1): Glättungskurve und Kleinstquadratlinie liegen nah beieinander, Linearität scheint gegeben zu sein.

Statistischer Test auf Linearität: “Ramsey Regression Equation Specification Error Test”" (RESET).

H0: Lineares Modell ist geeignet, um die vorliegenden Zusammenhänge zu beschreiben. H1: lineares Modell ist nicht geeignet.

Hier würden wir also darauf hoffen, die H0 beibehalten zu können.

Commander: Modelle -> numerische Diagnose -> RESET-Test auf Nichtlinearität

Bei den Optionen?

#die beiden folgenden Pakete werden vom Commander automatisch geladen, wenn der Befehl ausgeführt wird. Sollten sie nicht vorhanden sein, müssen sie erst installiert werden.

library(zoo, pos=28)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(lmtest, pos=28)
resettest(Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + 
  X3_Gender_num, power=2:3, type="regressor", data=Daten)
## 
##  RESET test
## 
## data:  Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + X3_Gender_num
## RESET = 0.39977, df1 = 6, df2 = 93, p-value = 0.8775

Test ist nicht signifikant, er bestätigt also den optischen Eindruck: Ein lineares Modell ist geeignet, um die beobachteten Zusammenhänge zu beschreiben.

Zu 2): Das Kriterium ist unimodal und grob symmetrisch, kann daher als Stichprobe aus der NV betrachtet werden. Die dahintersteckende Annahme, dass die Residuen normalverteilt sind, prüfen wir später.

Zu 3): Multikollinearität: Die Prädiktoren Lernzeit und Prüfungsangst scheinen recht stark (negativ) zu korrelieren. Wir sollten prüfen, ob das Ausmaß problematisch für unser Modell ist (Korrelationen bis ca. 0.8, also auch recht hohe Korrelationen, sind aber tatsächlich noch unproblematisch).

Statistische Prüfung: Berechnung der Variance Inflation Factors (VIF) aller Faktoren.

Dabei wird nacheinander jeder Prädiktor als Kriterium genommen und auf alle anderen Prädiktoren regrediert. Logik: Wenn ein Prädiktor unabhängig von allen anderen ist, dann sollten die Ausprägungen der anderen Prädiktoren seine Varianz nicht erklären können. (\(VIF_{x1} = 1/(1-R^2_{x1})\)).

Die Formel zeigt: Wenn das R-Quadrat, das die anderen Prädiktoren bei einem Prädiktor aufklären, klein ist, wird der VIF klein (weil 1 durch etwas Größeres geteilt wird).

Daumenregel: Der mittlere VIF sollte ca. bei 1 liegen und jeder einzelne unter 10.

Commander: Modelle -> numerische Diagnose -> Varianzinflationsfaktor

vif(RegModel.1)
##       X1_Lernzeit X2_Pruefungsangst     X3_Gender_num 
##          2.040965          2.026108          1.014295

In unserem Fall scheinen die Prädiktoren untereinander noch nicht zu stark zu korrelieren.

4 Prüfen der Residuen: Normalverteilung und Homoskedastizität (konstante Streuung)

Logik: Wenn die wichtigsten Prädiktoren im Modell enthalten sind, sollte der übrigbleibende Fehler (die Residuen) nicht systematisch sein. Im Mittel sollte er 0 betragen und um diesen Mittelwert sollte er normalverteilt sein mit einer bestimmten Streuung. Diese Streuung sollte konstant sein, der Fehler des Modells sollte also nicht bei manchen Ausprägungen der Prädiktoren größer oder kleiner sein als bei anderen (wenn diese Annahme erfüllt ist, besteht Homoskedastizität. Ansonsten besteht Heteroskedastizität).

Optische Prüfung der Normalverteilung der Residuen: Histogramm oder QQ-Plot.

Bevor wir die Residuen plotten können, müssen wir sie zur Datentabelle hinzufügen. In diesem Arbeitsschritt können wir auch gleich noch die durch das Modell vorhergesagten Werte hinzufügen (da wir sie später zur Prüfung der Homoskedastizität brauchen).

Commander: Modelle -> Füge Regressionsstatistiken zu den Daten hinzu (gewünschte Werte wählen)

Daten<- within(Daten, {
  fitted.RegModel.1 <- fitted(RegModel.1)
  residuals.RegModel.1 <- residuals(RegModel.1) 
})

Histogramm der Residuen: Grafiken -> Histogramm

with(Daten, Hist(residuals.RegModel.1, scale="frequency", breaks="Sturges", 
  col="darkgray"))

Die Residuen sehen nicht perfekt normalverteilt aus. Die meisten Werte liegen immerhin bei 0.

Eine weitere typische Methode der graphischen Prüfung ist ein sogenannter QQ-Plot (Quantile-Quantile-Plot) der Residuen gegen die Normalverteilung. Quantile der Residuen (beobachtete Anzahlen von Werten in bestimmten Bereichen) werden hier abgetragen gegen theoretische Quantile der Normalverteilung (erwartete Anzahlen von Werten in bestimmten Bereichen, wenn die Daten eine Stichprobe aus der Normalverteilung wären).

Ein gutes YouTube-Video zum Prinzip von QQ-Plots: https://www.youtube.com/watch?v=X9_ISJ0YpGw

Wenn die Verteilung der Residuen mit NV übereinstimmen, sollten Daten eine Diagnonale bilden.

with(Daten, qqPlot(residuals.RegModel.1, dist="norm", 
  id=list(method="y", n=2, labels=rownames(Daten))))

## [1] 101  39

Wir sehen leichte Abweichungen rechts, im positiven Extrembereich liegen also etwas zu wenige Werte. Ansonsten sieht in in Ordnung aus.

Es gibt einen statistischen Test auf Normalverteilung (Shapiro-Wilk, im Commander zu finden unter Statistik, Deskriptive Statistik, Test auf Normalverteilung). Allerdings ist dieser sehr sensitiv für auch nur sehr leichte Abweichungen von der NV und daher für unsere Zwecke nicht sehr informativ.

Optische Prüfung der Homoskedastizität:

Typische Graphik: Scatterplot mit den durch das Modell vorhergesagten Werten auf der x-Achse und den Residuals auf der y-Achse. Streuung sollte entlang der Kleinstquadratlinie konstant sein.

Warum nimmt man die durch das Modell vorhergesagten Werte und nicht die Werte jedes einzelnen Prädiktors? Die Idee hier ist, dass die vorhergesagten Werte ja aus allen Prädiktoren des Modells berechnet wurden. Daher kann man mittels eines einzigen Graphen grob prüfen, ob die Residuen für alle Bereiche aller Prädiktoren konstant streuen.

scatterplot(residuals.RegModel.1~fitted.RegModel.1, regLine=TRUE, smooth=FALSE, boxplots=FALSE, 
  data=Daten)

#mit standardisierten (studentisierten) Residuen (die vorher hinzugefügt werden)
Daten<- within(Daten, {
  rstudent.RegModel.1 <- rstudent(RegModel.1) 
})

scatterplot(rstudent.RegModel.1~fitted.RegModel.1, regLine=TRUE, 
  smooth=FALSE, boxplots=FALSE, data=Daten)

Es sieht aus, als wäre das Modell bei hohen vorhergesagten Werten genauer als bei niedrigeren.

Statistischer Test auf Homoskedastizität: Breusch-Pagan-Test

H0: Es liegt Homoskedastizität vor (die Residuen sind unabhängig von den Prädiktoren). H1: Es liegt Heteroskedastizizät vor (die REsiduen sind abhängig von den Prädiktoren).

Commander: Modelle -> Numerische Diagnose -> Breusch-Pagan-Test

bptest(Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + 
  X3_Gender_num, varformula = ~ fitted.values(RegModel.1), studentize=FALSE, 
  data=Daten)
## 
##  Breusch-Pagan test
## 
## data:  Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + X3_Gender_num
## BP = 4.4889, df = 1, p-value = 0.03412

Der Test ist signifikant, also liegt Heteroskedastizität vor. Streng genommen sind die Annahmen für eine multiple Regression bei diesem Test also nicht komplett erfüllt.

4.1 Hat values und Cook’s Distance

Daten<- within(Daten, {
  hatvalues.RegModel.1 <- hatvalues(RegModel.1)
  cooks.distance.RegModel.1 <- cooks.distance(RegModel.1) 
})

Histogramm der hat values und Cook’s Distance-Werte

with(Daten, Hist(hatvalues.RegModel.1, scale="frequency", 
  breaks="Sturges", col="darkgray"))

with(Daten, Hist(cooks.distance.RegModel.1, scale="frequency", 
  breaks="Sturges", col="darkgray"))

4.2 Durbin-Watson-Test auf Autokorrelation

Prüft, ob die Messungen unabhängig sind.

dwtest(Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + 
  X3_Gender_num, alternative="two.sided", data=Daten)
## 
##  Durbin-Watson test
## 
## data:  Y_Pruefungsleistung ~ X1_Lernzeit + X2_Pruefungsangst + X3_Gender_num
## DW = 2.0001, p-value = 0.9835
## alternative hypothesis: true autocorrelation is not 0

5 Fazit

  • Zusammenhänge sind linear
  • Kriterium ist annähernd normalverteilt
  • keine zu starken Zusammenhänge der Prädiktoren untereinander
  • Residuen sind annähernd normalverteilt
  • Es liegt keine Homoskedastizität vor

Streng genommen ist das lineare Modell somit nicht angemessen für die Analyse unserer Daten (Heteroskedastizität führt dazu, dass die Schäzung weniger zuverlässig ist). Mögliche Maßnahmen: Kriterium transformieren, einzelne Ausreißer ausschließen, andere Schätzverfahren (siehe VL, nichts davon machen wir dieses Semester tatsächlich…).