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 <- read.csv("Daten_Albumsales.csv")
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 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
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
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
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.
Dieses Vorgehen kann natürlich mit jedem beliebigen Datensatz und Modell wiederholt werden.