Как выполнить анкову в R

17

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

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1
Pauloc
источник
3
+ будет рассчитывать только основные эффекты, * будет оценивать взаимодействия между факторами, связанными с *. Структуры ANCOVA обычно оценивают только основной эффект непрерывного фактора, но взаимодействия между всеми сгруппированными факторами.
Russellpierce

Ответы:

14

Основным инструментом для этого является lm; обратите внимание, что aovэто обертка для lm.

В частности, если у вас есть некоторая группирующая переменная (фактор), g и непрерывный ковариат , модель будет соответствовать модели ANCOVA с основными эффектами, тогда как будет соответствовать модели, которая включает взаимодействие с ковариатой. будет принимать те же формулы.xy ~ x + gy ~ x * gaov

Обратите особое внимание на Noteпомощь в aov.

Что касается +vs *, russellpierce в значительной степени покрывает это, но я бы порекомендовал вам взглянуть ?lmи, ?formulaи особенно, раздел 11.1 руководства Введение в R, которое идет с R (или вы можете найти его в Интернете, если вы не выяснили, как чтобы найти его на вашем компьютере, проще всего это найти выпадающее меню «Справка» в R или RStudio).

Glen_b - Восстановить Монику
источник
Предположим, у меня есть два групповых фактора и два ковариата 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
YяJзнак равноμ+αя+ηJ+ИксяJ1γ1+ИксяJ2γ2+εяJ
γ1знак равно0 соответственно? γ2знак равно0
Саян
Не уверен, как я это пропустил. Да. .... и если вы хотите проверить оба сразу, установите оба с ними и без них и передайте соответствующие объекты lm anova(вы скоро увидите, что вы дадите их в неправильном порядке, потому что некоторые SS будут отрицательными, если вы это сделаете )
Glen_b
10

Я рекомендую получать и читать Обнаружение статистики, используя R by Field. У него есть хороший раздел о 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-кв. выход.

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, что мы хотим, чтобы SS для IV был полностью разделен и не перекрывался. Таким образом, мы можем четко и ясно увидеть изменения, приписываемые каждому предиктору. Если вы не укажете, R по умолчанию использует более либеральный подход к контрасту.
2
Почему интерес к III типу СС?
Фрэнк Харрелл
4

Вот дополнительная документация http://goo.gl/yxUZ1R процедуры, предложенной @Butorovich. Кроме того, мое наблюдение состоит в том, что когда ковариата является бинарной, использование сводки (lm.object) даст такую ​​же оценку IV, как и сгенерированную Anova (lm.object, type = "III").

XX
источник
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

Этот результат показывает, что мощность в лошадиных силах и тип трансмиссии оказывают существенное влияние на мили на галлон, так как значение p в обоих случаях составляет менее 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

Этот результат показывает, что мощность в лошадиных силах и тип трансмиссии оказывают существенное влияние на мили на галлон, так как значение p в обоих случаях составляет менее 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, мы заключаем, что взаимодействие между мощностью в лошадиных силах и типом передачи не является значительным. Таким образом, пробег на галлон будет аналогичным образом зависеть от мощности автомобиля как в автоматическом, так и в ручном режиме.

user101834
источник
Итак, что было первым, этот ответ или этот пост на уроках? tutorialspoint.com/r/r_analysis_of_covariance.htm . Должен ли этот ответ быть удален как плагиат? Или уроки указывают просто скопировать отсюда?
Джон