Modelos de contagem inflada zero em R: qual é a vantagem real?

11

Para analisar a contagem de pássaros inflada a zero, eu gostaria de aplicar modelos de contagem inflada a zero usando o pacote R pscl . No entanto, observando o exemplo fornecido na documentação para uma das principais funções ( ? Zeroinfl ), começo a duvidar de qual é a real vantagem desses modelos. De acordo com o código de amostra dado aqui, calculei modelos de poisson padrão, quase-poisson e bionomial negativo, modelos simples de poisson inflado a zero e binomial negativo e modelos de poisson inflado a zero e binomial negativo com regressores para o componente zero. Depois, inspecionei os histogramas dos dados observados e ajustados. (Aqui está o código para replicar isso.)

library(pscl)
data("bioChemists", package = "pscl")

## standard count data models
fm_pois  <- glm(art ~ .,    data = bioChemists, family = poisson)
fm_qpois <- glm(art ~ .,    data = bioChemists, family = quasipoisson)
fm_nb    <- glm.nb(art ~ ., data = bioChemists)

## with simple inflation (no regressors for zero component)
fm_zip  <- zeroinfl(art ~ . | 1, data = bioChemists)
fm_zinb <- zeroinfl(art ~ . | 1, data = bioChemists, dist = "negbin")

## inflation with regressors
fm_zip2  <- zeroinfl(art ~ fem + mar + kid5 + phd + ment | fem + mar + kid5 + phd + 
                     ment, data = bioChemists)
fm_zinb2 <- zeroinfl(art ~ fem + mar + kid5 + phd + ment | fem + mar + kid5 + phd + 
                     ment, data = bioChemists, dist = "negbin")

## histograms
breaks <- seq(-0.5,20.5,1)
par(mfrow=c(4,2))
hist(bioChemists$art,  breaks=breaks)
hist(fitted(fm_pois),  breaks=breaks)
hist(fitted(fm_qpois), breaks=breaks)
hist(fitted(fm_nb),    breaks=breaks)
hist(fitted(fm_zip),   breaks=breaks)
hist(fitted(fm_zinb),  breaks=breaks)
hist(fitted(fm_zip2),  breaks=breaks)
hist(fitted(fm_zinb2), breaks=breaks)!

Histograma dos dados observados e ajustados

Não vejo nenhuma diferença fundamental entre os diferentes modelos (além disso, os dados de exemplo não me parecem muito "inflados em zero" ...); na verdade, nenhum dos modelos produz uma estimativa razoavelmente parcial do número de zeros. Alguém pode explicar qual é a vantagem dos modelos inflados a zero? Suponho que deve ter havido um motivo para escolher isso como exemplo para a função.

user7417
fonte

Respostas:

15

Penso que este é um conjunto de dados mal escolhido para explorar as vantagens de modelos inflados zero, porque, como você observa, não existe muita inflação zero.

plot(fitted(fm_pois), fitted(fm_zinb))

mostra que os valores previstos são quase idênticos.

Em conjuntos de dados com mais inflação zero, os modelos ZI fornecem resultados diferentes (e geralmente com melhor ajuste) do que Poisson.

Outra maneira de comparar o ajuste dos modelos é comparar o tamanho dos resíduos:

boxplot(abs(resid(fm_pois) - resid(fm_zinb)))

mostra que, mesmo aqui, os resíduos do Poisson são menores que os do ZINB. Se você tem alguma ideia de uma magnitude do resíduo que é realmente problemática, pode ver qual proporção dos resíduos em cada modelo está acima disso. Por exemplo, se inverter por mais de 1 era inaceitável

sum(abs(resid(fm_pois) > 1))
sum(abs(resid(fm_zinb) > 1))

mostra que o último é um pouco melhor - menos 20 resíduos grandes.

A questão é se a complexidade adicional dos modelos vale a pena para você.

Peter Flom - Restabelece Monica
fonte
6

Os valores ajustados mostrarão menos dispersão que os valores observados devido à variação aleatória. Você não está fazendo uma comparação significativa. Para entender um caso simples, se seus dados fossem apenas você não compararia um histograma de com um histograma do valor ajustado - o mesmo para todos ! Embora seja razoável simular valores de de e comparar histogramas de & .XiPois(μ)xiμ^ixix * i x iXiPois(μ^)xixi

Scortchi - Restabelecer Monica
fonte
Que outro tipo de comparação você recomendaria?
user7417
Veja a resposta de Peter para boas comparações entre modelos.
Scortchi - Restabelece Monica