[R-sig-ME] GLMM for underdispersed count data: Conway-Maxwell-Poisson and Ordinal

Mollie Brooks mollieebrooks at gmail.com
Wed Dec 14 16:06:48 CET 2016


Hi Simone,

For the glmmTMB model with the Conway-Maxwell Poisson distribution, the left side of the equation should technically by fledges rather than as.factor(fledges). However, it looks like glmmTMB doesn’t evaluate the as.factor() command and fits the model with fledges as the response anyway.

If you end up needing zero-inflation also, it can be specified using the ziformula command. See vignette("glmmTMB") or here https://github.com/glmmTMB/glmmTMB/blob/master/misc/salamanders.pdf <https://github.com/glmmTMB/glmmTMB/blob/master/misc/salamanders.pdf>
for an example.

cheers,
Mollie

———————————
Mollie E. Brooks, Ph.D.
Postdoctoral Researcher
National Institute of Aquatic Resources
Technical University of Denmark

> On 9Dec 2016, at 19:40, Simone Santoro <santoro at ebd.csic.es> wrote:
> 
> Hi,
> 
> Thank you all very much your hints. They have been really really helpful for me. Below you may find a reproducible code to see how three approaches fit a simulated data set (clmm::ordinal, glmmTMB::glmmTMB, fitme:spaMM). Results seem to me qualitatively similar but with clmm:ordinal I cannot use the three crossed random effects because I get an error like this:
> Error: no. random effects (=135) >= no. observations (=100)
> 
> 
> set.seed(1234)
> library(ordinal)
> library(glmmTMB)
> library(spaMM)
> dati<- data.frame(fledges= rpois(100,10), habitatF= as.factor(rbinom(100,1,0.5)), areaPatchFath= rnorm(100), poligF01= as.factor(rbinom(100,1,0.5)),StdLayingDate= rnorm(100), ageFath1= rpois(100,3), ageMoth1= rpois(100,3), year= as.factor(rpois(100,200)), ringMoth= as.factor(rpois(100,200)), ringFath= as.factor(rpois(100,200)))
> str(dati)
> 
> system.time(Fitclm<- clmm(as.factor(fledges) ~ habitatF*(areaPatchFath+poligF01+StdLayingDate+ageFath1+ageMoth1)+(1|year)+(1|ringMoth)+(1|ringFath),data=dati,Hess=T))
> # this way it works...
> system.time(Fitclm1<- clmm(as.factor(fledges) ~ habitatF*(areaPatchFath+poligF01+StdLayingDate+ageFath1+ageMoth1)+(1|year)+(1|ringFath),data=dati,Hess=T))
> summary(Fitclm1)
> 
> system.time(FitglmmTMB<- glmmTMB(as.factor(fledges) ~ habitatF*(areaPatchFath+poligF01+StdLayingDate+ageFath1+ageMoth1)+(1|year)+(1|ringMoth)+(1|ringFath),data=dati,family= "compois"))
> summary(FitglmmTMB)
> 
> system.time(FitglmmTMB<- glmmTMB(as.factor(fledges) ~ habitatF*(areaPatchFath+poligF01+StdLayingDate+ageFath1+ageMoth1)+(1|year)+(1|ringMoth)+(1|ringFath),data=dati,family= "compois"))
> summary(FitglmmTMB)
> 
> # This lasts much more (3-4')
> system.time(Fitfitme<- fitme(fledges ~ habitatF*(areaPatchFath+poligF01+StdLayingDate+ageFath1+ageMoth1)+(1|year)+(1|ringFath)+(1|ringMoth),data=dati,COMPoisson(),method = "ML")) 
> summary(Fitfitme)
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> El 08/12/2016 a las 4:32, Ben Bolker escribió:
>>    One reference that uses ordinal regression in a similar situation
>> (litter size of Florida panthers) is
>> http://link.springer.com/article/10.1007/s00442-011-2083-0 <http://link.springer.com/article/10.1007/s00442-011-2083-0> ("Does
>> genetic introgression improve female reproductive performance? A test on
>> the endangered Florida panther")
>> 
>>   Not sure about the number-of-random-effects error: a reproducible
>> example would probably be needed (smaller is better!)
>> 
>>   Ben Bolker
>> 
>> 
>> On 16-12-06 08:41 AM, Simone Santoro wrote:
>>> Dear all,
>>> 
>>> I am trying to find an appropriate GLMM (with temporal and individual 
>>> crossed random effects) to model underdispersed count data (clutch 
>>> size). I have found several possible ways of doing that. A good 
>>> distribution for data like this would seem to be the 
>>> Conway-Maxwell-Poisson but I have not found a way of using it within a 
>>> GLMM in R (I have asked here 
>>> <http://stats.stackexchange.com/questions/249738/how-to-define-the-nu-parameter-of-conway-maxwell-poisson-in-spamm-package> <http://stats.stackexchange.com/questions/249738/how-to-define-the-nu-parameter-of-conway-maxwell-poisson-in-spamm-package> 
>>> and here 
>>> <http://stats.stackexchange.com/questions/249798/conway-maxwell-poisson-with-crossed-random-effects-in-r> <http://stats.stackexchange.com/questions/249798/conway-maxwell-poisson-with-crossed-random-effects-in-r>).
>>> I have seen that Ben Bolker suggested (here 
>>> <https://stat.ethz.ch/pipermail/r-sig-mixed-models/2014q1/021945.html> <https://stat.ethz.ch/pipermail/r-sig-mixed-models/2014q1/021945.html>and 
>>> here 
>>> <http://stats.stackexchange.com/questions/92156/how-to-handle-underdispersion-in-glmm-binomial-outcome-variable> <http://stats.stackexchange.com/questions/92156/how-to-handle-underdispersion-in-glmm-binomial-outcome-variable>) 
>>> to use an ordinal model in cases like this(e.g. _ordinal:clmm_). I have 
>>> tried this solution and the results I obtain makes (biological) sense to 
>>> me. However, I wonder why but I cannot put all the three crossed random 
>>> effects I have in the clmm model (_Error: no. random effects (=1254) >= 
>>> no. observations (=854)_) whereas it is not a problem for the glmer 
>>> model (the no. of levels of each single random effect does not exceed 854)*.
>>> Beyond that, and that's what I would like to ask you, *I cannot find a 
>>> reference to justify I used the ordinal model* to deal with 
>>> underdispersed count data (referee will ask it for sure).
>>> Best,
>>> 
>>> Simone
>>> 
>>> * FMglmer<- glmer(fledges ~ habitatF * (areaPatchFath + poligF01 + 
>>> StdLayingDate + ageFath1 + ageMoth1) + (1|year) + (1|ringMoth) + 
>>> (1|ringFath), data = datiDRS)
>>>     FMclmm<- glmer(as.factor(fledges)~ habitatF * (areaPatchFath + 
>>> poligF01 + StdLayingDate + ageFath1 + ageMoth1) + (1|year) + 
>>> (1|ringMoth) + (1|ringFath), data = datiDRS)
>>> 
>>> 
>>> 	[[alternative HTML version deleted]]
>>> 
>>> _______________________________________________
>>> R-sig-mixed-models at r-project.org <mailto:R-sig-mixed-models at r-project.org> mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
>>> 
> 
> -- 
> Simone Santoro
> PhD
> Department of Ethology and Biodiversity Conservation
> Doñana Biological Station
> Calle Américo Vespucio s/n
> 41092 Seville - Spain
> Phone no. +34 954 466 700 (ext. 1213)
> http://www.researchgate.net/profile/Simone_Santoro <http://www.researchgate.net/profile/Simone_Santoro>
> http://orcid.org/0000-0003-0986-3278 <http://orcid.org/0000-0003-0986-3278>

	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list