Чому р-значення змінюються по значущості при зміні порядку коваріатів у моделі aov?


10

У мене є набір даних із 482 спостережень.

data=Populationfull

Я збираюся зробити аналіз асоціації генотипів для 3 СНП. Я намагаюся побудувати модель для мого аналізу, і я використовую aov (y ~ x, data = ...). Для однієї ознаки у мене є кілька фіксованих ефектів і коваріатів, які я включив у модель, як-от так:

Starts <- aov(Starts~Sex+DMRT3+Birthyear+Country+Earnings+Voltsec+Autosec, data=Populationfull)

summary(Starts)
                Df Sum Sq Mean Sq F value   Pr(>F)    
Sex              3  17.90    5.97  42.844  < 2e-16 ***
DMRT3            2   1.14    0.57   4.110    0.017 *  
Birthyear        9   5.59    0.62   4.461 1.26e-05 ***
Country          1  11.28   11.28  81.005  < 2e-16 ***
Earnings         1 109.01  109.01 782.838  < 2e-16 ***
Voltsec          1  12.27   12.27  88.086  < 2e-16 ***
Autosec          1   8.97    8.97  64.443 8.27e-15 ***
Residuals      463  64.48    0.14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Я виявив, що якщо я змінив порядок змінних у моделі, я отримав різні p-значення, дивіться нижче.

Starts2 <- aov(Starts~Voltsec+Autosec+Sex+DMRT3+Birthyear+Country+Earnings, data=Populationfull)

summary(Starts2)

                Df Sum Sq Mean Sq F value   Pr(>F)    
Voltsec   1   2.18    2.18  15.627 8.92e-05 ***
Autosec   1 100.60  100.60 722.443  < 2e-16 ***
Sex              3  10.43    3.48  24.962 5.50e-15 ***
DMRT3            2   0.82    0.41   2.957  0.05294 .  
Birthyear        9   3.25    0.36   2.591  0.00638 ** 
Country          1   2.25    2.25  16.183 6.72e-05 ***
Earnings      1  46.64   46.64 334.903  < 2e-16 ***
Residuals      463  64.48    0.14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Чому я отримую різні p-значення залежно від того, в якому порядку кодуються змінні / фактори / коваріати / fixedeffects (?)? Чи є спосіб «виправити» це? Може бути, що я використовую неправильну модель? Я все ще зовсім новий в R, тому якщо ви можете мені допомогти у цьому, будь ласка, будьте дуже простою, щоб я зрозумів відповідь хе-хе ... Дякую, сподіваюся, хтось може допомогти мені зрозуміти це!


3
Надайте деякі зразкові дані, Populationfullщоб зробити вашу проблему відтворюваною . Це не відбувається з прикладом зі aov()сторінки довідки. summary(aov(yield ~ block + N + P + K, npk)); summary(aov(yield ~ K + P + block + N , npk))
MrFlick

Значення p змінюються через те, що все поле значень змінилося. ваш перший запуск Earnings 1 109.01 109.01 782.838 < 2e-16 ***ваш другий запуск Earnings 1 46.64 46.64 334.903 < 2e-16 ***. Ваші результати неоднакові. Почніть з перевірки, щоб переконатися, що ви не зробили більше, ніж упорядкувати змінні.

1
ТАКОЖ: у другій моделі ви використовуєте Earn, а не Earnings ... якщо є дві змінні різних назв, це може бути проблемою, якщо це не помилка копіювання в простір запитань SO.

Так, значення змінюються, але чому? Я використовував абсолютно однакові стовпці з точно однакового кадру даних в обох моделях (річ "Заробіток проти Заробітку" у другій моделі - це те, що я написав це неправильно, і зараз це виправив).
Rbeginner

1
Це відбувається тому, що у вас незбалансований дизайн. Ви знайдете велику допомогу з цього приводу, якщо пошукати на цьому форумі чи просто в Google "неврівноважену ANOVA в R". Я рекомендую carзаглянути в пакет - він реалізує ANOVA типу II і III типу, які не залежать від порядку змінних, тоді як aovANOVA типу I.
Повільний лоріс

Відповіді:


15

Проблема пов'язана з aov()тестуванням значущості за замовчуванням. Він використовує аналіз ANOVA типу "I", при якому тестування проводиться в тому порядку, у якому вказані змінні у вашій моделі. Тож у першому прикладі він визначає, наскільки дисперсія пояснюється sexта перевіряє її значущість, потім, яку частину залишкової дисперсії пояснюється DMRT3та перевіряє її значущість щодо тієї залишкової дисперсії тощо. У другому прикладі DMRT3оцінюється лише після Voltsec, Autosecі sex, у такому порядку, тому для DMRT3пояснення залишається менше розбіжності .

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

Один з способів обійти це , щоб витягти себе з стриктур класичного ANOVA і використовувати просту лінійну модель, з lm()в R, а не aov(). Це ефективно аналізує всіх предикторів паралельно, «виправляючи» всіх прогнозів одночасно. У цьому випадку два корельованих прогнозиста можуть мати великі стандартні похибки розрахункових коефіцієнтів регресії, і їх коефіцієнти можуть відрізнятися між різними вибірками від сукупності, але принаймні порядок введення змінних у специфікацію моделі не має значення.

Якщо ваша змінна відповіді - це певний тип змінної підрахунку, як випливає з Startsназви, то ви, ймовірно, не повинні використовувати ANOVA так чи інакше, оскільки залишки навряд чи будуть нормально розподілені, як вимагає інтерпретація p -значення. Змінні підрахунку краще обробляти за допомогою узагальнених лінійних моделей (наприклад, glm()в R), які можна розглядати як узагальнення lm()для інших типів залишкових помилок.

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