模型的偏差定义为:
所以我尝试将这个公式的结果与不同模型的 deviance() 函数的输出进行比较:
线性回归模型:
> ?cats
> m1=lm(Hwt~Bwt+Sex,data=cats)
> m1.saturated=lm(Hwt~factor(1:nrow(cats)),data=cats)
> deviance(m1)
[1] 299
> sum(residuals(m1)^2)
[1] 299
> deviance(m1.saturated)
[1] 0
> as.numeric(-2*(logLik(m1)-logLik(m1.saturated)))
[1] Inf
299 Inf
有问题
GLM:泊松回归
> x = rnorm(10)
> y = rpois(10,lam=exp(1 + 2*x))
> m2 = glm(formula = y ~ x, family = poisson)
> m2.saturated <- glm(y ~ factor(1:10),family=poisson)
> deviance(m2)
[1] 14
> deviance(m2.saturated)
[1] 4.5e-10
> as.numeric(-2*(logLik(m2)-logLik(m2.saturated)))
[1] 14
14 = 14
好的,它有效!
GLM:伽玛回归
> cement <- read.table("cement.dat", col.names = c("time","resistance"), dec = ",")
> attach(cement)
> m3 <- glm(resistance ~ I(1/time), family = Gamma)
> m3.saturated <- glm(resistance ~ factor(1:nrow(cement)), family = Gamma)
> deviance(m3)
[1] 0.16
> deviance(m3.saturated)
[1] 9.3e-17
> as.numeric(-2*(logLik(m3)-logLik(m3.saturated)))
[1] 758
0.16 758
一定有什么地方出错了
结果不应该一样吗?