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

Paul Buerkner paul.buerkner at gmail.com
Sat Dec 10 02:10:17 CET 2016


You could try using brms::brm with family "cumulative" as an alternative to
ordinal::clmm as the former is able to handle models with more random
effects than observations. The call would look as follows:

brm(as.factor(fledges) ~
habitatF*(areaPatchFath+poligF01+StdLayingDate+ageFath1+ageMoth1)+(1|year)+(
1|ringMoth)+(1|ringFath),
data=dati, family = cumulative())

Note that you need a C++ compiler to get this to work since brms is a
front-end of Stan.

Best,
Paul

2016-12-09 19:40 GMT+01:00 Simone Santoro <santoro at ebd.csic.es>:

> 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  ("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>
> >> and here
> >> <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
> >and
> >> here
> >> <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  mailing list
> >> 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://orcid.org/0000-0003-0986-3278
>
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-sig-mixed-models at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>

	[[alternative HTML version deleted]]



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