Warum entspricht ANOVA der linearen Regression?


50

Ich habe gelesen, dass ANOVA und lineare Regression dasselbe sind. Wie kann das sein, wenn man bedenkt, dass die Ausgabe von ANOVA ein Wert und ein Wert ist, auf deren Grundlage Sie schließen, ob die Stichprobenmittelwerte über die verschiedenen Stichproben hinweg gleich oder unterschiedlich sind.pFp

Unter der Annahme, dass die Mittelwerte nicht gleich sind (Nullhypothese verwerfen), gibt die ANOVA keine Auskunft über die Koeffizienten des linearen Modells. Wie ist die lineare Regression mit der ANOVA identisch?

Antworten:


44

ANOVA und lineare Regression sind äquivalent, wenn die beiden Modelle dieselben Hypothesen verwenden und eine identische Codierung verwenden. Die Modelle unterscheiden sich in ihrem grundsätzlichen Ziel: Bei der ANOVA geht es hauptsächlich darum, Unterschiede zwischen den Mittelwerten der Kategorien in den Daten darzustellen, während es bei der linearen Regression hauptsächlich darum geht, eine mittlere Stichprobenantwort und ein damit verbundenes zu schätzen .σ2

Etwas aphoristisch kann man ANOVA als Regression mit Dummy-Variablen beschreiben. Wir können leicht erkennen, dass dies bei der einfachen Regression mit kategorialen Variablen der Fall ist. Eine kategoriale Variable wird als Indikatormatrix codiert (eine Matrix, die davon abhängt, 0/1ob ein Subjekt Teil einer bestimmten Gruppe ist oder nicht) und dann direkt für die Lösung des linearen Systems verwendet, das durch eine lineare Regression beschrieben wird. Schauen wir uns ein Beispiel mit 5 Gruppen an. Der Argumentation halber gehe ich davon aus, dass der Mittelwert von group11, der Mittelwert von group22, ... und der Mittelwert von group55 gleich sind. (Ich verwende MATLAB, aber genau dasselbe ist äquivalent in R.)

rng(123);               % Fix the seed
X = randi(5,100,1);     % Generate 100 random integer U[1,5]
Y = X + randn(100,1);   % Generate my response sample
Xcat = categorical(X);  % Treat the integers are categories

% One-way ANOVA
[anovaPval,anovatab,stats] = anova1(Y,Xcat);
% Linear regression
fitObj = fitlm(Xcat,Y);

% Get the group means from the ANOVA
ANOVAgroupMeans = stats.means
% ANOVAgroupMeans =
% 1.0953    1.8421    2.7350    4.2321    5.0517

% Get the beta coefficients from the linear regression
LRbetas = [fitObj.Coefficients.Estimate'] 
% LRbetas =
% 1.0953    0.7468    1.6398    3.1368    3.9565

% Rescale the betas according the intercept
scaledLRbetas = [LRbetas(1) LRbetas(1)+LRbetas(2:5)]
% scaledLRbetas =
% 1.0953    1.8421    2.7350    4.2321    5.0517

% Check if the two results are numerically equivalent
abs(max( scaledLRbetas - ANOVAgroupMeans)) 
% ans =
% 2.6645e-15

Wie in diesem Szenario zu sehen ist, waren die Ergebnisse genau gleich. Der winzige numerische Unterschied ist darauf zurückzuführen, dass das Design nicht perfekt ausbalanciert ist und das Verfahren zur Schätzung der Unterlage nicht korrekt ist. Die ANOVA akkumuliert numerische Fehler etwas aggressiver. In dieser Hinsicht passen wir einen Abschnitt an LRbetas(1). Wir könnten ein abfangfreies Modell anpassen, aber das wäre keine "standardmäßige" lineare Regression. (Die Ergebnisse wären in diesem Fall jedoch noch näher an ANOVA.)

Die Statistik (ein Verhältnis der Mittelwerte) im Fall der ANOVA und im Fall der linearen Regression ist auch für das obige Beispiel gleich:F

abs( fitObj.anova.F(1) - anovatab{2,5} )
% ans =
% 2.9132e-13 

Dies liegt daran, dass Prozeduren dieselbe Hypothese mit unterschiedlichen Formulierungen testen: ANOVA prüft qualitativ, ob " das Verhältnis hoch genug ist, um darauf hinzuweisen, dass keine Gruppierung unplausibel ist ", während lineare Regression qualitativ prüft, ob " das Verhältnis hoch genug ist, um lediglich einen Schnittpunkt nahezulegen Modell ist möglicherweise unzureichend ".
(Dies ist eine etwas freie Interpretation der " Möglichkeit, einen Wert zu sehen, der gleich oder größer ist als der unter der Nullhypothese beobachtete ", und sie soll keine Lehrbuchdefinition sein.)

Zurück zum letzten Teil Ihrer Frage zu " ANOVA sagt Ihnen nichts über die Koeffizienten des linearen Modells (unter der Annahme, dass die Mittelwerte nicht gleich sind ") ist einfach / ausgewogen genug, sagt Ihnen alles, was ein lineares Modell würde. Die Konfidenzintervalle für Gruppenmittelwerte sind die gleichen, die Sie für Ihreβusw. Wenn in seinem Regressionsmodell mehrere Kovariaten hinzugefügt werden, hat eine einfache Einweg-ANOVA eindeutig keine direkte Entsprechung. In diesem Fall wird die Information, die zur Berechnung der mittleren Antwort der linearen Regression verwendet wird, mit Informationen ergänzt, die für eine Einweg-ANOVA nicht direkt verfügbar sind. Ich glaube, dass man die Dinge noch einmal in ANOVA-Begriffen ausdrücken kann, aber es ist meistens eine akademische Übung.

Ein interessantes Papier über die Angelegenheit ist Gelmans 2005 Papier mit dem Titel: Varianzanalyse - Warum ist es wichtiger denn je . Einige wichtige Punkte wurden angesprochen; Ich unterstütze das Papier nicht vollständig (ich glaube, ich persönlich stimme viel mehr mit McCullachs Ansicht überein), aber es kann eine konstruktive Lektüre sein.

Als letzte Anmerkung: Die Darstellung wird dicker, wenn Sie Modelle mit gemischten Effekten verwenden . Dort haben Sie unterschiedliche Vorstellungen, was als störend oder als tatsächliche Information in Bezug auf die Gruppierung Ihrer Daten angesehen werden kann. Diese Themen liegen außerhalb des Rahmens dieser Frage, aber ich denke, sie sind eine Anspielung wert.


6
Die akzeptierte Antwort auf dieser Seite mit Kreuzvalidierung zeigt auch die Beziehung zwischen ANOVA und Regression auf sehr gute Weise, und zwar mithilfe eines mathematischen Ansatzes, der den praktischen Ansatz dieser Antwort sehr gut ergänzt.
EdM

+1. Oh ja, @ MichaelHardys Antwort ist in diesem Thread ziemlich gut. Danke, dass du es erwähnt hast!
usεr11852 sagt Reinstate Monic

+1, außerdem halte ich diese Zahl in dieser Antwort für sehr hilfreich, um die Kluft zwischen ANOVA und linearer Regression zu überbrücken
Haitao Du,

Würden Sie zustimmen, dass ANOVA eine Gaußsche GLM mit kategorialen Prädiktoren ist?
Digio

@Digio: Nein, es würde die Angemessenheit ihrer Verwendung stark vereinfachen. Ich würde GLM aus dem Bild halten.
usεr11852 sagt Reinstate Monic

55

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 mtcarsDatensatz 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):

Bildbeschreibung hier eingeben

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 weightund der verschiedenen Modellmatrizen (siehe unten) mathematisch nicht mit dem Wert der verschiedenen gruppeninternen Mittelwerte in ANOVA übereinstimmen : der Mittelwert mpgfü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, weightindem 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 weightRegressor 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 cylinderist 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.2626und 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 cylinderals 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:

(1)[y1y2y3.yn]=[100100010010...001001][μ1μ2μ3]+[ε1ε2ε3.εn]

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:

[y1y2y3y4yn]=[1x12x131x22x231x32x331x42x431xn2xn3][β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β2weightdisplacement

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 4cyl 411'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 6cyl 8

[y1y2y3y4y5yn]=[1x11x21x31x41x51xn][β0β1]+[101010010101][μ~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


6
+1, ich liebe deine grafische Darstellung !! Veröffentlichungsqualität!
Haitao Du

@ hxd1011 Das ist sehr nett von dir. Ich schätze es.
Antoni Parellada

6

Antoni Parellada und usεr11852 hatten eine sehr gute Antwort. Ich werde Ihre Frage zur Codierungsperspektive mit beantworten R.

ANOVA sagt nichts über die Koeffizienten des linearen Modells aus. Wie ist die lineare Regression mit der ANOVA identisch?

In der Tat können wir aovin Rder gleichen Funktion wie verwendet werden lm. Hier sind einige Beispiele.

> lm_fit=lm(mpg~as.factor(cyl),mtcars)

> aov_fit=aov(mpg~as.factor(cyl),mtcars)

> coef(lm_fit)
    (Intercept) as.factor(cyl)6 as.factor(cyl)8 
      26.663636       -6.920779      -11.563636 

> coef(aov_fit)
    (Intercept) as.factor(cyl)6 as.factor(cyl)8 
      26.663636       -6.920779      -11.563636 

> all(predict(lm_fit,mtcars)==predict(aov_fit,mtcars))
[1] TRUE

Wie Sie sehen, können wir nicht nur den Koeffizienten aus dem ANOVA-Modell abrufen, sondern ihn auch zur Vorhersage verwenden, genau wie das lineare Modell.

Wenn wir die Hilfedatei auf aovFunktion überprüfen , heißt es

Dies bietet einen Wrapper für die Anpassung linearer Modelle an symmetrische oder unsymmetrische Versuchsanordnungen. Der Hauptunterschied zu IM besteht in der Art und Weise, wie Print, Summary und so weiter mit der Passform umgehen: Dies wird in der traditionellen Sprache der Varianzanalyse und nicht in der der linearen Modelle ausgedrückt.


1

Nehmen wir alle Dateneinträge und ordnen sie in einer einzigen Spalte Y an, wobei die restlichen Spalten Indikatorvariablen 1 sind (i-te Daten sind Element der j-ten Spalte in der ursprünglichen Anova-Anordnung), dann nehmen wir eine einfache lineare Regression von Y an In allen anderen Spalten (z. B. Spalte B) sollten Sie die gleiche DF-, SS-, MS- und F-Teststatistik erhalten wie in Ihrem ANOVA-Problem.

Somit kann ANOVA als lineare Regression behandelt werden, indem die Daten mit binären Variablen geschrieben werden. Man beachte auch, dass der Regressionskoeffizient für beispielsweise eine Regression von Y auf B der gleiche sein sollte wie der Durchschnitt. der Spalte B, berechnet mit den Originaldaten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.