2013-07-22 3 views
4

Я пытаюсь построить некоторые модели с использованием Zero-Inflated Poisson regression с использованием пакета pscl и после того, как я обработал выходной объект, который превращается в zeroinfl, я считаю, что выполнение residuals(fm_zip) не равно fm_zip$residuals.Любая разница между остатками модели и остатками (модельный объект) в R пакете pscl?

Ниже приведен пример того, что я говорю:

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)... 

и пакет Verion является pscl_1.04.4

Любая помощь приветствуется.

ответ

3

Чтобы получить равный результат, который вы должны установить type в response (пирсон по умолчанию)

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

От ?residuals.zeroinfl:

Метод невязки можно вычислить исходные остатки (наблюдается - они установлены) и Остатки Пирсона (необработанные остатки масштабируются квадратным корнем дисперсии ).

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) 

EDIT Не колеблясь, чтобы прочитать код позади, это, как правило, является источником обучения, и вы можете избежать многих недоразумений. Чтобы получить код позади S3 methodresiduals.zeroinfl, вы можете использовать что-то вроде этого:

getS3method('residuals','zeroinfl') 
+0

Благодаря @agstudy. Являются ли эти «остатки (fm_zip)» стандартизованными остатками? или за что они стоят? – Nestorghh

+0

@Nestorghh Я отредактировал свой ответ для получения более подробной информации. Надежда теперь понятна. – agstudy

+0

Большое спасибо за ваш ответ @agstudy. Это было полезно. – Nestorghh

Смежные вопросы