[R] lme4/lmer: P-Values from mcmc samples or chi2-tests?
Christoph Scherber
Christoph.Scherber at agr.uni-goettingen.de
Tue Feb 13 14:45:44 CET 2007
Dear R users,
I have now tried out several options of obtaining p-values for
(quasi)poisson lmer models, including Markov-chain Monte Carlo sampling
and single-term deletions with subsequent chi-square tests (although I
am aware that the latter may be problematic).
However, I encountered several problems that can be classified as
(1) the quasipoisson lmer model does not give p-values when summary() is
called (see below)
(2) dependence on the size of the mcmc sample
(3) lack of correspondence between different p-value estimates.
How can I proceed, left with these uncertainties in the estimations of
the p-values?
Below is the corresponding R code with some output so that you can see
it all for your own:
##
m1<-lmer(number_pollinators~logpatch+loghab+landscape_diversity+(1|site),primula,poisson,method="ML")
m2<-lmer(number_pollinators~logpatch+loghab+landscape_diversity+(1|site),primula,quasipoisson,method="ML")
summary(m1);summary(m2)
#m1: [...]
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.40302 0.57403 -0.7021 0.48262
logpatch 0.10915 0.04111 2.6552 0.00793 **
loghab 0.08750 0.06128 1.4279 0.15331
landscape_diversity 1.02338 0.40604 2.5204 0.01172 *
#m2: [...] #for the quasipoisson model, no p values are shown?!
Fixed effects:
Estimate Std. Error t value
(Intercept) -0.4030 0.6857 -0.5877
logpatch 0.1091 0.0491 2.2228
loghab 0.0875 0.0732 1.1954
landscape_diversity 1.0234 0.4850 2.1099
##
anova(m1)
#here, no p-values appear (only in the current version of lme4)
Analysis of Variance Table
Df Sum Sq Mean Sq
logpatch 1 11.6246 11.6246
loghab 1 6.0585 6.0585
landscape_diversity 1 6.3024 6.3024
anova(m2)
Analysis of Variance Table
Df Sum Sq Mean Sq
logpatch 1 11.6244 11.6244
loghab 1 6.0581 6.0581
landscape_diversity 1 6.3023 6.3023
So I am left with the p-values estimated from the poisson model;
single-term deletion tests for each of the individual terms lead to
different p-values; I restrict this here to m2:
##
m2a=update(m2,~.-loghab)
anova(m2,m2a,test="Chi")
Data: primula
Models:
m2a: number_pollinators ~ logpatch + landscape_diversity + (1 | site)
m2: number_pollinators ~ logpatch + loghab + landscape_diversity + (1 |
site)
Df AIC BIC logLik Chisq Chi Df Pr(>Chisq)
m2a 4 84.713 91.850 -38.357
m2 5 84.834 93.755 -37.417 1.8793 1 0.1704
##
m2b=update(m2,~.-logpatch)
anova(m2,m2b,test="Chi")
Data: primula
Models:
m2b: number_pollinators ~ loghab + landscape_diversity + (1 | site)
m2: number_pollinators ~ logpatch + loghab + landscape_diversity +
m2b: (1 | site)
Df AIC BIC logLik Chisq Chi Df Pr(>Chisq)
m2b 4 90.080 97.217 -41.040
m2 5 84.834 93.755 -37.417 7.246 1 0.007106 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
m2c=update(m2,~.-landscape_diversity)
anova(m2,m2c,test="Chi")
Data: primula
Models:
m2c: number_pollinators ~ logpatch + loghab + (1 | site)
m2: number_pollinators ~ logpatch + loghab + landscape_diversity +
m2c: (1 | site)
Df AIC BIC logLik Chisq Chi Df Pr(>Chisq)
m2c 4 89.036 96.173 -40.518
m2 5 84.834 93.755 -37.417 6.2023 1 0.01276 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
The p-values from mcmc are:
##
markov1=mcmcsamp(m2,5000)
HPDinterval(markov1)
lower upper
(Intercept) -1.394287660 0.6023229
logpatch 0.031154910 0.1906861
loghab 0.002961281 0.2165285
landscape_diversity 0.245623183 1.6442544
log(site.(In)) -41.156007604 -1.6993996
attr(,"Probability")
[1] 0.95
##
mcmcpvalue(as.matrix(markov1[,1])) #i.e. the p value for the intercept
[1] 0.3668
> mcmcpvalue(as.matrix(markov1[,2])) #i.e. the p-value for logpatch
[1] 0.004
> mcmcpvalue(as.matrix(markov1[,3])) #i.e. the p-value for loghab
[1] 0.0598
> mcmcpvalue(as.matrix(markov1[,4])) #i.e. the p-value for landscape.div
[1] 0.0074
If one runs the mcmcsamp function for, say, 50,000 runs, the p-values
are slightly different (not shown here).
##here are the p-values summarized in tabular form:
(Intercept) 0.3668
logpatch 0.004
loghab 0.0598
landscape_diversity 0.0074
##and from the single-term deletions:
(Intercept) N.A.
logpatch 0.007106
loghab 0.1704
landscape_diversity 0.01276
## Compare this with the p-values from the poisson model:
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.40302 0.57403 -0.7021 0.48262
logpatch 0.10915 0.04111 2.6552 0.00793 **
loghab 0.08750 0.06128 1.4279 0.15331
landscape_diversity 1.02338 0.40604 2.5204 0.01172 *
##
To summarize, at least for quasipoisson models, the p-values obtained
from mcmcpvalue() are quite different from those obtained using
single-term deletions followed by a chisquare test.
Especially in the case of "loghab", the difference is so huge that one
could tend to interpret one of the p-values as "marginally significant".
However, the mcmc chains look allright.
What would your suggestions be on how to proceed?
Thanks a lot for your help!
Best wishes,
Christoph.
##
I am using R 2.4.1 and the lme4 version I use is 0.9975-11 (Date:
2007-01-25)
More information about the R-help
mailing list