R

為什麼在 aov 模型中更改協變量的順序時 p 值的顯著性會發生變化?

  • May 13, 2016

我有一個包含 482 個觀察值的數據集。

data=Populationfull

我要對 3 個 SNP 進行基因型關聯分析。我試圖為我的分析建立一個模型,並使用 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 值?有沒有辦法“糾正”它?難道是我使用了錯誤的模型?我還是 R 的新手,所以如果你能幫我解決這個問題,請保持簡單,這樣我就能理解答案,呵呵……謝謝,希望有人能幫助我理解這一點!

問題來自於進行aov()默認顯著性測試的方式。它使用所謂的“I 型”ANOVA 分析,其中測試按照模型中指定變量的順序進行。因此,在第一個示例中,它確定解釋了多少方差並測試其重要性,然後解釋了剩餘方差的sex哪一部分並根據剩餘方差來測試其重要性,依此類推。在第二個示例中,僅在 , 和 , 之後按該順序進行評估,因此剩餘的方差較少需要解釋。DMRT3``DMRT3``Voltsec``Autosec``sex``DMRT3

如果兩個預測變量相關,則輸入模型的第一個變量將獲得完整的“信用”,留下較少的方差可以由第二個變量“解釋”,因此即使它是不是,在功能上。這個問題及其答案解釋了不同類型的 ANOVA 分析。

解決此問題的一種方法是將自己從經典 ANOVA 的限制中提取出來,並使用lm()R 中的簡單線性模型,而不是aov(). 這有效地並行分析所有預測變量,一次“糾正”所有預測變量。在這種情況下,兩個相關預測變量的估計回歸係數最終可能具有較大的標準誤差,並且它們的係數可能在總體中的不同樣本之間有所不同,但至少將變量輸入模型規範的順序無關緊要。

如果您的響應變量是某種類型的計數變量,正如其名稱Starts所暗示的那樣,那麼您可能無論如何都不應該使用 ANOVA,因為殘差不太可能是正態分佈的,正如p值解釋所要求的那樣。使用廣義線性模型(例如,在 R 中)可以更好地處理計數變量glm(),這可以被認為是lm()對其他類型的殘差結構的概括。

引用自:https://stats.stackexchange.com/questions/212496

comments powered by Disqus