Lassen Sie mich etwas Farbe in die Idee bringen, dass OLS mit kategorialen ( Dummy-codierten ) Regressoren den Faktoren in ANOVA entspricht. In beiden Fällen gibt es Ebenen (oder Gruppen im Fall von ANOVA).
In der OLS-Regression ist es am üblichsten, auch stetige Variablen in den Regressoren zu haben. Diese modifizieren logisch die Beziehung im Anpassungsmodell zwischen den kategorialen Variablen und der abhängigen Variablen (DC). Aber nicht bis zur Unkenntlichkeit der Parallele.
Basierend auf dem mtcars
Datensatz können wir das Modell zunächst lm(mpg ~ wt + as.factor(cyl), data = mtcars)
als die Steigung visualisieren, die durch die kontinuierliche Variable wt
(Gewicht) und die verschiedenen Abschnitte bestimmt wird, die den Effekt der kategorialen Variablen cylinder
(vier, sechs oder acht Zylinder) projizieren . Es ist dieser letzte Teil, der eine Parallele zu einer Einweg-ANOVA bildet.
Lassen Sie es uns grafisch auf der Nebenhandlung rechts sehen (die drei Nebenhandlungen links sind für den Vergleich von Seite zu Seite mit dem unmittelbar danach diskutierten ANOVA-Modell enthalten):
Jeder Zylindermotor ist farbcodiert, und der Abstand zwischen den angepassten Linien mit unterschiedlichen Abschnitten und der Datenwolke entspricht der gruppeninternen Variation in einer ANOVA. Beachten Sie, dass die Abschnitte im OLS-Modell mit einer stetigen Variablen ( weight
) aufgrund der Wirkung weight
und der verschiedenen Modellmatrizen (siehe unten) mathematisch nicht mit dem Wert der verschiedenen gruppeninternen Mittelwerte in ANOVA übereinstimmen : der Mittelwert mpg
für 4-Zylinder - Autos, zum Beispiel wird mean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364
, während die OLS „Baseline“ intercept (Reflexions durch Konvention cyl==4
(steigend Ziffern in R Bestellung)) unterscheidet sich deutlich: summary(fit)$coef[1] #[1] 33.99079
. Die Steigung der Linien ist der Koeffizient für die stetige Variable weight
.
Wenn Sie versuchen, den Effekt von zu unterdrücken, weight
indem Sie diese Linien mental begradigen und auf die horizontale Linie zurückführen, erhalten Sie den ANOVA-Plot des Modells aov(mtcars$mpg ~ as.factor(mtcars$cyl))
in den drei Unterplots auf der linken Seite. Der weight
Regressor ist jetzt aus, aber die Beziehung zwischen den Punkten und den verschiedenen Abschnitten bleibt grob erhalten - wir drehen uns einfach gegen den Uhrzeigersinn und verteilen die zuvor überlappenden Diagramme für jede einzelne Ebene (wiederum nur als visuelles Mittel zum "Sehen"). die Verbindung; nicht als mathematische Gleichheit, da wir zwei verschiedene Modelle vergleichen!).
Jede Ebene im Faktor cylinder
ist separat, und die vertikalen Linien stellen die Residuen oder gruppeninternen Fehler dar: die Entfernung von jedem Punkt in der Wolke und den Mittelwert für jede Ebene (farbcodierte horizontale Linie). Der Farbverlauf gibt Aufschluss darüber, wie wichtig die Ebenen für die Validierung des Modells sind: Je mehr Datenpunkte um ihre Gruppenmittelwerte gruppiert sind, desto wahrscheinlicher ist die statistische Signifikanz des ANOVA-Modells. Die horizontale schwarze Linie um in allen Diagrammen ist der Mittelwert für alle Faktoren. Die Zahlen in der Achse sind einfach die Platzhalternummer / Kennung für jeden Punkt in jeder Ebene und haben keinen weiteren Zweck, als Punkte entlang der horizontalen Linie zu trennen, um eine Darstellung zu ermöglichen, die sich von Boxplots unterscheidet.20x
Und durch die Summe dieser vertikalen Segmente können wir die Residuen manuell berechnen:
mu_mpg <- mean(mtcars$mpg) # Mean mpg in dataset
TSS <- sum((mtcars$mpg - mu_mpg)^2) # Total sum of squares
SumSq=sum((mtcars[mtcars$cyl==4,"mpg"]-mean(mtcars[mtcars$cyl=="4","mpg"]))^2)+
sum((mtcars[mtcars$cyl==6,"mpg"] - mean(mtcars[mtcars$cyl=="6","mpg"]))^2)+
sum((mtcars[mtcars$cyl==8,"mpg"] - mean(mtcars[mtcars$cyl=="8","mpg"]))^2)
Das Ergebnis: SumSq = 301.2626
und TSS - SumSq = 824.7846
. Vergleichen mit:
Call:
aov(formula = mtcars$mpg ~ as.factor(mtcars$cyl))
Terms:
as.factor(mtcars$cyl) Residuals
Sum of Squares 824.7846 301.2626
Deg. of Freedom 2 29
Genau das gleiche Ergebnis wie das Testen mit einer ANOVA des linearen Modells mit nur der Kategorie cylinder
als Regressor:
fit <- lm(mpg ~ as.factor(cyl), data = mtcars)
summary(fit)
anova(fit)
Analysis of Variance Table
Response: mpg
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(cyl) 2 824.78 412.39 39.697 4.979e-09 ***
Residuals 29 301.26 10.39
Wir sehen also, dass die Residuen - der Teil der Gesamtvarianz, der vom Modell nicht erklärt wird - und die Varianz gleich sind, unabhängig davon, ob Sie eine OLS des Typs lm(DV ~ factors)
oder eine ANOVA ( aov(DV ~ factors)
) aufrufen : Wenn wir die abstreifen Modell stetiger Variablen erhalten wir ein identisches System. Ebenso erhalten wir natürlich den gleichen p-Wert, wenn wir die Modelle global oder als eine Omnibus-ANOVA (nicht Level für Level) bewerten F-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09
.
Dies soll nicht bedeuten, dass das Testen einzelner Niveaus identische p-Werte ergeben wird. Im Fall von OLS können wir Folgendes aufrufen summary(fit)
und abrufen:
lm(formula = mpg ~ as.factor(cyl), data = mtcars)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.6636 0.9718 27.437 < 2e-16 ***
as.factor(cyl)6 -6.9208 1.5583 -4.441 0.000119 ***
as.factor(cyl)8 -11.5636 1.2986 -8.905 8.57e-10 ***
Dies ist in ANOVA nicht möglich, da es sich eher um einen Omnibus-Test handelt. Um diese Art von Wert-Bewertungen zu erhalten, müssen wir einen Tukey Honest Significant Difference-Test durchführen, mit dem versucht wird, die Möglichkeit eines Fehlers vom Typ I infolge der Durchführung mehrerer paarweiser Vergleiche (daher " ") zu verringern völlig andere Ausgabe:pp adjusted
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = mtcars$mpg ~ as.factor(mtcars$cyl))
$`as.factor(mtcars$cyl)`
diff lwr upr p adj
6-4 -6.920779 -10.769350 -3.0722086 0.0003424
8-4 -11.563636 -14.770779 -8.3564942 0.0000000
8-6 -4.642857 -8.327583 -0.9581313 0.0112287
Letztendlich ist nichts beruhigender, als einen Blick auf den Motor unter der Motorhaube zu werfen, der nichts anderes ist als die Modellmatrizen und die Projektionen im Säulenraum. Diese sind im Falle einer ANOVA eigentlich ganz einfach:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢y1y2y3⋮⋮⋮.yn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢11⋮00⋮.0000⋮11⋮.0000⋮00⋮.11⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢μ1μ2μ3⎤⎦⎥+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢ε1ε2ε3⋮⋮⋮.εn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(1)
Dies wäre die Einweg-ANOVA Modellmatrix mit drei Ebenen ( zum Beispiel cyl 4
, cyl 6
, cyl 8
), zusammengefasst als , wobei auf jeder Ebene oder eine Gruppe ist die Mittelwert: wenn der Fehler oder das Residuum für die Beobachtung der Gruppe oder des Niveaus wird addiert, wir erhalten die tatsächliche Beobachtung DV .yij=μi+ϵijμijiyij
Andererseits lautet die Modellmatrix für eine OLS-Regression:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢y1y2y3y4⋮yn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1111⋮1x12x22x32x42⋮xn2x13x23x33x43⋮xn3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢β0β1β2⎤⎦⎥+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢ε1ε2ε3ε4⋮εn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Dies hat die Form mit einem einzelnen Abschnitt und zwei Steigungen ( und ) für eine andere stetige Variablen sagen und .yi=β0+β1xi1+β2xi2+ϵiβ0β1β2weight
displacement
Der Trick ist nun, zu sehen, wie wir verschiedene Abschnitte erstellen können, wie im ersten Beispiel. lm(mpg ~ wt + as.factor(cyl), data = mtcars)
Lassen Sie uns also die zweite Steigung loswerden und bei der ursprünglichen einzelnen kontinuierlichen Variablen bleiben weight
(mit anderen Worten, eine einzelne Spalte neben der Spalte von Einsen in die Modellmatrix, der Schnittpunkt und die Steigung für , ). Die Spalte von entspricht standardmäßig dem Achsenabschnitt. Wieder ist sein Wert nicht identisch mit dem ANOVA-Mittelwert innerhalb der Gruppe für , eine Beobachtung, die nicht überraschen sollte, wenn man die Spalte in der OLS-Modellmatrix (unten) mit der ersten Spalte vonβ0weight
β11cyl 4
cyl 4
11's in der ANOVA-Modellmatrix die nur Beispiele mit 4 Zylindern auswählt. Der Achsenabschnitt wird mittels Dummy-Codierung verschoben, um die Wirkung von und wie folgt zu erklären :(1),cyl 6
cyl 8
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢y1y2y3y4y5⋮yn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢11111⋮1x1x2x3x4x5⋮xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[β0β1]+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢11100⋮000011⋮1⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[μ~2μ~3]+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢ε1ε2ε3ε4ε5⋮εn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Wenn die dritte Spalte wir den Achsenabschnitt systematisch umDer gibt an, dass die Unterschiede zwischen den Niveaus im OLS-Modell nicht mathematisch sind, da der "Grundlinien" -Abschnitt im OLS-Modell nicht mit dem Gruppenmittelwert von 4-Zylinder-Autos identisch ist, dies jedoch widerspiegelt Die Unterschiede zwischen den Gruppen bedeuten:1μ~2.⋅~
fit <- lm(mpg ~ wt + as.factor(cyl), data = mtcars)
summary(fit)$coef[3] #[1] -4.255582 (difference between intercepts cyl==4 and cyl==6 in OLS)
fit <- lm(mpg ~ as.factor(cyl), data = mtcars)
summary(fit)$coef[2] #[1] -6.920779 (difference between group mean cyl==4 and cyl==6)
Ebenso wird, wenn die vierte Spalte , ein fester Wert zum hinzugefügt. Die Matrixgleichung lautet daher . Wenn Sie mit diesem Modell zum ANOVA-Modell wechseln, müssen Sie lediglich die kontinuierlichen Variablen entfernen und verstehen, dass der Standardabschnitt in OLS die erste Ebene in ANOVA widerspiegelt.1μ~3yi=β0+β1xi+μ~i+ϵi