2010-03-28 178 views
7

您能告诉我什么是由返回glm $残差残差(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

最低:-4.243 -3.552 -3.509 -3.481 -3.464 最高: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

最低:-1.0000 -0.8415 -0.8350 -0.8333 -0.8288 最高:7.2491 7.6110 7.6486 7.9574 10.1932

回答

16

调用渣油(模型)将默认为偏差残差,而模型$渣油会给你工作残差。由于链接功能,模型残差没有单一的定义。有偏差,工作,部分,皮尔森和回应残差。因为这些只依赖于平均结构(而不​​是方差),所以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

这太好了。现在我只需要了解每种残差何时对回归诊断最有用。下面Adam提出的图书推荐(Hardin和Hilbe的“广义线性模型和扩展”)似乎很有帮助,还有其他建议吗? – 2010-03-28 21:31:30

4

我不知道有足够的了解泊松和准泊松分布来回答你的问题在深度要求(即一个精确的方程,将变量转换成残差使用模型),但如果任何混淆是由于什么样的残留类型正在使用,为什么这两个命令给出了不同的答案,这可能有助于:

渣油()在R中默认为“偏差”类型。但是,glm()将不同的残差分配给$ residuals向量。

如果您使用的是准泊松族,glm()会分配工作类型的残差,而resid()会将偏差类型作为默认值。

要尝试了这一点,你可以使用:

渣油(GLM,TYPE = “工作”)

GLM $残差

,这应该给你相同的答案(至少,它在一个样本数据集我做SED)。

根据R,工作残差:“在IWLS的最后一次迭代的残差符合”

如果你看看这本书:“广义线性模型和扩展”(由哈丁和Hilbe)上的Google图书,您可以访问第4.5节,其中解释了各种类型的残差。

+0

哈丁和希尔贝的书很好的参考!谢谢! – 2014-01-31 10:14:44