Чому ANOVA еквівалентний лінійній регресії?


50

Я читав, що ANOVA та лінійна регресія - це одне і те ж. Як це може бути, враховуючи, що вихід ANOVA є деяким значенням і деяким значенням, на основі якого ви робите висновок, чи означає вибірки для різних вибірок однакові чи різні.рFp

Але якщо припустити, що засоби не рівні (відкидають нульову гіпотезу), ANOVA нічого не говорить про коефіцієнти лінійної моделі. Тож як лінійна регресія така ж, як і ANOVA?

Відповіді:


44

ANOVA та лінійна регресія еквівалентні, коли дві моделі перевіряють однакові гіпотези та використовують ідентичне кодування. Моделі відрізняються своєю основною метою: ANOVA в основному стурбований поданням відмінностей між засобами категорій у даних, тоді як лінійна регресія в основному стосується оцінювання середньої відповіді вибірки та пов'язаної з ним .σ2

Трохи афористично можна описати ANOVA як регресію з фіктивними змінними. Ми легко можемо побачити, що це справа в простому регресії з категоричними змінними. Категорична змінна буде кодована як матриця індикатора (матриця 0/1залежно від того, є суб'єкт частиною певної групи чи ні), а потім безпосередньо використовується для рішення лінійної системи, описаної лінійною регресією. Давайте подивимось приклад з 5 групами. На користь аргументу я вважаю, що середнє значення group1дорівнює 1, середнє значення group2дорівнює 2, ... і середнє значення group5дорівнює 5. (Я використовую MATLAB, але точно така ж річ еквівалентна в Р.)

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

Як видно з цього сценарію, результати точно такі ж. Хвилинна чисельна різниця пояснюється тим, що конструкція не є ідеально збалансованою, а також основою процедури оцінки; ANOVA накопичує числові помилки трохи агресивніше. У цьому відношенні ми підходимо до перехоплення LRbetas(1); ми могли б підходити до моделі без перехоплення, але це не було б "стандартною" лінійною регресією. (Результати були б навіть ближчими до ANOVA в цьому випадку.)

У -Статистика (співвідношення коштів) у разі ANOVA і в разі лінійної регресії буде також бути тим же самим для наведеного вище прикладу:F

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

Це тому, що процедури перевіряють ту саму гіпотезу, але з різними формулюваннями: ANOVA якісно перевірить, чи " коефіцієнт достатньо високий, щоб припустити, що жодне групування не є правдоподібним ", тоді як лінійна регресія буде якісно перевірити, чи " коефіцієнт достатньо високий, щоб запропонувати лише перехоплення модель, можливо, неадекватна ".
(Це дещо вільне тлумачення " можливості бачити значення, рівне або більше, ніж те, яке спостерігається під нульовою гіпотезою ", і це не означає, що це визначення текстової книги.)

Повертаючись до заключної частини Вашого запитання про " ANOVA скажи (ти), що ти нічого не стосується коефіцієнтів лінійної моделі (якщо припустити, що кошти не рівні ") Я сподіваюся, що тепер ви можете побачити, що ANOVA, у випадку, якщо ваш дизайн є простою / достатньо збалансованою , говорить вам усе, що було б лінійною моделлю. Інтервали довіри для групових засобів будуть однаковими для вашогоβі т. д. Очевидно, коли люди починають додавати декілька коваріатів у свою регресійну модель, простий односторонній ANOVA не має прямої еквівалентності. У цьому випадку можна поповнювати інформацію, що використовується для обчислення середньої реакції лінійної регресії, інформацією, яка безпосередньо недоступна для однобічного ANOVA. Я вважаю, що можна ще раз висловити речі в термінах ANOVA, але це, в основному, академічні вправи.

Цікавою статтею з цього питання є праця Гельмана 2005 року під назвою: Аналіз варіації - чому це важливіше, ніж будь-коли . Підняті деякі важливі моменти; Я не повністю підтримую цей документ (я думаю, що я особисто набагато більше узгоджуюсь з поглядом МакКаллаха), але це може бути конструктивне прочитання.

На завершення: сюжет загущається, коли у вас змішані моделі ефектів . Там у вас є різні поняття про те, що можна вважати неприємністю або фактичною інформацією щодо групування ваших даних. Ці питання виходять за рамки цього питання, але я вважаю, що вони гідні кивати.


6
Прийнята відповідь на цій перехресно підтвердженій сторінці також показує відношення між ANOVA та регресією досить добре, за допомогою математичного підходу, який добре доповнює практичний підхід цієї відповіді.
EdM

+1. О так, відповідь Майкла Гарді досить хороша в цій темі. Дякуємо, що згадали про це!
usεr11852 повідомляє Відновити Моніку

+1, крім того, я вважаю, що ця цифра у цій відповіді дуже корисна для усунення розриву між ANOVA та лінійною регресією
Хайтао Ду

Чи погоджуєтесь ви з тим, що ANOVA - це гауссова ГЛМ з категоричними прогнозами?
Дігіо

@Digio: Ні, це спростило б доцільність їх використання; Я б утримав GLM поза картиною.
usεr11852 повідомляє Відновити Моніку

55

Дозвольте мені додати трохи кольорів до думки, що OLS з категоричними ( кодованими ) регресорами еквівалентно факторам ANOVA. В обох випадках є рівні (або групи у випадку ANOVA).

В регресії OLS найчастіше є також постійні змінні в регресорах. Вони логічно змінюють взаємозв'язок у моделі підгонки між категоричними змінними та залежною змінною (DC). Але не до того, щоб зробити паралель невпізнанною.

На основі mtcarsнабору даних ми можемо спочатку візуалізувати модель lm(mpg ~ wt + as.factor(cyl), data = mtcars)як нахил, визначений безперервною змінною wt(вагою), і різні перехоплення, що проектують ефект категоріальної змінної cylinder(чотири, шість чи вісім циліндрів). Саме ця остання частина утворює паралель з односторонньою ANOVA.

Давайте подивимось це графічно на піддіаграмі праворуч (три піддіаграми зліва включені для порівняння бік на бік із моделлю ANOVA, обговореного відразу після цього):

введіть тут опис зображення

Кожен двигун циліндра кольорово кодований, а відстань між встановленими лініями з різними перехопленнями та хмарою даних є еквівалентом змін у групі ANOVA. Зауважте, що перехоплення в моделі OLS з неперервною змінною ( weight) математично не збігаються з значенням різних засобів усередині групи в ANOVA, завдяки ефекту weightта різних матриць моделі (див. Нижче): середнє значення mpgдля 4-циліндрові машини, наприклад, mean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364, в той час як МНК «базової лінія» перехоплення (що відображає за угодою cyl==4( від низького до високих цифр упорядкування в R)) помітно відрізняються: summary(fit)$coef[1] #[1] 33.99079. Нахил ліній - коефіцієнт для безперервної змінної weight.

Якщо ви спробуєте придушити ефект weight, подумки випрямивши ці лінії і повернувши їх до горизонтальної лінії, ви закінчите графік ANOVA моделі aov(mtcars$mpg ~ as.factor(mtcars$cyl))на трьох підсхемах зліва. weightРегресорів тепер поза, але відносини від точок до різних перехоплює грубо зберігається - ми просто обертається проти годинникової стрілки і розводячи раніше перекриваються ділянок для кожного різного рівня (знову ж , тільки в якості візуального пристрою «бачити» зв'язок; не як математична рівність, оскільки ми порівнюємо дві різні моделі!).

Кожен рівень у факторі cylinderє окремим, а вертикальні лінії представляють залишки або помилку в межах групи: відстань від кожної точки в хмарі та середнє значення для кожного рівня (кольорова горизонтальна лінія). Кольоровий градієнт дає нам вказівку на те, наскільки значущі рівні у валідації моделі: чим більше кластеризованих точок даних навколо їх групових засобів, тим більше шансів, що модель ANOVA буде статистично значущою. Горизонтальна чорна лінія навколо на всіх ділянках - це середнє значення для всіх факторів. Цифри в -axis - це просто номер / ідентифікатор заповнення місця для кожної точки на кожному рівні, і вони не мають іншого призначення, ніж розділяти точки вздовж горизонтальної лінії, щоб дозволити графічне відображення, що відрізняється від boxplots.20x

І саме через суму цих вертикальних відрізків ми можемо вручну обчислити залишки:

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)

Результат: SumSq = 301.2626і TSS - SumSq = 824.7846. Порівняти з:

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

Точно такий самий результат, як тестування з ANOVA лінійної моделі з лише категорією cylinderрегресора:

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 

Тож ми бачимо, що залишки - частина загальної дисперсії, яка не пояснюється моделлю, - а також дисперсія є однаковою, ви називаєте тип OLS lm(DV ~ factors)або ANOVA ( aov(DV ~ factors)): коли ми знімаємо смужку модель безперервних змінних ми закінчуємо ідентичною системою. Аналогічно, коли ми оцінюємо моделі в усьому світі або як універсальний ANOVA (не рівень за рівнем), ми, природно, отримуємо однакове p-значення F-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09.

Це не означає, що тестування окремих рівнів дасть однакові р-значення. У випадку з OLS ми можемо викликати summary(fit)та отримати:

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

Це неможливо в системі ANOVA, що є більш тестом всебічної допомоги. Для отримання цих типів -значних оцінок нам потрібно провести тест «Чесна Сумлінна Суттєва Відмінність», який намагатиметься зменшити можливість помилки I типу в результаті проведення декількох парних порівнянь (отже, « »), в результаті чого зовсім інший вихід: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

Зрештою, ніщо не є більш заспокійливим, ніж заглянути в двигун під капотом, що є не що інше, як матриці моделей та виступи в просторі стовпців. Це насправді досить просто у випадку з ANOVA:

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

Це було б односторонній ANOVA модель матриці з трьома рівнями (наприклад cyl 4, cyl 6, cyl 8), підсумовані , де є середнім на кожному рівні або групи: коли додано помилку або залишкову для спостереження групи або рівня , ми отримаємо фактичне спостереження DV .yij=μi+ϵijμijiyij

З іншого боку, матриця моделі для регресії OLS є:

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

Це має форму з одним перехопленням та двома нахилами ( та ) кожен для різні постійні змінні, скажімо, і .yi=β0+β1xi1+β2xi2+ϵiβ0β1β2weightdisplacement

Тепер хитрість полягає в тому, щоб побачити, як ми можемо створювати різні перехоплення, як у початковому прикладі, lm(mpg ~ wt + as.factor(cyl), data = mtcars)- тому давайте позбудемося другого схилу та дотримуємось оригінальної єдиної безперервної змінної weight(іншими словами, одного єдиного стовпчика, крім стовпця з матриця моделі, що відсікається відрізок і нахил для , ). Стовпець 'за замовчуванням відповідає перехопленню. Знову ж таки, його значення не тотожне середньому для групи ANOVA для спостереження, яке не повинно дивувати, порівнюючи стовпчик 'в матриці моделі OLS (внизу) з першим стовпцемβ0weightβ11cyl 4cyl 411в матриці моделі ANOVA яка вибирає лише приклади з 4-циліндровими. Перехоплення буде зміщене за допомогою фіктивного кодування для пояснення ефекту та наступного:(1),cyl 6cyl 8

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

Тепер, коли третій стовпець буде ми будемо систематично зміщувати перехоплення на вказує на те, що, як і у випадку з «базової лінії» перехоплення в моделі МНК же не бути ідентична групі середнього 4-циліндрових автомобілів, але відображає його, відмінності між рівнями в моделі МНК не є математично відмінності між групами в засобах: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)

Так само, коли четвертий стовпець , до перехоплення додається фіксоване значення . Отже, матричне рівняння буде . Тому перехід з цією моделлю до моделі ANOVA - це лише питання позбавлення від безперервних змінних та розуміння того, що перехоплення за умовчанням в OLS відображає перший рівень в ANOVA.1μ~3yi=β0+β1xi+μ~i+ϵi


6
+1, я люблю вашу графічну ілюстрацію !! якість публікації!
Хайтао Ду

@ hxd1011 Це дуже приємно з вас. Я ціную це.
Антоні Пареллада

6

Антоні Пареллада і нас 11852 мали дуже гарну відповідь. Я вирішу ваше питання щодо кодування з точки зору R.

ANOVA нічого не говорить про коефіцієнти лінійної моделі. Тож як лінійна регресія така ж, як і ANOVA?

Насправді, ми можемо aovфункціонувати в тому, що Rможна використовувати так само, як lm. Ось кілька прикладів.

> 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

Як бачимо, ми не можемо отримати коефіцієнт від моделі ANOVA, але також можемо використовувати його для прогнозування, як і лінійну модель.

Якщо ми перевіримо файл довідки на aovфункцію, він говорить

Це забезпечує обгортку до lm для пристосування лінійних моделей до збалансованих або незбалансованих експериментальних конструкцій. Основна відмінність від lm полягає в способі друку, резюме та ін. Обробляти відповідність: це виражається в традиційній мові аналізу дисперсії, а не в лінійних моделях.


1

Якщо ми візьмемо всі записи даних і впорядкуємо їх в один єдиний стовпець Y, а решта стовпців - індикаторні змінні 1 {i-ці дані є елементом j-го стовпця в оригінальному розташуванні anova}, то, взявши просту лінійну регресію Y на будь-який з інших стовпців (скажімо, стовпчик B), ви повинні отримати ту саму статистику тестів DF, SS, MS та F, як у вашій проблемі ANOVA.

Таким чином, ANOVA можна «трактувати як« лінійну регресію, записуючи дані з бінарними змінними. Також зауважте, що коефіцієнт регресії для, скажімо, регресії Y на B повинен бути таким же, як середній. стовпця B, обчислені з вихідними даними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.