Quadratsummen und Modellstatistiken per Hand

In diesem Markdown wird demonstriert, wie man die relevanten Quadratsummen bei der Regression per Hand bestimmen und aus ihnen die Modellstatistiken F und R-Quadrat berechnen kann.

Das Vorgehen dient zum besseren Verständnis der Quadratsummen und der Modellstatistiken - es muss normalerweise natürlich nicht alles per Hand berechnet werden (der Output des lm-Befehls enthält den F-Wert und das R-Quadrat ja schon - allerdings nicht die Quadratsummen).

Daten einlesen (Beispiel Albumsales)

Daten <- read.csv("Daten_Albumsales.csv") 

Erstellen eines Regressionsmodells mit den beiden Prädiktoren adverts und airplay

RegModel.1 <- lm(sales~adverts+airplay, data=Daten)

summary(RegModel.1)
## 
## Call:
## lm(formula = sales ~ adverts + airplay, data = Daten)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -113.213  -30.584    4.479   32.778  155.111 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 39.465178   9.405430   4.196 4.13e-05 ***
## adverts      0.085914   0.007341  11.703  < 2e-16 ***
## airplay      3.640856   0.296953  12.261  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 49.09 on 194 degrees of freedom
## Multiple R-squared:  0.634,  Adjusted R-squared:  0.6303 
## F-statistic: 168.1 on 2 and 194 DF,  p-value: < 2.2e-16

Durch das Modell vorhergesagte Werte berechnen

Durch den obigen Output wissen wir, dass sich die Vorhersagen für die Albumverkäufe am besten (gegeben die getesteten Prädiktoren) durch folgende Formel ermitteln lassen:

Albumverkäufe = 39.465178 + 0.085914adverts + 3.640856airplay

Die konkreten Vorhersagen für jedes einzelne Album können also berechnet und dem Datensatz als neue Spalte hinzugefügt werden:

Daten$Vorhersagen <- 39.465178 + 0.085914*Daten$adverts + 3.640856*Daten$airplay

Residuen berechnen

Nun, da wir die Modellvorhersagen haben, können wir auch die Abweichungen der Modellvorhersagen von den tatsächlichen Verkäufen berechnen, also die Residuen (den Fehler unseres Modells). Wir fügen diese ebenfalls als neue Spalte dem Datensatz hinzu:

Daten$Residuen <- Daten$Vorhersagen - Daten$sales

Berechnen der Quadratsummen (Total, Modell, Residuen)

Zur Erinnerung (VL 3, Folie 16)

Berechnung der Quadratsumme Total (zur Ermittlung der Gesamtabweichung, die in den Daten besteht später und erklärt werden soll):

#Schritt 1: Die Abweichung der tatsächlichen Verkaufszahl jedes Albums vom Mittelwert der Verkaufszahlen ermitteln. Als neue Spalte dem Datensatz hinzufügen:

Daten$Abweichung_Mittelwert <- Daten$sales - mean(Daten$sales)

#Schritt 2: Neue Spalte anlegen, in der dieser Wert quadriert wird (das brauchen wir zum Ermitteln der Quadratsumme):

Daten$Abweichung_Mittelwert_squared <- (Daten$sales - mean(Daten$sales))^2

#Schritt 3: Aufsummieren der quadrierten Abweichungen ergibt die Quadratsumme Total:

SS_Total <- sum(Daten$Abweichung_Mittelwert_squared)

Berechnung der Quadratsumme für das Modell (Abweichung der durch das Modell vorhergesagten Werte zum Mittelwert der tatsächlichen Daten, also zum Nullmodell):

#Schritt 1: Neue Spalte für die Abweichung jedes Vorhersagewerts vom Mittelwert der tatsächlichen Daten:
Daten$Modell_zu_Mittelwert <- Daten$Vorhersagen - mean(Daten$sales)

#Schritt 2: Neue Spalte, in der diese Werte quadriert werden:
Daten$Modell_zu_Mittelwert_squared <- (Daten$Vorhersagen - mean(Daten$sales))^2

#Schritt 3: Aufsummieren der quadrierten Werte zur Ermittlung der Quadratsumme für das Modell:
SS_Modell <- sum(Daten$Modell_zu_Mittelwert_squared)

Aus diesen zwei Quadratsummen könnten wir die Quadratsumme der Residuen bereits berechnen (siehe Folie, die QS sind additiv). Zur Veranschaulichung und Kontrolle des Rechenwegs wird sie hier trotzdem nocheinmal berechnet:

#Die Residuen haben wir bereits weiter oben berechnet, daher können sie nun direkt quadriert werden (dafür wird wieder eine neue Spalte angelegt):
Daten$Residuen_squared <- (Daten$Residuen)^2

#Aufsummieren der quadrierten Residuen zur Ermittlung der Quadratsumme der Residuen:
SS_R <- sum(Daten$Residuen_squared)

Prüfen, ob sich die errechneten Quadratsummen korrekt addieren (siehe Folie):

#SS_R + SS_Modell sollte die totale Quadratsumme ergeben
SS_R + SS_Modell
## [1] 1277502
SS_Total
## [1] 1277505

F-Wert und R-Quadrat aus den Quadratsummen und ihren Freiheitsgraden berechnen

Zur Erinnerung (VL 3, Folien 18, 19 und 21):

Durch Einsetzen in die Formeln ergibt sich:

F <- (SS_Modell/2) / (SS_R/(197-2-1))

R_squared <- SS_Modell/SS_Total

F
## [1] 168.0494
R_squared
## [1] 0.6340291

Ein Blick auf den ganz oben generierten Modell-Output zeigt: F und R-Quadrat stimmen überein.

Zum weiteren Üben:

Dieses Vorgehen kann natürlich mit jedem beliebigen Datensatz und Modell wiederholt werden.