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]]