I am trying to:
landcover
(a continuous variable) on presence
of a species.season
(a categorical variable, spring and fall).However, no animal in my data set has observations in both seasons.
I am using R package glmmTMB to estimate a binomial GLMM with random intercept and random slope for animal ID
, but I don't know how to represent the effects of landcover
(the variable of interest) and season
in the model formula.
I have tried these two variations:
glmmTMB(presence ~ landcover:season + (1 | ID) + (0 + landcover:season | ID),
family = binomial(), data = dat.rsf, doFit = FALSE, weights = weight)
This one is more intuitive to me, but does not converge. Is that just an indication that I cannot estimate this model with my data? Or is this model not the best way to get at the relationships that I am trying to test?
glmmTMB(presence ~ landcover:season + (1 | ID) + (0 + landcover | ID),
family = binomial(), data = dat.rsf, doFit = FALSE, weights = weight)
This converges, but is not as intuitive. Does it make sense to not include the interaction in the random slope when I include it as a fixed effect? Or does that violate the principle of a random slope?
tl;dr I would suggest
glmmTMB(presence ~ landcover*season + (1 + landcover | ID),
family = binomial(), data = dat.rsf,
weights = weight,
map = list(theta=factor(c(NA, 1, 2))),
start = list(theta = c(log(1e3), rep(0, 2))
)
(noting that landcover
is a continuous predictor).
map
and start
parameters to achieve your goal ... what I've done here is to fix the intercept variation among individuals to a large value (SD=1000). The other two parameters in theta
are the (among-individual variation in land cover effects, and the correlations between intercept and slope.(1|ID)
and (0+landcover|ID)
; this will estimate intercept and landcover-effect variation, but assume tha they are independent for each individual. That's not a ridiculous assumption, but the model listed here is more general. diag(landcover|ID)
is equivalent to (1|ID) + (0+landcover|ID)
season
as a term as in season|ID
doesn't work because it's not possible to estimate among-individual variation in season effects when no individuals are observed in multiple seasonslandcover:season
: in general, it doesn't make sense to include an interaction term without including the main effects. landcover*season
is equivalent to landcover + season + landcover:season
, and would be preferred. (There are sometimes reasons to violate marginality by including interactions without their corresponding main effects, but if you're going to do this you should know exactly why you're doing it ...)