Дозвольте мені додати трохи кольорів до думки, що 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:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢y1y2y3⋮⋮⋮.yn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢11⋮00⋮.0000⋮11⋮.0000⋮00⋮.11⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢μ1μ2μ3⎤⎦⎥+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢ε1ε2ε3⋮⋮⋮.εn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(1)
Це було б односторонній ANOVA модель матриці з трьома рівнями (наприклад cyl 4
, cyl 6
, cyl 8
), підсумовані , де є середнім на кожному рівні або групи: коли додано помилку або залишкову для спостереження групи або рівня , ми отримаємо фактичне спостереження DV .yij=μi+ϵijμijiyij
З іншого боку, матриця моделі для регресії OLS є:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢y1y2y3y4⋮yn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1111⋮1x12x22x32x42⋮xn2x13x23x33x43⋮xn3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢β0β1β2⎤⎦⎥+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢ε1ε2ε3ε4⋮εn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Це має форму з одним перехопленням та двома нахилами ( та ) кожен для різні постійні змінні, скажімо, і .yi=β0+β1xi1+β2xi2+ϵiβ0β1β2weight
displacement
Тепер хитрість полягає в тому, щоб побачити, як ми можемо створювати різні перехоплення, як у початковому прикладі, lm(mpg ~ wt + as.factor(cyl), data = mtcars)
- тому давайте позбудемося другого схилу та дотримуємось оригінальної єдиної безперервної змінної weight
(іншими словами, одного єдиного стовпчика, крім стовпця з матриця моделі, що відсікається відрізок і нахил для , ). Стовпець 'за замовчуванням відповідає перехопленню. Знову ж таки, його значення не тотожне середньому для групи ANOVA для спостереження, яке не повинно дивувати, порівнюючи стовпчик 'в матриці моделі OLS (внизу) з першим стовпцемβ0weight
β11cyl 4
cyl 4
11в матриці моделі ANOVA яка вибирає лише приклади з 4-циліндровими. Перехоплення буде зміщене за допомогою фіктивного кодування для пояснення ефекту та наступного:(1),cyl 6
cyl 8
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢y1y2y3y4y5⋮yn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢11111⋮1x1x2x3x4x5⋮xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[β0β1]+⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢11100⋮000011⋮1⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[μ~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