[R-sig-ME] Question re: MCMCglmm with zipoisson family

Jarrod Hadfield j.hadfield at ed.ac.uk
Tue Aug 4 18:57:59 CEST 2009


Dear Charlotte,

The structure of the model looks valid, although you may be able to  
simplify it more and get the same level of fit.

Initially, I would work with a reparameterisation of your model:

abund3.mcmc <-
MCMCglmm(abund~trait+trait:fl+trait:mps+trait:elev+trait:distance 
+trait:dens-1,
random=~idh(trait):YEAR 
+idh(trait):pop,rcov=~idh(trait):units,data=flyden
s,family="zipoisson",prior=priorD)

This fits the same model, but the interpretation is probably easier in  
this case.

The first fixed term will be the intercept of the Poisson process and  
the second fixed term will be the intercept of the zero-inflation. The  
remaining terms are trait (Poisson and Zero-inflation) specific  
contrasts from the intercept.

You may also want to fix the zero inflation as a constant across all  
levels (both in the fixed and random terms). For example,

priorB <- list(R=list(V=diag(2),n=2,fix=2),
G=list(G1=list(V=diag(c(1, 1e-6)),n=2, fix=2),G2=list(V=diag(c(1,  
1e-6)),n=2, fix=2)))

fixes the random effect variances of the zero-inflation to zero, which  
may be OK.  However, having 1 as your prior variance for the Poisson  
process should not be used by default, and you should make sure your  
conclusions don't depend on it.

Also, you may not want zero-inflation to vary across your fixed effect  
terms (e.g. fl).  All your fixed terms look continuous, so your  
parameters (using the above parameterisation) should be of the form:

1) poisson intercept
2) zi intercept
3) effect of fl on poisson process
4) effect of fl on zi process
5) effect of elev on poisson process
6) effect of elev on zi process

and so on...

you could set effects 4,6,8.... to zero by fixing them  at zero in the  
prior specification:


priorC <- list(B=list(mu=matrix(0, nterms, 1),  V=diag(nterms)*1e+6),  
R=list(V=diag(2),n=2,fix=2),
G=list(G1=list(V=diag(c(1, 1e-6)),n=2, fix=2),G2=list(V=diag(c(1,  
1e-6)),n=2, fix=2)))

# this sets up a diffuse prior around zero on the fixed effects, where  
nterms is the number of fixed effects your fitting

diag(priorC$B$V)[seq(4, nterms, 2)]<-1e-6

# this sets the variance around the zero inflation terms (except the  
intercept) to be very small, essentially fixing them to zero.


One potential problem you may have with diffuse priors on logit-binary  
outcomes is when the probability is extreme. In this  case the logit  
probability can be very large or very small and huge changes in the  
logit probability actually translate into very small differences on  
the probability scale. For example,

 > inv.logit(5)
[1] 0.9933071
 > inv.logit(10)
[1] 0.9999546

In this case it may make more sense to put an informative prior on the  
zi fixed effects. I often use a variance of pi^2/3 because this is  
approximately uniform on the probability scale:

hist(inv.logit(rnorm(10000, 0, sqrt(pi^2/3))))

but there are probably better options when there are random effects.  
Andrew Gelman has written something on this.

Cheers,

Jarrod



On 4 Aug 2009, at 15:55, Klank Charlotte wrote:

> Dear list,
>
>
>
> I am currently working on a data set on the fly abundance in flowers  
> of
> Trollius europaeus in 20 populations, recorded over three years.
>
>
>
> I am interested in the of effect of several explanatory variables such
> as plant population size, mean plant size, plant density, elevation  
> and
> distance to next sampled population on the fly abundance in a
> population.
>
>
>
> As I think that my data is zero-inflated (it contains 87% zero  
> values),
> I would like to use a zero-inflated model, which also allows me to fit
> fixed effects as well as random effects to account for the populations
> being repeatedly measured over three years.
>
>
>
> I therefore tried to fit the MCMCglmm with a zipoisson family and am
> wondering if any of you could give me some advice on the coding, as  
> I am
> not really sure if I have done things correctly.
>
>
>
> I have checked the MCMCglmm documentation as well as previous posts
> regarding MCMCglmm with a zipoisson family, but still have some  
> problems
> with how to code and if my priors are ok.
>
>
>
> So I would greatly appreciate it if you could have a look at the code
> below and let me know if it is ok and/or point me at the right reading
> material.
>
>
>
> ---
>
> Data set:
>
> n= 16867
>
> counts done in 2006,2007 and 2008
>
> 9 populations were sampled in 2006, all 20 in 2007 & 2008
>
>
>
> response:
>
> abund -  number of flies per flower, ranging from 0 - 7
>
>
>
> variables:
>
> YEAR -  year of sampling (factor)
>
> pop - name of the sampled population (factor)
>
> fl - population size (as No. of flowers) (int)
>
> elev - elevation (int)
>
> mps - mean plant size (average No. of flowers per individual) (num)
>
> dens -  plant population density (num)
>
> distance - distance to closest sampled population (num)
>
>
>
>
>
> MODEL CODE:
>
>
>
> priorA <- list(R=list(V=diag(2),n=2,fix=2),
> G=list(G1=list(V=diag(2),n=2),G2=list(V=diag(2),n=2)))
>
>
>
> abund3.mcmc <-
> MCMCglmm(abund~trait:fl+trait:mps+trait:elev+trait:distance 
> +trait:dens,r
> andom=~idh(trait):YEAR 
> +idh(trait):pop,rcov=~idh(trait):units,data=flyden
> s,family="zipoisson",prior=priorD)
>
>
>
> ----
>
>
>
> Thanks already for the help :>
>
>
>
> Regards,
>
>
>
> Charlotte
>
>
>
>
>
>
>
>
>
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-mixed-models at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>


-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.




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