ANOVA neden doğrusal regresyona eşittir?


50

ANOVA ve lineer regresyonun aynı olduğunu okudum. Bu, ANOVA çıktısının, bir değeri ve farklı numuneler boyunca numune anlamına gelirse, aynı veya farklı olup olmadığına karar verdiğiniz bir değeri olduğunu göz önünde bulundurarak olabilir .Fp

Ancak, araçların eşit olmadığını varsayalım (boş hipotezi reddet), ANOVA size doğrusal modelin katsayıları hakkında hiçbir şey söylemez. Öyleyse lineer regresyon ANOVA ile aynı mıdır?

Yanıtlar:


44

ANOVA ve doğrusal regresyon, iki model aynı hipotezlere karşı test ettiğinde ve aynı bir kodlama kullandığında aynıdır. Modeller temel amaçlarına göre farklılık gösterir: ANOVA çoğunlukla verilerdeki kategorilerin ortalamaları arasındaki farkları sunmakla ilgilenirken, doğrusal regresyon çoğunlukla bir örnek ortalama cevabını ve bununla ilişkili bir tahmin etmekle ilgilenir .σ2

Biraz aforist olarak, ANOVA'yı kukla değişkenli bir regresyon olarak tanımlayabilir. Bunun kategorik değişkenlerle basit regresyonda olduğunu kolayca görebiliriz. Kategorik bir değişken gösterge matrisi olarak kodlanacaktır (bir 0/1öznenin belirli bir grubun parçası olup olmamasına bağlı olarak bir matris) olarak kodlanacak ve daha sonra doğrudan doğrusal bir regresyon tarafından tanımlanan doğrusal sistemin çözümü için kullanılacaktır. 5 gruba sahip bir örnek görelim. Argüman uğruna, group1eşittir 1'in ortalamasının, group2eşittir 2'nin ortalamasının… ve group5eşittir 5'inin ortalaması olduğunu kabul edeceğim (MATLAB kullanıyorum, ancak aynı şey R'de eşittir).

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

Bu senaryoda da görülebileceği gibi, sonuçlar tamamen aynıdır. Sayısal küçük fark, tasarımın altında yatan tahmin prosedürünün yanı sıra mükemmel bir şekilde dengelenmemesinden kaynaklanmaktadır; ANOVA, sayısal hataları biraz daha agresif şekilde biriktirir. Bu açıdan bir kesişime uyuyoruz LRbetas(1); engelsiz bir modele uyabilirdik ama bu "standart" bir doğrusal regresyon olmazdı. (Bu durumda sonuçlar ANOVA'ya bile daha yakın olacaktır.)

ANOVA durumunda ve doğrusal regresyon durumunda -statistic (araçlarının bir oran) olarak aynı zamanda, yukarıda, örneğin aynı olacaktır:F

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

Bunun nedeni, prosedürlerin aynı hipotezi test etmesidir, ancak farklı kelimelerle: ANOVA " oranlamanın gruplaşmanın mümkün olmadığını gösterecek kadar yüksek olduğunu" nitel olarak kontrol ederken doğrusal regresyon, sadece oranın sadece bir engelleme önerecek kadar yüksek olup olmadığını nitel olarak kontrol edecektir. model muhtemelen yetersiz ".
(Bu, " sıfır hipotezi altında gözlemlenen değere eşit veya daha büyük bir değer görme olasılığı " nın biraz serbestçe yorumlanmasıdır ve bir metin-kitap tanımı olduğu anlamına gelmez.)

" ANOVA size doğrusal modelin katsayıları hakkında hiçbir şey söylemediğini " (ancak araçların eşit olmadığı varsayılarak) hakkında sorunuzun son kısmına geri dönersek, umarım artık tasarımınızın ANOVA olduğunu görebilirsiniz. yeterince basit / dengeli , doğrusal bir modelin yapabileceği her şeyi size söyler. Grup ortalamaları için güven aralıkları hesabınızla aynı olacaktır.βAçıkçası, bunlar regresyon modelinde çoklu değişkenler eklemeye başladığında, basit bir tek yönlü ANOVA'nın doğrudan bir denkliği yoktur. Bu durumda, tek yönlü bir ANOVA için doğrudan bulunmayan bilgilerle doğrusal regresyonun ortalama cevabını hesaplamak için kullanılan bilgiler artırılır. İnsanların ANOVA terimlerini bir kez daha ifade edebileceklerine inanıyorum ama bu çoğunlukla akademik bir alıştırma.

Konuyla ilgili ilginç bir makale Gelman'ın 2005 tarihli makalesi: Varyans Analizi - Neden her zamankinden daha önemli ? Bazı önemli noktalar gündeme getirildi; Makaleyi tam olarak desteklemiyorum (Sanırım McCullach'ın görüşüyle ​​kişisel olarak daha fazla uyuştuğumu düşünüyorum) ama yapıcı bir okuma olabilir.

Son bir not olarak: Karma efektli modellerde arsa artar . Orada, verilerinizin gruplandırılmasıyla ilgili olarak neyin sıkıntı yaratabileceği veya gerçek bilgiler olarak değerlendirilebilecek farklı kavramlara sahipsiniz. Bu meseleler, bu sorunun kapsamı dışında ancak bir başını sallamaya değer olduğunu düşünüyorum.


6
Bu Çapraz Doğrulanmış sayfada kabul edilen cevap, ANOVA ile regresyon arasındaki ilişkiyi, bu cevabın pratik yaklaşımını güzel bir şekilde tamamlayan matematiksel bir yaklaşımla oldukça güzel bir şekilde göstermektedir.
EdM

+1. Evet, @ MichaelHardy'nin cevabı bu konuda oldukça iyi. Bahsettiğin için teşekkürler!
usεr11852 diyor Reinstate Monic 2:15

1, ek olarak, hissediyorum bu rakam içinde bu cevap ANOVA ve lineer regresyon arasındaki uçurumu gerçekten yararlı olduğunu
Haitao Du

ANOVA'nın kategorik öngörüleri olan Gaussian GLM olduğu konusunda hemfikir misiniz?
Digio

@Dio: Hayır, kullanımlarının uygunluğunu fazla basitleştirecektir; GLM'yi resimden uzak tutardım.
usεr11852, Reinstate Monic

55

Kategorik ( kukla kodlu ) regresörlü OLS'nin ANOVA'daki faktörlere eşdeğer olduğu fikrine biraz renk vermeme izin verin . Her iki durumda da seviyeler vardır (veya ANOVA durumunda gruplar ).

OLS regresyonunda, regresörlerde sürekli değişkenlerin olması en yaygın olanıdır. Bunlar, uygun modeldeki kategorik değişkenler ile bağımlı değişken (DC) arasındaki ilişkiyi mantıksal olarak değiştirir. Ancak paralelin tanınmaz hale getirilme noktasına gelmiyor.

mtcarsVeri setine dayanarak, ilk önce modeli lm(mpg ~ wt + as.factor(cyl), data = mtcars)sürekli değişken wt(ağırlık) tarafından belirlenen eğim ve kategorik değişkenin cylinder(dört, altı veya sekiz silindir) etkisini yansıtan farklı kavşaklar olarak görselleştirebiliriz . Tek yönlü bir ANOVA ile paralel oluşturan bu son kısımdır.

Sağdaki alt arsa üzerinde grafiksel olarak görelim (hemen ardından tartışılan ANOVA modeliyle yan yana karşılaştırma için soldaki üç alt grafik dahil edilmiştir):

görüntü tanımını buraya girin

Her bir silindir motoru renk kodludur ve farklı kavramalara sahip takılı çizgiler ile veri bulutu arasındaki mesafe bir ANOVA'daki grup içi değişimin eşdeğeridir. Sürekli bir değişken ile (en küçük kareler model kesişir olduğuna dikkat edin weight) bağlı etkisiyle, matematiksel ANOVA farklı olan grup araçlarının değeri ile aynı değildir weightve farklı bir model matrisleri (aşağıya bakınız): ortalama mpgiçin 4 silindirli araba, örneğin, bir mean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364, en küçük kareler "taban çizgisi" kesişim ise (genel olarak yansıtan cyl==4(düşük R sipariş yüksek rakamın)) belirgin bir şekilde farklıdır: summary(fit)$coef[1] #[1] 33.99079. Çizgilerin eğimi, sürekli değişken için katsayıdır weight.

weightBu çizgileri zihinsel olarak düzleştirerek ve bunları yatay çizgiye döndürerek etkisini bastırmaya çalışırsanız , modelin ANOVA arsası ile aov(mtcars$mpg ~ as.factor(mtcars$cyl))soldaki üç alt arsa üzerinde durursunuz. weightGeri çekici üzerinden şimdi, ama farklı durumlara puan arasında bir ilişki yaklaşık olarak korunur - Sadece basit "görmesini" görsel bir cihaz olarak, saat yönünün tersine döner ve tekrar her farklı seviyede (daha önce üst üste gelen araziler yayılıyor bağlantı, matematiksel bir eşitlik olarak değil, çünkü iki farklı modeli karşılaştırıyoruz!).

Faktördeki her seviye cylinderayrıdır ve dikey çizgiler artıkları veya grup içi hatayı temsil eder: buluttaki her noktadan uzaklık ve her seviye için ortalama (renk kodlu yatay çizgi). Renk gradyanı bize, seviyelerin modeli doğrulamada ne kadar önemli olduğunun bir göstergesidir: veri noktaları grup ortalamaları etrafında ne kadar kümelenirse, ANOVA modelinin istatistiksel olarak anlamlı olması o kadar olasıdır. Tüm grafiklerdeki etrafındaki yatay siyah çizgi tüm faktörlerin ortalamasıdır. ekseni içindeki sayılar, her seviye içindeki her nokta için yer tutucusu numarası / tanımlayıcısıdır ve yatay çizgiler boyunca noktaları çizerek farklı bir çizim göstermesine izin vermek için noktaları ayırmaktan başka bir amacı yoktur.20x

Ve bu dikey bölümlerin toplamı aracılığıyla artıkları manuel olarak hesaplayabiliriz:

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)

Sonuç: SumSq = 301.2626ve TSS - SumSq = 824.7846. Karşılaştırmak:

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

Tam olarak aynı sonuç bir ANOVA ile test edildiğinde lineer model sadece cylinderregresör olarak kategorik olarak yapılır:

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 

Öyleyse gördüğümüz şey, artıkların - model tarafından açıklanmayan toplam varyansın bir parçası - varyansın, türün bir OLS lm(DV ~ factors)veya bir ANOVA ( aov(DV ~ factors)): Sürekli değişkenlerin modelini özdeş bir sistemle bitiriyoruz. Benzer şekilde, modelleri küresel olarak veya çok amaçlı bir ANOVA (seviye seviyesine göre değil) olarak değerlendirdiğimizde, doğal olarak aynı p değerini elde ederiz F-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09.

Bu, bireysel seviyelerin test edilmesinin aynı p-değerleri vereceği anlamına gelmez. OLS durumunda, şunu çağırabilir summary(fit)ve alabiliriz:

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 ***

Bu çok amaçlı bir testten daha fazlası olan ANOVA'da mümkün değildir. Bu türden değer değerlendirmelerine sahip olmak için, çoklu çift karşılaştırmalar (dolayısıyla, " ") sonucunda ortaya çıkan bir tür I hatası olasılığını azaltmaya çalışacak bir Tukey En Dürüst Önemli Fark testi yapmamız gerekir. tamamen farklı çıktı: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

Sonuçta, hiçbir şey, model matrislerinden ve sütun uzayındaki çıkıntılardan başka bir şey olmayan, kaputun altındaki motora göz atmaktan daha güven verici değildir. Bunlar bir ANOVA için oldukça basittir:

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

Bu üç düzeyde (örneğin, tek yönlü ANOVA modelinde matrisi olacaktır cyl 4, cyl 6, cyl 8), şu şekilde özetlenebilir , her düzeyde veya grubu ortalamasıdır: zaman gözlem hata veya kalıntı grubu ya da seviyesinin ilave edilir, gerçek DV elde gözlem.yij=μi+ϵijμijiyij

Öte yandan, bir OLS regresyonu için model matrisi:

[y1y2y3y4yn]=[1x12x131x22x231x32x331x42x431xn2xn3][β0β1β2]+[ε1ε2ε3ε4εn]

Bu, olup, her biri için tek bir kesişme ve iki eğim ( ve ) şeklindedir. farklı bir sürekli değişken, say ve .yi=β0+β1xi1+β2xi2+ϵiβ0β1β2weightdisplacement

Şimdiki püf noktası, ilk örnekte olduğu gibi, farklı kavşakları nasıl yaratabileceğimizi görmektir lm(mpg ~ wt + as.factor(cyl), data = mtcars)- bu yüzden ikinci eğimden kurtulalım ve orijinal tek sürekli değişkene weight(diğer bir deyişle, bir sütunun yanı sıra tek bir sütuna yapışalım). model matrisi, kesişme ve eğim , ). ' sütunu varsayılan olarak araya girmeye karşılık gelecektir . Yine, değeri, grup içi ortalama için ANOVA ile aynı değildir , OLS model matrisindeki (aşağıda) 's sütununun (aşağıda) nin ilk sütunu ile karşılaştırılması şaşırtıcı olmamalıdır .β0weightβ11cyl 4cyl 411Sadece 4 silindirli örnekleri seçen ANOVA model matrisinde . Kesişme etkisini açıklamak için kodlama taklit ile kaydırılır ve aşağıdaki gibidir:(1),cyl 6cyl 8

[y1y2y3y4y5yn]=[1x11x21x31x41x51xn][β0β1]+[101010010101][μ~2μ~3]+[ε1ε2ε3ε4ε5εn]

Şimdi, üçüncü sütun olduğunda, sistematik olarak kesişimi En Küçük Kareler Model 4-silindirli otomobillerin grubunu ifade etmek için aynıdır, ancak yansıtma değil "taban" kesişim durumunda olduğu gibi, olduğunu gösterir, en küçük kareler model seviyeleri arasındaki farklar değildir matematiksel gruplar arası farklar şu anlama gelir: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)

Benzer şekilde, dördüncü sütun , sabit bir değer eklenecektir. Dolayısıyla matris denklemi . Bu nedenle, bu modelle ANOVA modeline gitmek, sürekli değişkenlerden kurtulmaktan ibarettir ve OLS'deki varsayılan engellemenin ANOVA'daki birinci seviyeyi yansıttığını anlamaktır.1μ~3yi=β0+β1xi+μ~i+ϵi


6
+1, grafik resminizi seviyorum! yayın kalitesi!
Haitao Du

@ hxd1011 Bu çok hoş. Bunu takdir ediyorum.
Antoni Parellada

6

Antoni Parellada ve us11112 çok iyi cevap verdiler. Kodlama perspektifiyle ilgili sorunuza cevap vereceğim R.

ANOVA size lineer modelin katsayıları hakkında hiçbir şey söylemez. Öyleyse lineer regresyon ANOVA ile aynı mıdır?

Aslında aovişlev Rgörebiliriz olarak aynı şekilde kullanılabilir lm. İşte bazı örnekler.

> 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

Gördüğünüz gibi, yalnızca ANOVA modelinden katsayı elde edemiyoruz, aynı zamanda onu tahmin etmek için de kullanıyoruz, tıpkı doğrusal model gibi.

Yardım dosyasını aovişlev için kontrol edersek

Bu , lineer modelleri dengelenmiş veya dengesiz deneysel tasarımlara takmak için lm'ye bir sarıcı sağlar . Lm'den ana fark, baskı, özet vb. Uyum için geçerlidir. Bu, doğrusal modellerden ziyade varyans analizinin geleneksel dilinde ifade edilir.


1

Tüm veri girişlerini alır ve bunları tek bir Y sütununda düzenlersek, geri kalan sütunların gösterge değişkenleri 1 olması koşuluyla, {{bu veriler orijinal anova düzenlemesindeki jth sütununun öğesidir}, sonra basit bir Y doğrusal regresyon alarak diğer sütunlardan herhangi birini (B sütununu söyleyin), ANOVA probleminizde olduğu gibi aynı DF, SS, MS ve F test istatistiklerini elde etmelisiniz.

Böylece ANOVA, verileri ikili değişkenlerle yazarak Doğrusal Regresyon olarak kabul edilebilir. Ayrıca, örneğin B üzerindeki Y regresyonu için regresyon katsayısının, avg ile aynı olması gerektiğini unutmayın. B sütununun orijinal verilerle hesaplanması.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.