[R-sig-eco] variance on random effects in the lme() function

Kingsford Jones kingsfordjones at gmail.com
Thu Feb 26 05:04:19 CET 2009


You can use VarCorr to extract the values, but (oddly enough) it
returns values as character so you need to use 'as.numeric.  Here's an
example:

library(nlme)
f1 <- lme(distance ~ age, data = Orthodont, random = ~1 + age|Subject)
summary(f1)
VarCorr(f1) # prints the values of interest:

# Subject = pdSymm(age)
#             Variance   StdDev    Corr
# (Intercept) 5.41508686 2.3270339 (Intr)
# age         0.05126947 0.2264276 -0.609
# Residual    1.71620459 1.3100399

# note returned values are character:

str(VarCorr(f1))

# 'VarCorr.lme' chr [1:3, 1:3] "5.41508686" "0.05126947" "1.71620459"
"2.3270339" ...
# - attr(*, "dimnames")=List of 2
# ..$ : chr [1:3] "(Intercept)" "age" "Residual"
#  ..$ : chr [1:3] "Variance" "StdDev" "Corr"
# - attr(*, "title")= chr "Subject = pdSymm(age)"

# thus to extract the estimated variance of the subject intercepts:

as.numeric(VarCorr(f1))[1]
# [1] 5.415087

And you can ignore the warning about NA values


hth,

Kingsford Jones



More information about the R-sig-ecology mailing list