[R-sig-ME] help with getting pvalues in lme4 - problems with mcmcpvalue, aovlmer.fnc, and HPDinterval

Ben Bolker bolker at ufl.edu
Tue Feb 3 16:44:49 CET 2009


  Since your model is relatively simple (not a GLMM, not crossed
random effects) you are likely to have much better luck getting
p values with the nlme package at this point.

  lme(fixed=Chao1Res ~ landtype, random = ~1|patch, data=S.final,
   method="ML")

 should be about right -- then I believe anova() on the result
will give you an ANOVA table.

cmk6 at umd.edu wrote:
> 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 _______________________________________________ 
> R-sig-mixed-models at r-project.org mailing list 
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models


-- 
Ben Bolker
Associate professor, Biology Dep't, Univ. of Florida
bolker at ufl.edu / www.zoology.ufl.edu/bolker
GPG key: www.zoology.ufl.edu/bolker/benbolker-publickey.asc




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