R 如何計算此二項式回歸的 p 值?
考慮以下二項式回歸:
# Create some data set.seed(10) n <- 500 x <- runif(n,0,100) y <- x + rnorm(n,sd=100) < 0 # Fit a binomial regression model model <- glm(y ~ x, family="binomial") summary(model)
該
summary
函數返回一個 p 值1.03e-05
。使用 時anova.glm
,無論使用什麼方法計算 p 值,都會得到稍微更極端的 p 值。anova(model, test="Rao") # p.value = 7.5e-6 anova(model, test="LRT") # p.value = 6.3e-6 anova(model, test="Chisq") # p.value = 6.3e-6
函數的 p 值是否
summary
適用於與函數返回的假設相同的假設anova
?如果是,如何summary
計算這個 p 值,是否可以直接使用 執行相同的計算anova
?
它可以幫助您在這裡閱讀我的答案:為什麼我的 p 值在邏輯回歸輸出、卡方檢驗和 OR 的置信區間之間存在差異? 您在這裡的問題幾乎與此相同,但是您的問題中還有一些其他元素可以解決。
正如@CliffAB 所指出的,
summary.glm()
輸出中的 p 值來自 Wald 測試。這些類似於- 線性模型的係數測試,因為它們是係數的擬合值與參考值之間的差(取為),除以標準誤。不同之處在於這些被認為是作為標準正態分佈而不是. 另一方面,這些對大樣本有效,我們不一定知道在任何給定情況下什麼構成“大樣本”。使用
anova.glm()
使您可以訪問不同的測試。當您設置test="Rao"
時,它會為您提供分數測試的 p 值。當您設置test="Chisq"
或test="LRT"
(它們相同)時,它會為您提供似然比檢驗的 p 值。在這種情況下,該函數確實測試了與輸出中
anova.glm()
的 Wald 測試相同的零假設。那隻是因為您的模型只有一個變量。該函數將執行順序測試,類似於線性設置中的“I 型 SS”,而 Wald 測試類似於線性設置中的“III 型 SS”(請參閱我的答案:如何解釋 I 型, II 型和 III 型 ANOVA 和 MANOVA?)。考慮:summary()``anova.glm()``summary()
x2 = rnorm(n) m2 = glm(y~x+x2, family="binomial") summary(m2)$coefficients # Estimate Std. Error z value Pr(>|z|) # (Intercept) -0.05906436 0.186876339 -0.3160612 7.519561e-01 # x -0.01567551 0.003537183 -4.4316372 9.352029e-06 # x2 -0.05967796 0.099093504 -0.6022388 5.470152e-01 anova(m2, test="LRT") # Terms added sequentially (first to last) # # Df Deviance Resid. Df Resid. Dev Pr(>Chi) # NULL 499 619.10 # x 1 20.3841 498 598.72 6.335e-06 *** # x2 1 0.3627 497 598.35 0.547 m3 = glm(y~x2+x, family="binomial") # I just switched the order of x & x2 here summary(m3)$coefficients # Estimate Std. Error z value Pr(>|z|) # (Intercept) -0.05906436 0.186876339 -0.3160612 7.519561e-01 # x2 -0.05967796 0.099093504 -0.6022388 5.470152e-01 # these are the same # x -0.01567551 0.003537183 -4.4316372 9.352029e-06 # as above anova(m3, test="LRT") # Terms added sequentially (first to last) # # Df Deviance Resid. Df Resid. Dev Pr(>Chi) # NULL 499 619.10 # x2 1 0.1585 498 618.94 0.6906 # these differ from the # x 1 20.5883 497 598.35 5.694e-06 *** # anova output above
您可以
anova.glm()
在類似於“III 型 SS”的多元邏輯回歸模型中為您提供單個變量的得分和似然比檢驗,但這很乏味。您需要繼續調整模型,以便每個變量依次列在提供給glm()
調用的公式中。輸出中列出的最後一個 p 值anova.glm()
類似於“III 型 SS”。要更方便地獲得單個變量的分數或似然比檢驗,請
drop1()
改用。考慮:drop1(m3, test="LRT") # Single term deletions # # Model: # y ~ x2 + x # Df Deviance AIC LRT Pr(>Chi) # <none> 598.35 604.35 # x2 1 598.72 602.72 0.3627 0.547 # the same as when x2 is last above # x 1 618.94 622.94 20.5883 5.694e-06 *** # the same as when x is last above