[R-sig-ME] help with getting pvalues in lme4 - problems with mcmcpvalue, aovlmer.fnc, and HPDinterval
cmk6 at umd.edu
cmk6 at umd.edu
Tue Feb 3 16:33:03 CET 2009
I can’t seem to get sensible pvalues testing the effect of one factor ‘landtype’ in the following model using function mcmcpvalue; and it seems from previous emails that it is no longer possible to use aovlmer.fnc ( ) in lme4. And as of last night, I get new error (“Error in UseMethod("HPDinterval") : no applicable method for "HPDinterval")when trying to perform HPDinterval ().
I would appreciate any guidance on how to get pvalues to test one factor using lmer function! In addition, I'd like to verify that the best way to determine significant pairwise differences among factor levels is to examine overlap of 95% CIs generated based on MCMC (i.e., using HPDinterval or pvals.fnc).
I’m running the following model:
>modlmer <- lmer(Chao1.Res ~ landtype + (1|patch), data = S.final, REML=FALSE)
Where: landtype has 4 levels: Agriculture (as Intercept), Bauxite, Forest, Urban.
Model output:
Linear mixed model fit by maximum likelihood
Formula: Chao1.Res ~ landtype + (1 | patch)
Data: S.final
AIC BIC logLik deviance REMLdev
1732 1753 -859.8 1720 1711
Random effects:
Groups Name Variance Std.Dev.
patch (Intercept) 22.084 4.6993
Residual 36.615 6.0510
Number of obs: 253, groups: patch, 99
Fixed effects:
Estimate Std. Error t value
(Intercept) 27.300 1.322 20.652
landtypeBauxite -6.357 1.772 -3.588
landtypeForest -1.049 1.727 -0.607
landtypeUrban -5.504 1.885 -2.920
Correlation of Fixed Effects:
(Intr) lndtyB lndtyF
landtypeBxt -0.746
landtypFrst -0.765 0.571
landtypUrbn -0.701 0.523 0.537
> markov <- mcmcsamp(modlmer, 50000)
I get the below error (as of last night) when trying to run HPDinterval
> HPDinterval(markov)
Error in UseMethod("HPDinterval") : no applicable method for "HPDinterval"
So instead I ran:
> pvals.fnc(modlmer)$fixed
Estimate MCMCmean HPD95lower HPD95upper pMCMC Pr(>|t|)
(Intercept) 27.300 27.403 25.279 29.610 0.0001 0.0000
landtypeBauxite -6.357 -6.519 -9.384 -3.603 0.0001 0.0012
landtypeForest -1.049 -1.124 -3.864 1.790 0.4296 0.5829
landtypeUrban -5.504 -5.610 -8.705 -2.677 0.0002 0.0077
Question: So should I look at HPD95lower and HPD95upper to determine whether factor levels (Ag, Bauxite, Forest, or Urban) differ pair-wise?
Trying to get pvalues using:
> mcmcpvalue <- function(samp) {
+ std <- backsolve(chol(var(samp)),
+ cbind(0, t(samp)) - colMeans(samp),
+ transpose = TRUE)
+ sqdist <- colSums(std * std)
+ sum(sqdist[-1] > sqdist[1])/nrow(samp)
+ }
I need pvalue to test landtype – levels Agriculture (Intercept), Bauxite, Forest, and Urban:
> mcmcpvalue(as.matrix(markov)[, 1:4])
[1] 0
Pvalue of 0 does not make sense.
Verified that I wanted first 4 columns:
> head(as.matrix(markov))
(Intercept) landtypeBauxite landtypeForest landtypeUrban ST1 sigma
[1,] 27.30047 -6.357429 -1.048611 -5.503726 0.7766178 6.051015
[2,] 28.04026 -6.345041 -0.329192 -7.144239 0.5959559 5.379194
[3,] 28.83598 -8.727255 -4.117192 -5.349411 0.6346374 6.175085
[4,] 27.33180 -5.973496 -1.231745 -5.913463 0.3999811 6.015337
[5,] 27.68958 -5.833905 -2.323891 -5.954748 0.3312879 6.738105
[6,] 28.62220 -8.177245 -1.173439 -5.937315 0.3879350 7.291594
Just to check I tried difference columns and do not understand what these pvalues represent:
> mcmcpvalue(as.matrix(markov)[, 2:3]) #Bauxite & Forest?
[1] 0
> mcmcpvalue(as.matrix(markov)[, 1:3]) #Ag & Forest?
[1] 0
> mcmcpvalue(as.matrix(markov)[, 3:4]) #Forest & Urban?
[1] 0.00062
> mcmcpvalue(as.matrix(markov)[, 1:2]) #Ag & Bauxite?
[1] 0
Determined anti-conservative pvalue based on LRT:
> mod0 <- lmer(Chao1.Res ~ 1 + (1|patch), data = S.final, REML=FALSE)
> mod1 <- lmer(Chao1.Res ~ landtype + (1|patch), data = S.final, REML=FALSE)
> anova(mod0,mod1)
Data: S.final
Models:
mod0: Chao1.Res ~ 1 + (1 | patch)
mod1: Chao1.Res ~ landtype + (1 | patch)
Df AIC BIC logLik Chisq Chi Df Pr(>Chisq)
mod0 3 1743.43 1754.03 -868.71
mod1 6 1731.60 1752.80 -859.80 17.832 3 0.0004764 ***
Then tried to get pvalues based on aovlmer.fnc
> mod1.aov = aovlmer.fnc (modlmer, mcmc = x$mcmc, which = c("(Intercept)","landtypeBauxite", "landtypeForest", "landtypeUrban" ))
Error in anova(object) : Calculated PWRSS for a LMM is negative
I have the following packages installed and loaded:
require(lme4)
require(Matrix)
require(lattice)
require(SASmixed)
require(coda)
require(languageR)
Christina Kennedy
Behavior, Ecology, Evolution & Systematics
University of Maryland
3221 Biology-Psychology Building
College Park, Maryland 20742
Cell Phone: (202) 288-7483
Lab Phone: (301) 405-4512
Email: cmk6 at umd.edu
More information about the R-sig-mixed-models
mailing list