为什么从偏差表分析得出的p值与pchisq()估计的p值为何不同?

时间:2019-04-16 10:18:02

标签: r glm gamma

我正在研究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

1 个答案:

答案 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值。