Tại sao ANOVA tương đương với hồi quy tuyến tính?


50

Tôi đọc rằng ANOVA và hồi quy tuyến tính là cùng một điều. Làm thế nào có thể, xem xét rằng đầu ra của ANOVA là một số giá trị và một số giá trị dựa trên đó bạn kết luận nếu mẫu có nghĩa là trên các mẫu khác nhau là giống nhau hay khác nhau.pFp

Nhưng giả sử các phương tiện không bằng nhau (bác bỏ giả thuyết null), ANOVA không cho bạn biết gì về các hệ số của mô hình tuyến tính. Vậy làm thế nào là hồi quy tuyến tính giống như ANOVA?

Câu trả lời:


44

ANOVA và hồi quy tuyến tính là tương đương khi hai mô hình kiểm tra các giả thuyết giống nhau và sử dụng một mã hóa giống hệt nhau. Các mô hình khác nhau về mục tiêu cơ bản của chúng: ANOVA chủ yếu liên quan đến việc trình bày sự khác biệt giữa các loại có nghĩa trong dữ liệu trong khi hồi quy tuyến tính chủ yếu liên quan đến ước tính đáp ứng trung bình mẫu và .σ2

Một phần nào đó cách ngôn có thể mô tả ANOVA như một hồi quy với các biến giả. Chúng ta có thể dễ dàng thấy rằng đây là trường hợp trong hồi quy đơn giản với các biến phân loại. Một biến phân loại sẽ được mã hóa dưới dạng ma trận chỉ báo (ma trận 0/1phụ thuộc vào việc một đối tượng có phải là một phần của một nhóm nhất định hay không) và sau đó được sử dụng trực tiếp cho giải pháp của hệ thống tuyến tính được mô tả bằng hồi quy tuyến tính. Hãy xem một ví dụ với 5 nhóm. Để tranh luận, tôi sẽ giả sử rằng giá trị trung bình của group1bằng 1, giá trị trung bình của group2bằng 2, ... và giá trị trung bình group5bằng 5. (Tôi sử dụng MATLAB, nhưng điều tương tự chính xác là tương đương trong 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

Như có thể thấy trong kịch bản này, kết quả hoàn toàn giống nhau. Sự khác biệt về số phút là do thiết kế không được cân bằng hoàn hảo cũng như thủ tục ước tính lớp lót; ANOVA tích lũy các lỗi số mạnh hơn một chút. Đối với sự tôn trọng đó, chúng tôi phù hợp với một đánh chặn , LRbetas(1); chúng ta có thể phù hợp với một mô hình không bị chặn nhưng đó không phải là hồi quy tuyến tính "tiêu chuẩn". (Tuy nhiên, kết quả thậm chí sẽ gần với ANOVA hơn trong trường hợp đó.)

Các -statistic (tỷ lệ phương tiện) trong trường hợp của ANOVA và trong trường hợp hồi quy tuyến tính cũng sẽ giống nhau cho ví dụ trên:F

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

Điều này là do các thủ tục kiểm tra cùng một giả thuyết nhưng với các từ khác nhau: ANOVA sẽ kiểm tra một cách định tính nếu " tỷ lệ này đủ cao để đề xuất rằng không có nhóm nào là không hợp lý " trong khi hồi quy tuyến tính sẽ kiểm tra một cách định tính nếu " tỷ lệ này đủ cao để chỉ đề xuất chặn mô hình có thể không đầy đủ ".
(Đây là một cách giải thích có phần miễn phí về " khả năng nhìn thấy một giá trị bằng hoặc lớn hơn giá trị được quan sát theo giả thuyết null " và nó không có nghĩa là một định nghĩa trong sách giáo khoa.)

Quay trở lại phần cuối cùng của câu hỏi của bạn về " ANOVA nói với bạn rằng bạn không biết gì về các hệ số của mô hình tuyến tính (giả sử phương tiện không bằng nhau ") Tôi hy vọng bây giờ bạn có thể thấy rằng ANOVA, trong trường hợp thiết kế của bạn là đơn giản / đủ cân bằng , cho bạn biết mọi thứ mà một mô hình tuyến tính sẽ làm. Khoảng tin cậy cho phương tiện nhóm sẽ giống như bạn có choβ, v.v ... Rõ ràng khi những người bắt đầu thêm nhiều đồng biến trong mô hình hồi quy của mình, ANOVA một chiều đơn giản không có sự tương đương trực tiếp. Trong trường hợp đó, người ta gia tăng thông tin được sử dụng để tính toán đáp ứng trung bình của hồi quy tuyến tính với thông tin không có sẵn trực tiếp cho ANOVA một chiều. Tôi tin rằng người ta có thể diễn đạt lại mọi thứ theo thuật ngữ ANOVA một lần nữa nhưng nó chủ yếu là một bài tập học thuật.

Một bài báo thú vị về vấn đề này là bài báo năm 2005 của Gelman có tiêu đề: Phân tích phương sai - Tại sao nó quan trọng hơn bao giờ hết . Một số điểm quan trọng nêu ra; Tôi không hoàn toàn ủng hộ bài báo này (tôi nghĩ rằng cá nhân tôi phù hợp hơn nhiều với quan điểm của McCullach) nhưng nó có thể là một bài đọc mang tính xây dựng.

Như một lưu ý cuối cùng: Cốt truyện dày lên khi bạn có các mô hình hiệu ứng hỗn hợp . Ở đó bạn có các khái niệm khác nhau về những gì có thể được coi là phiền toái hoặc thông tin thực tế liên quan đến việc nhóm dữ liệu của bạn. Những vấn đề này nằm ngoài phạm vi của câu hỏi này nhưng tôi nghĩ chúng đáng để gật đầu.


6
Câu trả lời được chấp nhận trên trang Xác thực chéo này cũng cho thấy mối quan hệ giữa ANOVA và hồi quy khá độc đáo, thông qua cách tiếp cận toán học bổ sung độc đáo cho cách tiếp cận thực tế của câu trả lời này.
EdM

+1. Ồ vâng, câu trả lời của @ MichaelHardy khá hay trong chủ đề đó. Cảm ơn đã đề cập đến nó!
usεr11852 nói Phục hồi Monic

Ngoài ra, +1, tôi cảm thấy con số này trong câu trả lời này thực sự hữu ích để thu hẹp khoảng cách giữa ANOVA và hồi quy tuyến tính
Haitao Du

Bạn có đồng ý rằng ANOVA là một GLM Gaussian với các yếu tố dự đoán phân loại không?
Digio

@Digio: Không, nó sẽ thể hiện quá mức sự phù hợp của việc sử dụng chúng; Tôi sẽ giữ GLM ra khỏi hình ảnh.
usεr11852 nói Phục hồi Monic

55

Hãy để tôi đặt một số màu vào ý tưởng rằng OLS với các biến hồi quy phân loại ( mã hóa giả ) tương đương với các yếu tố trong ANOVA. Trong cả hai trường hợp đều có các mức (hoặc nhóm trong trường hợp ANOVA).

Trong hồi quy OLS, thông thường nhất cũng có các biến liên tục trong các hồi quy. Chúng thay đổi một cách hợp lý mối quan hệ trong mô hình phù hợp giữa các biến phân loại và biến phụ thuộc (DC). Nhưng không đến mức làm cho song song không thể nhận ra.

Dựa trên tập mtcarsdữ liệu, trước tiên chúng ta có thể hình dung mô hình lm(mpg ~ wt + as.factor(cyl), data = mtcars)là độ dốc được xác định bởi biến liên tục wt(trọng lượng) và các phần chặn khác nhau chiếu hiệu ứng của biến phân loại cylinder(bốn, sáu hoặc tám hình trụ). Đây là phần cuối cùng tạo thành song song với ANOVA một chiều.

Chúng ta hãy xem nó bằng đồ họa trên ô phụ ở bên phải (ba ô phụ ở bên trái được đưa vào để so sánh giữa các bên với mô hình ANOVA được thảo luận ngay sau đó):

nhập mô tả hình ảnh ở đây

Mỗi động cơ xi lanh được mã hóa màu và khoảng cách giữa các đường được trang bị với các lần chặn khác nhau và đám mây dữ liệu tương đương với biến thể trong nhóm trong ANOVA. Lưu ý rằng các phần tử chặn trong mô hình OLS với biến liên tục ( weight) không giống nhau về mặt toán học với giá trị của các phương tiện trong nhóm khác nhau trong ANOVA, do ảnh hưởng của weightvà các ma trận mô hình khác nhau (xem bên dưới): giá trị trung bình mpgcủa Chẳng hạn, những chiếc xe 4 xi-lanh mean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364, trong khi đó, việc chặn "đường cơ sở" của OLS (phản ánh theo quy ước cyl==4(thứ tự từ thấp nhất đến cao nhất trong R)) là khác nhau rõ rệt : summary(fit)$coef[1] #[1] 33.99079. Độ dốc của các đường là hệ số cho biến liên tục weight.

Nếu bạn cố gắng triệt tiêu hiệu ứng weightbằng cách làm thẳng các đường thẳng này và đưa chúng trở lại đường ngang, bạn sẽ kết thúc với biểu đồ ANOVA của mô hình aov(mtcars$mpg ~ as.factor(mtcars$cyl))trên ba ô phụ ở bên trái. Công cụ weighthồi quy hiện đã hết, nhưng mối quan hệ từ các điểm đến các điểm chặn khác nhau được bảo toàn một cách thô sơ - chúng tôi chỉ đơn giản là quay ngược chiều kim đồng hồ và trải ra các ô chồng chéo trước đó cho mỗi cấp độ khác nhau (một lần nữa, chỉ như một thiết bị trực quan để "nhìn thấy" kết nối, không phải là một đẳng thức toán học, vì chúng ta đang so sánh hai mô hình khác nhau!).

Mỗi cấp độ trong hệ số cylinderlà riêng biệt và các đường thẳng đứng biểu thị các phần dư hoặc lỗi trong nhóm: khoảng cách từ mỗi điểm trong đám mây và giá trị trung bình của từng cấp độ (đường ngang được mã hóa màu). Độ dốc màu cho chúng ta một dấu hiệu cho thấy mức độ quan trọng trong việc xác nhận mô hình: các điểm dữ liệu được phân cụm xung quanh nhóm của chúng có nghĩa là gì, càng có nhiều khả năng mô hình ANOVA sẽ có ý nghĩa thống kê. Đường màu đen nằm ngang xung quanh trong tất cả các ô là giá trị trung bình của tất cả các yếu tố. Các số trong -axis chỉ đơn giản là số giữ chỗ / số nhận dạng cho từng điểm trong mỗi cấp và không có mục đích nào khác ngoài việc phân tách các điểm dọc theo đường ngang để cho phép hiển thị âm mưu khác với các ô vuông.20x

Và thông qua tổng của các phân đoạn dọc này, chúng ta có thể tự tính toán các phần dư:

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)

Kết quả: SumSq = 301.2626TSS - SumSq = 824.7846. So với:

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

Chính xác kết quả tương tự như thử nghiệm với ANOVA mô hình tuyến tính chỉ với phân loại cylinderlà hồi quy:

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 

Sau đó, những gì chúng ta thấy là phần dư - một phần của tổng phương sai không được giải thích bởi mô hình - cũng như phương sai là như nhau cho dù bạn gọi một OLS loại lm(DV ~ factors)hay ANOVA ( aov(DV ~ factors)): khi chúng ta loại bỏ mô hình của các biến liên tục, chúng tôi kết thúc với một hệ thống giống hệt nhau. Tương tự như vậy, khi chúng ta đánh giá các mô hình trên toàn cầu hoặc dưới dạng ANOVA omnibus (không phải theo cấp độ), chúng ta tự nhiên nhận được cùng một giá trị p F-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09.

Điều này không có nghĩa là việc kiểm tra các cấp độ riêng lẻ sẽ mang lại giá trị p giống hệt nhau. Trong trường hợp OLS, chúng ta có thể gọi summary(fit)và nhận:

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

Điều này là không thể trong ANOVA, đây là một thử nghiệm omnibus. Để có được các loại đánh giá giá trị chúng tôi cần chạy thử nghiệm Sự khác biệt đáng kể của Tukey, việc này sẽ cố gắng giảm khả năng xảy ra lỗi loại I do thực hiện nhiều so sánh theo cặp (do đó, " "), dẫn đến một đầu ra hoàn toàn khác nhau: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

Cuối cùng, không có gì yên tâm hơn là nhìn trộm động cơ dưới mui xe, không ai khác chính là ma trận mô hình và các hình chiếu trong không gian cột. Đây thực sự là khá đơn giản trong trường hợp ANOVA:

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

Đây sẽ là một chiều mô hình ANOVA ma trận với ba cấp độ (ví dụ cyl 4, cyl 6, cyl 8), tóm tắt như , nơi là giá trị trung bình ở mỗi cấp hoặc nhóm: khi lỗi hoặc dư cho quan sát của nhóm hoặc cấp được thêm vào, chúng tôi có được quan sát DV thực tế .yij=μi+ϵijμijiyij

Mặt khác, ma trận mô hình cho hồi quy OLS là:

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

Đây là dạng với một lần chặn và hai dốc ( và ) mỗi lần cho một biến liên tục khác nhau, nói và .yi=β0+β1xi1+β2xi2+ϵiβ0β1β2weightdisplacement

Bí quyết bây giờ là xem làm thế nào chúng ta có thể tạo ra các phần chặn khác nhau, như trong ví dụ ban đầu, lm(mpg ~ wt + as.factor(cyl), data = mtcars)- vì vậy, hãy thoát khỏi độ dốc thứ hai và bám vào biến liên tục duy nhất ban đầu weight(nói cách khác, một cột duy nhất bên cạnh cột của các cột trong ma trận mô hình, chặn và độ dốc cho , ). Theo mặc định, cột của sẽ tương ứng với phần chặn. Một lần nữa, giá trị của nó không giống với ANOVA trong nhóm có nghĩa là , một quan sát không nên ngạc nhiên khi so sánh cột 'trong ma trận mô hình OLS (bên dưới) với cột đầu tiên củaβ0weightβ11cyl 4cyl 411Trong ma trận mô hình ANOVA chỉ chọn các ví dụ với 4 xi lanh. Việc chặn sẽ được chuyển qua mã hóa giả để giải thích hiệu quả của và như sau:(1),cyl 6cyl 8

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

Bây giờ khi cột thứ ba là chúng ta sẽ chuyển hệ thống chặn bằngCác chỉ ra rằng, như trong trường hợp của "cơ sở" đánh chặn trong mô hình OLS không được giống với giá trị trung bình nhóm xe 4 xi-lanh, nhưng phản ánh nó, sự khác biệt giữa các cấp trong mô hình OLS là không toán học sự khác biệt giữa các nhóm về phương tiện: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)

Tương tự, khi cột thứ tư là , một giá trị cố định sẽ được thêm vào phần chặn. Do đó, phương trình ma trận sẽ là . Do đó, việc đưa mô hình này sang mô hình ANOVA chỉ là vấn đề loại bỏ các biến liên tục và hiểu rằng việc chặn mặc định trong OLS phản ánh mức độ đầu tiên trong ANOVA.1μ~3yi=β0+β1xi+μ~i+ϵi


6
+1, tôi thích minh họa đồ họa của bạn !! chất lượng xuất bản!
Haitao Du

@ hxd1011 Điều này rất tốt đẹp của bạn. Tôi rât cảm kich.
Antoni Parellada

6

Antoni Parellada và usεr11852 đã có câu trả lời rất hay. Tôi sẽ giải quyết câu hỏi của bạn cho quan điểm mã hóa với R.

ANOVA không cho bạn biết gì về các hệ số của mô hình tuyến tính. Vậy làm thế nào là hồi quy tuyến tính giống như ANOVA?

Trong thực tế, chúng ta có thể aovhoạt động Rcó thể được sử dụng giống như lm. Dưới đây là một số ví dụ.

> 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

Như bạn có thể thấy, không chỉ chúng ta có thể lấy hệ số từ mô hình ANOVA, mà chúng ta còn có thể sử dụng nó để dự đoán, giống như mô hình tuyến tính.

Nếu chúng ta kiểm tra tệp trợ giúp cho aovchức năng thì nó nói

Điều này cung cấp một trình bao bọc cho lm để phù hợp với các mô hình tuyến tính cho các thiết kế thử nghiệm cân bằng hoặc không cân bằng. Sự khác biệt chính từ lm là ở cách in, tóm tắt, v.v. xử lý sự phù hợp: điều này được thể hiện bằng ngôn ngữ truyền thống về phân tích phương sai thay vì mô hình tuyến tính.


1

Nếu chúng ta lấy tất cả các mục nhập dữ liệu và sắp xếp chúng vào một cột Y, thì các cột còn lại là các biến chỉ báo 1 {dữ liệu thứ i là phần tử của cột thứ j trong sắp xếp anova ban đầu} sau đó bằng cách thực hiện hồi quy tuyến tính đơn giản của Y trên bất kỳ cột nào khác (ví dụ cột B), bạn sẽ có được thống kê kiểm tra DF, SS, MS và F giống như trong bài toán ANOVA của bạn.

Do đó, ANOVA có thể được coi là 'Hồi quy tuyến tính' bằng cách ghi dữ liệu bằng các biến nhị phân. Cũng lưu ý rằng hệ số hồi quy cho, giả sử, hồi quy của Y trên B phải giống như avg. của cột B, được tính toán với dữ liệu gốc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.