[R] Zero inflated: is there a limit to the level of inflation
Achim Zeileis
Achim.Zeileis at uibk.ac.at
Tue Jun 26 23:46:19 CEST 2012
On Tue, 26 Jun 2012, Marc Schwartz wrote:
> On Jun 26, 2012, at 2:10 PM, SSimek wrote:
>
>> Hello,
>>
>> I have count data that illustrate the presence or absence of individuals in
>> my study population. I created a grid cell across the study area and
>> calcuated a count value for each individual per season per year for each
>> grid cell. The count value is the number of time an individual was present
>> in each grid cell. For illustration my data columns look something like
>> this and are repeated for each individual:
>>
>> Cell_ID Param1 Param2 Param3 Param4 COUNT Name Year Season Cov
>> 1 160.565994 729.08 1503 7930.3 0 AA 2010 AUT Open
>> 1 160.565994 729.08 1503 7930.3 22 AA 2011 SPR Open
>> 1 160.565994 729.08 1503 7930.3 12 AA 2009 SUM Open
>> 1 160.565994 729.08 1503 7930.3 0 AA 2010 SUM Open
>> 2 169.427001 491.87 1503.31 5101.09 0 AA 2010 AUT oldHard
>> 2 169.427001 491.87 1503.31 5101.09 16 AA 2011 SPR oldHard
>> 2 169.427001 491.87 1503.31 5101.09 0 AA 2009 SUM oldHard
>> 2 169.427001 491.87 1503.31 5101.09 0 AA 2010 SUM oldHard
>> ?
>> 563 86.777099 612.69 977 4474.6 62 AA 2010 AUT Water
>> 563 86.777099 612.69 977 4474.6 12 AA 2011 SPR Water
>> 563 86.777099 612.69 977 4474.6 55 AA 2009 SUM Water
>>
>>
>> 1 160.565994 729.08 1503 7930.3 0 BB 2010 SUM Open
>> 2 169.427001 491.87 1503.31 5101.09 72 BB 2010 SUM oldHard
>> 5 160.75 614.95 1503.31 2878.98 16 BB 2010 SUM medHard
>> 6 170.404998 510.58 1489.44 743.14 0 BB 2010 SUM Water
>> ?
>> 563 86.777099 612.69 977 4474.6 0 BB 2010 SUM Water
>>
>>
>> 1 160.565994 729.08 1503 7930.3 14 C 2005 AUT Open
>> 1 160.565994 729.08 1503 7930.3 0 C 2006 AUT Open
>> 1 160.565994 729.08 1503 7930.3 0 C 2006 SPR Open
>> 1 160.565994 729.08 1503 7930.3 56 C 2007 SPR Open
>> 1 160.565994 729.08 1503 7930.3 0 C 2006 SUM Open
>> 2 169.427001 491.87 1503.31 5101.09 124 C 2005 AUT oldHard
>> 2 169.427001 491.87 1503.31 5101.09 231 C 2006 AUT oldHard
>> 2 169.427001 491.87 1503.31 5101.09 889 C 2006 SPR oldHard
>> 2 169.427001 491.87 1503.31 5101.09 0 C 2007 SPR oldHard
>> ?
>> 563 86.777099 612.69 977 4474.6 0 C 2005 AUT Water
>> 563 86.777099 612.69 977 4474.6 231 C 2006 AUT Water
>> 563 86.777099 612.69 977 4474.6 185 C 2006 SPR Water
>> 563 86.777099 612.69 977 4474.6 123 C 2007 SPR Water
>> 563 86.777099 612.69 977 4474.6 52 C 2006 SUM Water
>>
>>
>>
>> I have 563 grid cells across my study area and each individual has 1-563
>> cells associated for each year and each season the individual was monitored.
>> Therefore my grid cells are repeated. I end up with 71,000 records and 925
>> records have a Count value >0; which means 70,075 records have a Count value
>> = 0.
>>
>> I wanted to run a zero inflated poisson model to determine mixed effects (of
>> parameters) with individual as the random effect. But I have been advised
>> two things:
>>
>> 1. I cannot run a zero inflated poisson model because my data are too
>> "extremely" inflated (i.e. 70,075 vs 925) and
>>
>> 2. I cannot run the model with each cell repeated for each individual. I am
>> told the model doesn't recognize that Cell_ID #1 for individual "A" is the
>> same Cell_ID #1 for individual "B".
>>
>> Does anyone know if either or both of these points are true? I would
>> appreciate any thoughts, advice, or suggestions.
>>
>> Thanks!
>>
>> -Stephanie
>
>
> Hi Stephanie,
>
> Some comments:
>
> 1. You should think about or at least be open to a zero inflated negative binomial distribution rather than zero inflated poisson.
>
> 2. You should at least review the vignette for the pscl CRAN package, which provides standard fixed effects models and related functions for count based data and importantly, some good conceptual content:
>
> http://cran.r-project.org/web/packages/pscl/vignettes/countreg.pdf
>
> 3. Given the repeated measures framework and correlation issues you likely have, you should subscribe to and re-post your query to the R-sig-mixed-models list:
>
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>
> which will avail you of experts in the field.
>
> 4. There is also a draft FAQ for mixed models here:
>
> http://glmm.wikidot.com/faq
>
> which I believe is maintained by Ben Bolker, who actively participates in the above list. Based upon the content there, I suspect that you will be pointed to the glmmADMB package which is on R-Forge (http://glmmadmb.r-forge.r-project.org/) and can handle zero inflated mixed effects models of at least some types.
>
> 5. If all else fails, just to plant a seed, you might want to consider a
> mixed effects logistic regression model with a binary response, since
> you appear to have a relatively small "event" incidence in your data.
> The above list will also be helpful in that setting and you would likely
> be pointed to the glmer() function in the lme4 package for that
> application, which provides for GLMs in a mixed effects framework.
Thanks, Marc, all very useful points! Just one addition:
I would recommend starting with the last point - a binary response
regression (for y > 0). This could be considered as the zero-hurdle of a
hurdle regression.
Hurdle regressions are an alternative to zero-inflated models, but have
the nice property that you can separately estimate both parts of the
hurdle: (1) a binary regression for y=0 vs. y > 0. (2) A truncated count
model for y, estimated only from the observations y>0. The "pscl" package
contains a hurdle() function which estimates both parts in one go (and the
"countreg" vignette gives more details and references), but in this case
it would probably be useful to estimate them separately.
In any case, both parts will need care because the binary response
probably contains a lot of (quasi-)complete separations because non-zeros
are so rare. Conversely, the truncated count model may be hard to estimate
because there are no observations for a lot of parameter combinations. But
estimating the models separately will give you more flexibility in
addressing these issues.
To estimate the zero-truncated count distributions, you may consider the
"countreg" package from R-Forge which uses the same code as (one part of)
the hurdle() function.
hth,
Z
> Regards,
>
> Marc Schwartz
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list