使用空值和模型偏差测试 GLM 模型

机器算法验证 r 广义线性模型 卡方检验
2022-03-22 14:38:18

我已经在 R 中构建了一个 glm 模型,并使用测试和培训组对其进行了测试,因此我相信它运行良好。R的结果是:

Coefficients:
                            Estimate Std. Error  t value Pr(>|t|)    
(Intercept)               -2.781e+00  1.677e-02 -165.789  < 2e-16 ***
Coeff_A                    1.663e-05  5.438e-06    3.059  0.00222 ** 
log(Coeff_B)               8.925e-01  1.023e-02   87.245  < 2e-16 ***
log(Coeff_C)              -3.978e-01  7.695e-03  -51.689  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for quasibinomial family taken to be 0.9995149)

    Null deviance: 256600  on 671266  degrees of freedom
Residual deviance: 237230  on 671263  degrees of freedom
AIC: NA

系数的所有 p 值都像预期的那样小。

看看这个问题(解释 GLM R 中的残差和零偏差),我应该能够使用以下等式计算零假设是否成立:

p-value = 1 - pchisq(deviance, degrees of freedom)

坚持这个给出:

1 - pchisq(256600, 671266)
[1] 1

所以我认为零假设不能在这里被拒绝是正确的,即使所有系数的 p 值都很小,或者我误解了如何计算这个?

1个回答

这里有一个误解。零偏差和模型偏差之间的差异分布为卡方,其自由度等于零 df减去模型的 df。对于您的模型,这将是:

1-pchisq(256600 - 237230, df=(671266 - 671263))
# [1] 0

默认情况下,pchisq()给出分布在值左侧的比例。要使比例比您的差异更极端,您可以指定lower.tail = FALSE中减去结果(正如您和我所做的那样)。 1