Двухфакторный дисперсионный анализ в R - добавленный термин не отображается в сводной таблице

Я имею дело с набором данных, который включает 9 разных генотипов, разделенных на 3 разных класса. Было зарегистрировано около 20 измерений размеров каждого генотипа.

Я попытался запустить двухсторонний анализ (после того, как односторонний анализ показал, что размер значительно различается между генотипами), чтобы проанализировать различия между тремя классами, а также между разными генотипами.

Я использовал функцию aov(size~genotype*class,data=x) В полученной сводной таблице есть только строка для genotype, и я нигде не вижу class или genotype:class, как я и ожидал. Таблица, которую я получаю, идентична той, которую я получаю, когда просто запускаю aov(size~genotype, data=x)

Что я сделал не так? Даже если class/class:genotype не изменит значимость результатов, они все равно должны отображаться в сводной таблице анавы?


person user1835550    schedule 19.11.2012    source источник
comment
Да, обычно должны; запустите пример в ?aov. Это означает, что без вашего примера набора данных мы не сможем вам помочь.   -  person January    schedule 19.11.2012
comment
Извините, я не понимаю, что вы подразумеваете под созданием примера набора данных?   -  person user1835550    schedule 19.11.2012
comment
Что-то, что я мог бы запустить и воспроизвести вашу ошибку. Либо дайте мне свои исходные данные, либо создайте поддельные данные, которые создают ту же проблему. Видите ли, у меня нет вашей проблемы, когда я запускаю aov() на своих данных.   -  person January    schedule 19.11.2012
comment
Я заметил, что каждый генотип связан с разным количеством измерений (например, у некоторых 13, у некоторых 26)... может ли это быть причиной проблемы? Должен ли я вместо этого работать со средствами?   -  person user1835550    schedule 19.11.2012
comment
Нет, вместо этого вы должны предоставить нам пример данных.   -  person January    schedule 19.11.2012


Ответы (1)


Короче говоря, вы не можете соответствовать модели, которую пытаетесь подогнать... по крайней мере, если я правильно понимаю ваши данные. Насколько я понимаю, у вас есть что-то похожее на это:

dat ‹- data.frame(размер = rnorm(27), генотип = gl(9,3), класс = gl(3, 9))

> dat <- data.frame(size = rnorm(27), genotype = gl(9,3), class = gl(3, 9))
> dat
          size genotype class
1   1.44189249        1     1
2   1.05766532        1     1
3   0.08133568        1     1
4   0.36642288        2     1
5   0.93266571        2     1
6  -0.64031787        2     1
7   0.33361892        3     1
8   0.53315507        3     1
9   0.26851394        3     1
10  0.05062280        4     2
11 -0.30924511        4     2
12 -0.61460429        4     2
13 -0.18901238        5     2
14  0.58881858        5     2
15  0.58625502        5     2
16  0.52002793        6     2
17  1.23862937        6     2
18 -2.02333160        6     2
19 -0.09918607        7     3
20  0.65947932        7     3
21 -0.65440238        7     3
22  0.10923036        8     3
23  0.76845484        8     3
24 -0.24804574        8     3
25 -0.30890950        9     3
26 -2.82056870        9     3
27  0.56828147        9     3

(Главное, на что я смотрю, это то, как соотносятся генотип и класс, а не фактические значения размера или размеры выборки для каждой комбинации генотип * класс)

Если каждый генотип полностью содержится в пределах одного класса, вы не можете отделить эффект генотипа от эффекта класса. Надеюсь, это имеет для вас смысл, если нет, позвольте мне проиллюстрировать это на небольшом примере. Во-первых, поскольку каждый генотип полностью принадлежит одному классу, мы не можем подобрать взаимодействие, это просто не имеет смысла. Взаимодействие было бы полезным, если бы генотипы могли быть частью как минимум двух классов, потому что это позволило бы нам приписать различный эффект для генотипа на основе класса, в котором он находится для наблюдения. Но так как каждый генотип относится только к одному классу... подгонка модели с взаимодействиями невозможна.

Теперь, чтобы понять, почему мы не можем подобрать классовый эффект, просто рассмотрим класс 1, который содержит генотипы 1-3. Следует признать, что с линейными моделями (а ANOVA — это всего лишь частный случай линейной модели) то, что мы моделируем, — это условные средние значения в разных группах — и мы пытаемся разделить это на определенные эффекты, если это возможно. Таким образом, любая модель, которая дает нам одно и то же групповое среднее, по существу эквивалентна. Представим на секунду, что эффект для класса 1 равен c, а эффект для генотипов 1-3 равен x, y и z (соответственно). Тогда значение для группы генотип1/класс1 = c+x, для генотип2/класс1 = c+y, для генотип3/класс1 = c+z. Но заметьте, что мы могли бы так же легко сказать, что эффект класса 1 равен 0, а затем сказать, что эффекты для генотипов 1-3 равны c+x, c+y, c+z (соответственно). Так что класс в этой ситуации совершенно бесполезен. Невозможно разделить эффект класса, поскольку генотипы полностью вложены внутри класса. Таким образом, мы можем подобрать модель, которая имеет отдельные эффекты для генотипов, только если мы хотим подобрать модель с полностью фиксированными эффектами.

person Dason    schedule 19.11.2012
comment
Это очень помогло! Спасибо! Можете ли вы предложить модель, учитывающую как геном, так и класс? Или результат всегда будет эквивалентен тому, что я получил? - person user1835550; 21.11.2012
comment
Или, если быть более точным, есть ли способ проверить, чем отличаются классы И чем отличаются генотипы в каждом классе? - person user1835550; 22.11.2012
comment
Возможно, какая-то модель случайных эффектов, но это больше вопрос статистики, а не вопрос программирования. Вам лучше спросить что-то подобное на stats.stackexchange.com. - person Dason; 23.11.2012