11 votos

Modelos de recuento cero en R: ¿cuál es la ventaja real?

Para analizar los recuentos de aves con inflación cero me gustaría aplicar modelos de recuento con inflación cero utilizando el paquete R pscl . Sin embargo, echando un vistazo al ejemplo proporcionado en la documentación para una de las funciones principales ( ?zeroinfl ), empiezo a dudar de cuál es la ventaja real de estos modelos. De acuerdo con el código de ejemplo que allí se da, calculé modelos poisson estándar, cuasi poisson y bionomial negativo, modelos poisson simple inflado por cero y binomial negativo y modelos poisson inflado por cero y binomial negativo con regresores para el componente cero. Luego inspeccioné los histogramas de los datos observados y ajustados. (Aquí está el código para replicar eso).

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

Histogram of observed and fitted data

No veo ninguna diferencia fundamental entre los distintos modelos (aparte de que los datos del ejemplo no me parecen muy "cero-inflados"...); en realidad, ninguno de los modelos arroja una estimación medianamente razonable del número de ceros. ¿Alguien puede explicar cuál es la ventaja de los modelos "cero-inflados"? Supongo que habrá habido alguna razón para elegirlo como ejemplo para la función.

16voto

Zizzencs Puntos 1358

Creo que es un conjunto de datos mal elegido para explorar las ventajas de los modelos de inflación cero, porque, como señalas, no hay tanta inflación cero.

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

muestra que los valores previstos son casi idénticos.

En conjuntos de datos con más inflación cero, los modelos ZI dan resultados diferentes (y normalmente mejor ajustados) que Poisson.

Otra forma de comparar el ajuste de los modelos es comparar el tamaño de los residuos:

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

muestra que, incluso en este caso, los residuos de Poisson son menores que los de ZINB. Si tiene una idea de la magnitud del residuo que es realmente problemática, puede ver qué proporción de los residuos de cada modelo está por encima de esa magnitud. Por ejemplo, si una desviación de más de 1 fuera inaceptable

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

muestra que este último es un poco mejor: 20 residuos grandes menos.

Entonces la cuestión es si la complejidad añadida de los modelos le merece la pena.

6voto

jasonmray Puntos 1303

Los valores ajustados mostrarán menos dispersión que los valores observados debido a la variación aleatoria. No estás haciendo una comparación significativa. Por poner un caso sencillo, si tus datos fueran sólo $X_i\sim\mathrm{Pois(\mu)}$ no compararías un histograma de $x_i$ contra un histograma del valor ajustado $\hat{\mu}$ - lo mismo para todos $i$ ¡! Aunque sería razonable simular valores de $x^*_i$ de $X^*_i\sim\mathrm{Pois(\hat{\mu})}$ y comparar histogramas de $x_i^*$ & $x_i$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X