我正在研究Lane(2002)论文中的GLM模型,并且对Gamma-GLM模型的偏差分析有些困惑。
在本文中,p值低于P <0.001,但是如果我们使用报告的偏差以及使用R中的pchisq()
函数计算p值的自由度,则可以得到以下结果:
> 1-pchisq(11.1057, 7)
[1] 0.1340744`
而不是本文报道的P <0.001。
我已经复制了数据以在此处的the link复制GLM模型!这是我用来生成结果的代码:
test <- read_csv("data/test_glm_gamma.csv", col_types = cols())
model.test <- glm(soil ~ trt, family = Gamma(link = "log"), data = test)
anova(model.test, test = "Chisq")
返回:
Analysis of Deviance Table
Model: Gamma, link: log
Response: cont
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 23 11.5897
trt 7 11.106 16 0.4839 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
具有与本文相似的偏差,我怀疑P值相似,但这不是之前获得的 0.13 。
在计算P值之前是否进行了任何转换?还是我以错误的方式计算p值?他们如何获得偏差表中的 <2.2e-16 ?
Lane,P.W.(2002)。土壤科学中的广义线性模型。欧洲土壤科学杂志,53,241–251。 https://doi.org/10.1046/j.1365-2389.2002.00440.x
答案 0 :(得分:0)
您需要将分散度缩放的偏差传递到pchisq
:
p <- pchisq(anova(model.test)$Deviance[2]/
summary(model.test)$dispersion,
anova(model.test)$Df[2],
lower.tail = FALSE)
p == anova(model.test, test = "Chisq")$`Pr(>Chi)`[2]
#[1] TRUE
您可以研究stats:::stat.anova
的代码,以了解如何计算不同测试的p值。