你能告诉我 glm $ residuals 和 resid(glm)返回的内容,其中glm是一个quasipoisson对象。例如我将如何使用glm $ y和glm $ linear.predictors创建它们。
GLM $残差
n missing unique Mean .05 .10 .25 .50 .75 .90 .95
37715 10042 2174 -0.2574 -2.7538 -2.2661 -1.4480 -0.4381 0.7542 1.9845 2.7749
lowest : -4.243 -3.552 -3.509 -3.481 -3.464
highest: 8.195 8.319 8.592 9.089 9.416
渣油(GLM)
n missing unique Mean .05 .10 .25
37715 0 2048 -2.727e-10 -1.0000 -1.0000 -0.6276
.50 .75 .90 .95
-0.2080 0.4106 1.1766 1.7333
lowest : -1.0000 -0.8415 -0.8350 -0.8333 -0.8288
highest: 7.2491 7.6110 7.6486 7.9574 10.1932
答案 0 :(得分:25)
调用resid(模型)将默认为偏差残差,而模型$ resid将为您提供工作残差。由于链接功能,没有单一的模型残差定义。有偏差,工作,部分,皮尔逊和反应残差。因为这些只依赖于平均结构(而不是方差),所以quasipoisson和poisson的残差具有相同的形式。您可以查看residuals.glm
函数了解详细信息,但这是一个示例:
counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
glm.D93 <- glm(counts ~ outcome + treatment, family=quasipoisson())
glm.D93$resid
#working
resid(glm.D93,type="working")
(counts - glm.D93$fitted.values)/exp(glm.D93$linear)
#deviance
resid(glm.D93,type="dev")
fit <- exp(glm.D93$linear)
poisson.dev <- function (y, mu)
sqrt(2 * (y * log(ifelse(y == 0, 1, y/mu)) - (y - mu)))
poisson.dev(counts,fit) * ifelse(counts > fit,1,-1)
#response
resid(glm.D93,type="resp")
counts - fit
#pearson
resid(glm.D93,type="pear")
(counts - fit)/sqrt(fit)
答案 1 :(得分:4)
我不太了解泊松和准泊松分布在所要求的深度中回答你的问题(即使用模型将变量转换为残差的精确方程),但是如果任何混淆是由于使用了什么残差类型以及为什么这两个命令给出了不同的答案,这可能会有所帮助:
resid()默认为R中的“deviance”类型。但是,glm()为$ residuals向量分配不同的残差。
如果您使用的是准泊松族,glm()将分配工作类型的残差,而resid()则将偏差类型作为默认值。
要试用此功能,您可以使用:
resid(glm,type =“working”)
和
glm $ residuals
这应该给你相同的答案(至少,它对我使用的样本数据集做了)。
根据R,工作残差是:“IWLS最终迭代中的残差拟合”
如果您在googlebooks上查阅书籍“广义线性模型和扩展”(由Hardin和Hilbe提供),您可以访问第4.5节,其中解释了各种类型的残差。