gpt4 book ai didi

r - R包pscl中的modelobject$residuals和residuals(modelobject)有什么区别?

转载 作者:行者123 更新时间:2023-12-04 12:05:57 26 4
gpt4 key购买 nike

我正在尝试使用 pscl 使用零膨胀泊松回归构建一些模型包并在操作输出对象后变成 zeroinfl ,我发现做residuals(fm_zip)不等于 fm_zip$residuals .

以下是我正在谈论的一个例子:

library("pscl")
data("bioChemists", package = "pscl")
fm_zip <- zeroinfl(art ~ . | 1, data = bioChemists)
names(fm_zip)
fm_zip$residuals
residuals(fm_zip)
all.equal(fm_zip$residuals,residuals(fm_zip))
qplot(fm_zip$residuals,residuals(fm_zip))

正如您可能意识到的那样,结果并不相等。我会说两种方式都是等价的,但似乎不是。你能解释一下这有什么问题吗?根据残差 R 帮助,这两个选择应该返回差异 (observed - fitted) .相比之下,我对普通的线性回归做了同样的事情,它们是相等的。

我的 R 版本是:
sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)...

并且包版本是 pscl_1.04.4
任何帮助表示赞赏。

最佳答案

要获得相同的结果,您应该设置 typeresponse (默认皮尔森)

 all.equal(fm_zip$residuals,residuals(fm_zip,'response'))
[1] TRUE

来自 ?residuals.zeroinfl :

The residuals method can compute raw residuals (observed - fitted) and Pearson residuals (raw residuals scaled by square root of variance function).


perason方差定义为:
mu <- predict(fm_zip, type = "count")
phi <- predict(fm_zip, type = "zero")
theta1 <- switch(fm_zip$dist, poisson = 0,
geometric = 1,
negbin = 1/object$theta)
variance <- fm_zip$fitted.values * (1 + (phi + theta1) * mu)

编辑
不要犹豫,阅读后面的代码,它通常是学习的源泉,您也可以避免许多混淆。获取 S3 method 背后的代码 residuals.zeroinfl ,你可以使用这样的东西:
getS3method('residuals','zeroinfl')

关于r - R包pscl中的modelobject$residuals和residuals(modelobject)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com