0

I am trying to extract individual elements from the random effects table contained within the object created by the summary call of a mixed-effects model. Specifically I want to extract each of the level-2 random effects.

Toy data:

set.seed(1234)
score <- c(rnorm(8, 20, 3), rnorm(8, 35, 5))
rep <- rep(c(0,1,2,3), each = 8)
group <- rep(0:1, times = 16)
id <- factor(rep(1:8, times = 4))

df <- data.frame(id, group, rep, score)

Now create a model

require(nlme)

modelLME <- summary(lme(score ~ group*rep, data = df, random = ~ rep|id))

modelLME

When we call it we get the output

Linear mixed-effects model fit by REML
 Data: df 
       AIC      BIC    logLik
  219.6569 230.3146 -101.8285

Random effects:
 Formula: ~rep | id
 Structure: General positive-definite, Log-Cholesky parametrization
            StdDev       Corr  
(Intercept) 2.664083e-04 (Intr)
rep         2.484345e-05 0     
Residual    7.476621e+00       

Fixed effects: score ~ group * rep 
                Value Std.Error DF   t-value p-value
(Intercept) 22.624455  3.127695 22  7.233587  0.0000
group       -1.373324  4.423229  6 -0.310480  0.7667
rep          2.825635  1.671823 22  1.690152  0.1051
group:rep    0.007129  2.364315 22  0.003015  0.9976
 Correlation: 
          (Intr) group  rep   
group     -0.707              
rep       -0.802  0.567       
group:rep  0.567 -0.802 -0.707

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-1.86631781 -0.74498367  0.03515508  0.76672652  1.91896578 

Number of Observations: 32
Number of Groups: 8 

Now I can extract the residuals from the random effects table above via

modelLME$sigma

But I can't find the values in the (Intercept) and rep rows of the StdDev column of the random effects table in this output (2.664083e-04 and 2.484345e-05 respectively) It must be there somewhere and I looked via searching str(modelLME) but I can't find it.

llewmills
  • 2,959
  • 3
  • 31
  • 58

1 Answers1

0

Do you want something like this?

library(nlme)
library(broom)

modelLME = lme(score ~ group*rep, data = df, random = ~ rep|id)
tidy(modelLME)
bramtayl
  • 4,004
  • 2
  • 11
  • 18
  • Hi @bramtayl, thank you for the answer but the answer I was looking for was in the duplicate question spotted by @beetroot. The `VarCorr` function in both `nlme` and `lme4` gives you the entire residuals table and then you can used the `[,]` subsetter to extract the element you need. – llewmills May 06 '16 at 08:57