[R-sig-ME] Poor mixing and autocorrelation of ZIP data in MCMCglmm

Vital Heim v|t@|@he|m @end|ng |rom gm@||@com
Tue Jun 9 12:49:09 CEST 2020


Good morning,

Currently, I am working on a Zero-Inflated Poisson Generalized Linear Mixed
Model using the MCMCglmm package in R. I am looking at the food uptake of
animal at a tourism provisioning site. I try to understand what variables
impact the amount of food/bait the animals consume.

The response variable (bait uptake) is zero-inflated. I have 6 fixed
effects (nr. tourists, nr. operators at the site, nr. conspecifics,
temperature, presence time of the animal at the site, and gender of the
animal). Presence time of the animal and temperature are only entered
at.level(trait, 1), all the other fixed effects are entered into the ZI
part and the count part of the model. I have two random effects for ID of
the animal and the provisioning event.

Here is the model specification:


modelZI.9 <- MCMCglmm(bait ~ trait - 1

                      + trait:conspecifics + trait:tourists +
trait:operators + at.level(trait,1):presence +
at.level(trait,1):temperature

                      + trait:gender

                      , random = ~idh(trait):id + idh(trait):event

                      , rcov =~ idh(trait):units

                      , data=df, family="zipoisson", prior=prior6

                      , nitt=NITT*MULT, burnin=BURN*MULT, thin = THIN*MULT,
verbose=FALSE)




I started with the chain parameters: nitt = 120000, burn = 20000, thin =
100 to get an effective sample size of 1000. My first prior was:



prior.base<-list(R=list(V=diag(c(1,1)), nu=0.002, fix=2)

            ,G=list(G1=list(V=diag(c(1,1)), nu=0.002, fix=2)

            ,G2=list(V=diag(c(1,1)), nu=0.002, fix=2)))



The chosen parameters and prior resulted in a very poor mixing of the ZI
effects as well as the both random effects. The effective sample sizes for
the ZI effects were very low (less than 100). I adjusted the chain
parameters (see below) I also adjusted the prior to account for
overdispersion in the fixed effects and making the prior stronger for the
random intercepts. There was autocorrelation in my ZI fixed effects so I
increased the thinning while increasing nitt and burn accordingly to get an
effective size of 1100. These measures improved the model in some parts.
However, I tried to validate my prior choice and parameters settings by
reading the literature to see if I am not doing anything “illegal” with my
model. By now the parameters and prior gives me slightly better mixing. I
was able to get the random effect ID mixing nicely but only when I set the
nu = 100.002, which seems very high to me.

 These are my current chain parameters and my prior:

NITT <- 185000

BURN <- 15000

THIN <- 150

MULT <- 10



prior6<-list(R=list(V=diag(c(1e-6,1)), nu=10.002, fix=2)

             ,G=list(G1=list(V=diag(c(1,1)), nu=100.002, fix=2)

             ,G2=list(V=diag(c(1,1)), nu=0.002, fix=2)))



The autocorrelation diagnostics are:

0.075907049                 NaN

 > autocorr.diag(modelZI.9$Sol)
           bait          zi_bait      bait:conspecifics
zi_bait:conspecifics   bait:tourists     zi_bait:tourists   bait:operators
Lag 0      1.00000000    1.00000000      1.0000000000           1.00000000
       1.00000000          1.000000000      1.000000000
Lag 1500  -0.03158767    0.45992662     -0.0216380764           0.52372246
      -0.02650593          0.546651545     -0.027195064
Lag 7500   0.02284612    0.15705391      0.0114730973           0.12436415
       0.03518200          0.122140444     -0.010875426
Lag 15000  0.04558767    0.06901158     -0.0131587465           0.05700078
       0.05371373          0.054479522      0.024634961
Lag 75000  0.03567369    0.04099224     -0.0005695797           0.02014238
      -0.02546435         -0.006299296     -0.005569035
            zi_bait:operators     presence temperature
 bait:gendermale       zi_bait:gendermale
Lag 0              1.00000000  1.000000000  1.00000000
1.000000000               1.00000000
Lag 1500           0.43279808 -0.004789598 -0.03151510
 -0.002708028               0.33387297
Lag 7500           0.05697190  0.012426457  0.02221331
 -0.025070273               0.11236772
Lag 15000          0.05472752 -0.043356418  0.04499879
 -0.003589775               0.05618167
Lag 75000          0.03342174 -0.007475513  0.03201374
0.015790374              -0.03167048

> autocorr.diag(modelZI.9$VCV)
                bait.id       zi_bait.id       bait.dive
 zi_bait.dive       bait.units       zi_bait.units
Lag 0       1.000000000              NaN      1.00000000                NaN
     1.000000000                 NaN
Lag 1500   -0.026735489              NaN      0.03018431                NaN
     0.003349623                 NaN
Lag 7500   -0.051666715              NaN     -0.02011165                NaN
    -0.048462744                 NaN
Lag 15000   0.003918555              NaN     -0.02777388                NaN
    -0.001752476                 NaN
Lag 75000   0.028123317              NaN     -0.01640397                NaN
     0.075907049                 NaN



I therefore wanted to ask if there are suggestions on how I could improve
the mixing of my model without choosing these drastic changes or are these
changes in the range of what I am allowed to do to my model?


Thank you,

Vital
--
*Vital Heim *

*PhD student*
University of Basel, Switzerland

Bimini Biological Field Station Foundation
Bimini, Bahamas

+41 (0)79 732 05 57
vital.heim using gmail.com

	[[alternative HTML version deleted]]



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