Hi Thierry,
Apologies in the delay in reverting, I have been out on fieldwork. I have
tried your suggestions, but unfortunately am still having convergence
issues. The most simple Poisson model runs fine, so I tried a negative
binomial distribution but that produced about 12 convergence warnings.
modelA <- glmer.nb(field_count ~ (1|animal) + (1|field_id) + offset(log(origarea)), family = poisson, data = dframe2)
There were 12 warnings (use warnings() to see them)
Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, ... :
Model failed to converge with max|grad| = 0.0493534 (tol = 0.001, component 1)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, ... :
Model failed to converge with max|grad| = 0.0627833 (tol = 0.001, component 1)
3: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, ... :
Model is nearly unidentifiable: very large eigenvalue - Rescale variables?
etc.
I reverted to the simple Poisson and added the OLR, which ran, but as soon
as I add any additional complexity/variables (apart from sex) it produces a
convergence warning.
Warning message:In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 0.0332321 (tol = 0.001, component 1)
I am not sure where to go from here. Any guidance would be much
appreciated.
Kind regards,
Aoibheann
On 25 April 2016 at 14:44, Aoibheann Gaughran <gaughra at tcd.ie> wrote:
Hi Thierry,
Here is the dropbox link to the data -
https://www.dropbox.com/s/ne5d4zp2gncwylm/foraging%20subset.csv?dl=0
I had changed the field area units from meter square to hectures already,
so that *should *be okay. There is one exceedingly large "field" which
is actually a large area of forestry. Perhaps this is throwing the scaling
off.
Can you confirm that this is how I specify the observation level random
effect:
dframe1$obs <- factor(seq(nrow(dframe1))) #modified from https://rpubs.com/bbolker/glmmchapter
which is included in the model as
+(1|obs)
I'll try your suggestions and see how I get on.
Many thanks,
Aoibheann
On 25 April 2016 at 13:40, Thierry Onkelinx <thierry.onkelinx at inbo.be>
wrote:
Dear Aoibheann,
Two general suggestions on the design. 1) A random effect of field seems
relevant too. 2) Have the units of origarea in a relevant scale. You are
modelling the number of visits per unit of origarea. Then the number per
hectare seems more relevant to me than the number per square meter.
Then try the most simple Poisson model to see it that converge. glmer(field_count
~ (1| animal) + (1|field) + offset(log(origarea)), family = poisson)
If that works, then you could try the negative binomial distribution or
adding an observation level random effect.
The mailing list strips most attachments. So you need to put them on a
website or post a dropbox or google drive link.
Best regards,
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature
and Forest
team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
Kliniekstraat 25
1070 Anderlecht
Belgium
To call in the statistician after the experiment is done may be no more
than asking him to perform a post-mortem examination: he may be able to say
what the experiment died of. ~ Sir Ronald Aylmer Fisher
The plural of anecdote is not data. ~ Roger Brinner
The combination of some data and an aching desire for an answer does not
ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey
2016-04-25 14:08 GMT+02:00 Aoibheann Gaughran <gaughra at tcd.ie>:
On 25 April 2016 at 13:00, Aoibheann Gaughran <gaughra at tcd.ie> wrote:
Good morning,
First time posting so I hope I am including all of the relevant
information.
I am attempting to analyse the foraging behaviour of a animal in an
agricultural landscape. The objective is to identify the factors
type, environmental variables and animal-specific variables) that best
predict foraging site preference. Some fields are preferred while
are avoided.
The response variable is count data - the number of times a given
was in a given field in a given month. An animal's home range varies
month to month, so the area available to it and the fields that fall
its home range change somewhat every month. The count data shows an
overdispersed, negative binomial distribution, and is zero inflated as
fields that fell within the home range where the animal had *not
in that month are also included in the dataset. The individual animal
specified as a random variable to account for pseudoreplication.
It should be noted that at the moment I am attempting to run a the
on a subset of the data (n=671) as I had attempted to run the model
full dataset (n=62,000) but three days later the model (which included
interaction terms at this point) had still failed to run, and when
R gave me a multitude of convergence warning messages e.g.
13: In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int
... :
failure to converge in 10000 evaluations
Simpler iterations of the model, with fewer explanatory terms, and no
interaction terms, also gave me convergence and some scaling warnings,
which I sought to address using:
control=glmerControl(optCtrl=list(maxfun=20000)
and by scaling the numeric variables age, slope and aspect as
dframe1$agescale <- scale(dframe1$age, center = TRUE, scale = FALSE)
dframe1$slopescale <- scale(dframe1$slope, center = TRUE, scale =
dframe1$aspectscale <- scale(dframe1$aspect, center = TRUE, scale =
Currently, the model looks like this:
model1 <- glmer.nb(field_count ~ habitat + +
sex+ + agescale+ #+ mon+
+ soil+ + slopescale+ +
aspectscale+ + offset(log(origarea)) #take into account
field size + +(1|animal),+
control=glmerControl(optCtrl=list(maxfun=20000)),+
data = dframe1)
There were 24 warnings (use warnings() to see them)
warnings()Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl =
Model is nearly unidentifiable: very large eigenvalue
- Rescale variables?;Model is nearly unidentifiable: large
- Rescale variables?
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl =
Model failed to converge with max|grad| = 0.0134799 (tol = 0.001,
3: In checkConv(attr(opt, "derivs"), opt$par, ctrl =
Model failed to converge with max|grad| = 0.148644 (tol = 0.001,
4: In checkConv(attr(opt, "derivs"), opt$par, ctrl =
Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?
etc.
So the model still fails to converge despite rescaling and altering
number of iterations. I had also received the following error in
to month (in the reduced dataset there are only *four *months), so Ive
had to exclude it for the time being. I am not sure why I am getting
error since the factor has four levels.
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
I do eventually want to include interaction terms as previous
ranging behaviour suggests there is an interaction between age and
Summary of dataset attached. Also attached is the .csv file
the reduced dataset.
I have read various suggestions online and have come across the
worrying line "It's perfectly possible that your data is insufficient
support the complexity of the model or the model is incorrectly
for the design of the study".
I would greatly appreciate any help you could give me with
and solving the problems I am encountering with my model.
Kind regards,
--
Aoibheann Gaughran
Behavioural and Evolutionary Ecology Research Group
Zoology Building
School of Natural Sciences
Trinity College Dublin
Dublin 2
Ireland
Phone: +353 (86) 3812615
--
Aoibheann Gaughran
Behavioural and Evolutionary Ecology Research Group
Zoology Building
School of Natural Sciences
Trinity College Dublin
Dublin 2
Ireland
Phone: +353 (86) 3812615