这是一个关于在有和没有截距的简单泊松模型中计算零偏差的差异的问题。
如果
y = c(2,3,6,7,8,9,10,12,15)
x = c(-1, -1, 0, 0, 0, 0, 1, 1, 1)
glm(y~x, family = poisson)
# Call: glm(formula = y ~ x, family = poisson)
#
# Coefficients:
# (Intercept) x
# 1.8893 0.6698
#
# Degrees of Freedom: 8 Total (i.e. Null); 7 Residual
# Null Deviance: 18.42
# Residual Deviance: 2.939 AIC: 41.05
零偏差可以计算如下:
lf = sum(y * log(y) - y - log(factorial(y)))
ln = sum(y * log(mean(y)) - mean(y) - log(factorial(y)))
2*(lf - ln)
# [1] 18.42061
如果我在没有截距的情况下拟合模型:
glm(y~x - 1, family = poisson)
# Call: glm(formula = y ~ x - 1, family = poisson)
#
# Coefficients:
# x
# 2.373
#
# Degrees of Freedom: 9 Total (i.e. Null); 8 Residual
# Null Deviance: 191.9
# Residual Deviance: 94.74 AIC: 130.9
零偏差现在是 191.9。
有人可以告诉我如何计算这个模型的零偏差 - 我的印象是它与截距模型相同,即单个参数等于平均值,但显然不是。
我想我错误地假设空模型在两种情况下都是相同的。是不是还是我犯了一个愚蠢的错误?实际上,我以前从未详细考虑过这个案例,显然我的知识在某处存在差距。
我可以得到如下的空偏差:
glm(y~1-1, family=poisson)
# Call: glm(formula = y ~ 1 - 1, family = poisson)
#
# No coefficients
#
# Degrees of Freedom: 9 Total (i.e. Null); 9 Residual
# Null Deviance: 191.9
# Residual Deviance: 191.9 AIC: 226
但我不知道这个模型是什么。
抱歉,如果之前已经回答过这个问题,但我见过的唯一类似问题(为什么 glm.nb 中的零偏差在相同响应变量的模型之间不同?)没有给出明确的解释。