Як виконати ANCOVA в R


17

Я хочу провести ANCOVA аналіз даних щодо щільності рослинних епіфітів. Спочатку я хотів би знати, чи є різниця в щільності рослин між двома схилами, одним N і одним S, але у мене є інші дані, такі як висота, відкритість навісу та висота рослини-господаря. Я знаю, що моїм коваріатом повинні були бути два схили (N і S). Я створив цю модель, яка працює в R, і хоча я не маю уявлення, чи добре вона працює. Також я хотів би знати, в чому різниця, якщо я використовую символ +або* .

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1

3
+ обчислює лише основні ефекти, * оцінить взаємодію між чинниками, пов'язаними з *. Рамки ANCOVA зазвичай оцінюють лише основний ефект безперервного фактора, але взаємодію між усіма згрупованими факторами.
russellpierce

Відповіді:


14

Основним інструментом для цього є lm; зауважте, що aovце обгортка для lm.

Зокрема, якщо у вас є певна групова змінна (коефіцієнт), г та безперервний коваріат х , модель y ~ x + gвідповідатиме головним ефектам ANCOVA-моделі, тоді y ~ x * gяк модель, яка включає взаємодію з коваріатом. aovбуде приймати ті самі формули.

Зверніть особливу увагу на Noteдовідку про aov.

Щодо +vs *, russellpierce в значній мірі охоплює це, але я рекомендую вам переглянути ?lmта, ?formulaособливо, розділ 11.1 керівництва «Вступ до R», що постачається з R (або ви можете знайти його в Інтернеті, якщо ви не зрозуміли, як це зробити щоб знайти його на своєму комп’ютері; найпростіше, це стосується пошуку меню "Довідка" в R або RStudio).


припустимо, у мене є два групові фактори і два ковариантні x 1 , x 2 , причому моя модель y i j = μ + α i + η j + x i j 1 γ 1 + x i j 2 γ 2 + ϵ i j Чи робить y ~ g_1 + g_2 + x_1 + x_2 той же трюк? Зробіть значення F, отримані відносно x_1 та x_2, випробуйте γ 1 = 0 та γг1,г2х1,х2
уij=мк+αi+ηj+хij1γ1+хij2γ2+ϵij
γ1=0 відповідно? γ2=0
Саян

Не впевнений, як я пропустив це. Так. .... і якщо ви хочете протестувати обидва відразу, встановіть і без, і без них, і передайте встановлені lm-об’єкти anova(ви незабаром побачите, чи подаєте ви їх у неправильному порядку, оскільки деякі SS будуть негативними, якщо ви зробите )
Glen_b -Встановити Моніку

10

Я рекомендую отримати та прочитати виявлення статистики за допомогою R за польовими. У нього є приємний розділ про ANCOVA.

Щоб запустити ANCOVA в R, завантажте такі пакети:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

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

contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3) 

потім запустіть свою модель як

model.1=aov(dv~covariate+factorvariable, data=dataname)

Для перегляду моделі використовуйте:

Anova(model.1, type="III") 

Переконайтеся, що ви тут використовуєте капітал "А", Anovaа ні anova. Це дасть результати за допомогою типу III SS.

summary.lm(model.1)дасть ще одне резюме та включає R-sq. вихід.

posth=glht(model.1, linfct=mcp(factorvariable="Tukey"))  ##gives the post-hoc Tukey analysis
summary(posth) ##shows the output in a nice format.

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

model=aov(dv~covariate+IV+covariate:IV, data=dataname)

Якщо термін взаємодії є значущим, то у вас немає однорідності.


Чому неортогональні контрасти все псують?
tintinthong

1
Щоб відповісти на запитання вище про те, "чому неортогональні контрасти все псують". Відповідь полягає в тому, що R за замовчуванням неортогональний (тобто різниця між засобами), що може спричинити проблеми, якщо ви хочете бачити внесок кожного IV окремо. Коли ми задаємо ортогональні контрасти, ми кажемо R, що ми хочемо, щоб СС для IV було повністю розділене і не перетиналося. Таким чином ми можемо чітко і чітко бачити різницю, приписану кожному передбачувачу. Якщо ви не вказуєте, R за замовчуванням має більш ліберальний підхід до контрасту.

2
Чому інтерес до типу III СС?
Френк Харрелл

4

Ось додаткова документація http://goo.gl/yxUZ1R процедури, запропонованої @Butorovich. Крім того, моє спостереження полягає в тому, що коли коваріат є двійковим, використання зведення (lm.object) дасть ту саму IV оцінку, що і генерується Anova (lm.object, type = "III").


1
Не зрозуміло, що це повинно бути відповіддю. Є це? Якщо так, будь ласка, редагуйте, щоб уточнити. Якщо це питання, будь ласка, задайте його, натиснувши ASK QUESTIONвгорі і задавши його там. Тоді ми можемо допомогти вам належним чином.
gung - Відновіть Моніку

Домовились. Повідомлення було переглянуто як (додаткова) відповідь на попереднє.
XX

3

Ми використовуємо регресійний аналіз для створення моделей, які описують вплив зміни змінних прогнозів на змінну відповіді. Іноді, якщо у нас є категоріальна змінна зі значеннями, як Так / Ні або Чоловік / Жіночий і т.д., простий регресійний аналіз дає кілька результатів для кожного значення категоріальної змінної. У такому сценарії ми можемо вивчити вплив категоріальної змінної, використовуючи її разом із змінною предиктора та порівнюючи лінії регресії для кожного рівня категоріальної змінної. Такий аналіз називають аналізом коваріації, який також називають ANCOVA.

Приклад
Розглянемо Rвбудований набір даних mtcars. У ньому ми спостерігаємо, що поле amпредставляє тип передачі (автоматична або ручна). Це категорична змінна зі значеннями 0 і 1. Милі на галон значення ( mpg) автомобіля також можуть залежати від нього, окрім значення потужності коня ( hp). Вивчаємо вплив значення amна регресію між mpgта hp. Це робиться за допомогою aov()функції з наступною anova()функцією для порівняння декількох регресій.

Введення даних
Створення фрейму даних , що містить поля mpg, hpі amз набору даних mtcars. Тут ми беремо mpgяк змінну відповіді, hpяк змінну предиктора та amкатегоричну змінну.

input <- mtcars[,c("am","mpg","hp")]
head(input)

Коли ми виконуємо наведений вище код, він дає такий результат:

                  am  mpg  hp
Mazda RX4          1 21.0 110
Mazda RX4 Wag      1 21.0 110
Datsun 710         1 22.8  93
Hornet 4 Drive     0 21.4 110
Hornet Sportabout  0 18.7 175
Valiant            0 18.1 105

Аналіз ANCOVA.
Ми створюємо регресійну модель, беручи hpдо уваги змінну предиктора та mpgяк змінну відповіді, враховуючи взаємодію між amта hp.

Модель із взаємодією між категоріальною змінною та змінною предиктора

Створіть регресійну модель1

result1 <- aov(mpg~hp*am,data=mtcars)
summary(result1)

Коли ми виконуємо наведений вище код, він дає такий результат:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4  77.391 1.50e-09 ***
am           1  202.2   202.2  23.072 4.75e-05 ***
hp:am        1    0.0     0.0   0.001    0.981    
Residuals   28  245.4     8.8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

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

Модель без взаємодії між категоріальною змінною та змінною предиктора

Створіть модель регресії2

result2 <- aov(mpg~hp+am,data=mtcars)
summary(result2)

Коли ми виконуємо наведений вище код, він дає такий результат:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4   80.15 7.63e-10 ***
am           1  202.2   202.2   23.89 3.46e-05 ***
Residuals   29  245.4     8.5                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Цей результат показує, що і потужність коня, і тип передачі мають значний вплив на милі на галон, оскільки значення р в обох випадках менше 0,05.

Порівняння двох моделей
Тепер ми можемо порівняти дві моделі для висновку, чи взаємодія змінних справді незначна. Для цього ми використовуємо anova()функцію.

 anova(result1,result2)

 Model 1: mpg ~ hp * am
 Model 2: mpg ~ hp + am
   Res.Df    RSS Df  Sum of Sq     F Pr(>F)
 1     28 245.43                           
 2     29 245.44 -1 -0.0052515 6e-04 0.9806

Оскільки р-значення перевищує 0,05, ми робимо висновок, що взаємодія між потужністю коня та типом передачі не є істотною. Тож пробіг на галон буде аналогічно залежати від кінських сил автомобіля як в режимі автоматичної, так і в ручній передачі.


Отже, хто перший, ця відповідь чи цей пост у навчальних посібниках? tutorialspoint.com/r/r_analysis_of_covariance.htm . Чи слід цю відповідь виключити як плагіат? Або підручники вказували просто копіювати звідси?
Іван
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.