从`lmermod`对象中提取结果

时间:2014-12-17 18:33:32

标签: r lme4

我想从lmermod对象

中提取一些结果
require(lme4)
(fm1 <- lmer(Yield ~ 1|Batch, Dyestuff))

这会产生

Linear mixed model fit by REML ['lmerMod']
Formula: Yield ~ 1 | Batch
   Data: Dyestuff
REML criterion at convergence: 319.6543
Random effects:
 Groups   Name        Std.Dev.
 Batch    (Intercept) 42.00   
 Residual             49.51   
Number of obs: 30, groups:  Batch, 6
Fixed Effects:
(Intercept)  
       1527 

特别是,我想提取2个随机效应的标准偏差,即42.00和49.51。我想可能有一个内置的方法来做到这一点,但我无法快速找到它,所以我认为我应该能够通过使用str(fm1)找到它,这产生了这个:

Formal class 'lmerMod' [package "lme4"] with 13 slots
  ..@ resp   :Reference class 'lmerResp' [package "lme4"] with 9 fields
  .. ..$ Ptr    :<externalptr> 
  .. ..$ mu     : num [1:30] 1510 1510 1510 1510 1510 ...
  .. ..$ offset : num [1:30] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ sqrtXwt: num [1:30] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ sqrtrwt: num [1:30] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ weights: num [1:30] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ wtres  : num [1:30] 35.1 -69.9 -69.9 10.1 70.1 ...
  .. ..$ y      : num [1:30] 1545 1440 1440 1520 1580 ...
  .. ..$ REML   : int 1
  .. ..and 26 methods, of which 14 are possibly relevant:
  .. ..  allInfo, copy#envRefClass, initialize, initialize#lmResp,
  .. ..  initializePtr, initializePtr#lmResp, objective, ptr, ptr#lmResp,
  .. ..  setOffset, setResp, setWeights, updateMu, wrss
  ..@ Gp     : int [1:2] 0 6
  ..@ call   : language lmer(formula = Yield ~ 1 | Batch, data = Dyestuff)
  ..@ frame  :'data.frame':     30 obs. of  2 variables:
  .. ..$ Yield: num [1:30] 1545 1440 1440 1520 1580 ...
  .. ..$ Batch: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 2 2 2 2 2 ...
  .. ..- attr(*, "terms")=Classes 'terms', 'formula' length 3 Yield ~ 1 + Batch
  .. .. .. ..- attr(*, "variables")= language list(Yield, Batch)
  .. .. .. ..- attr(*, "factors")= int [1:2, 1] 0 1
  .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. ..$ : chr [1:2] "Yield" "Batch"
  .. .. .. .. .. ..$ : chr "Batch"
  .. .. .. ..- attr(*, "term.labels")= chr "Batch"
  .. .. .. ..- attr(*, "order")= int 1
  .. .. .. ..- attr(*, "intercept")= int 1
  .. .. .. ..- attr(*, "response")= int 1
  .. .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. .. .. ..- attr(*, "predvars")= language list(Yield, Batch)
  .. .. .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "factor"
  .. .. .. .. ..- attr(*, "names")= chr [1:2] "Yield" "Batch"
  .. .. .. ..- attr(*, "predvars.fixed")= language list(Yield)
  .. ..- attr(*, "formula")=Class 'formula' length 3 Yield ~ 1 | Batch
  .. .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  ..@ flist  :List of 1
  .. ..$ Batch: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 2 2 2 2 2 ...
  .. ..- attr(*, "assign")= int 1
  ..@ cnms   :List of 1
  .. ..$ Batch: chr "(Intercept)"
  ..@ lower  : num 0
  ..@ theta  : num 0.848
  ..@ beta   : num 1527
  ..@ u      : num [1:6] -20.755 0.461 33.669 -27.212 66.877 ...
  ..@ devcomp:List of 2
  .. ..$ cmp : Named num [1:10] 9.15 1.88 61495.41 9590.84 71086.25 ...
  .. .. ..- attr(*, "names")= chr [1:10] "ldL2" "ldRX2" "wrss" "ussq" ...
  .. ..$ dims: Named int [1:12] 30 30 1 29 1 6 1 1 0 1 ...
  .. .. ..- attr(*, "names")= chr [1:12] "N" "n" "p" "nmp" ...
  ..@ pp     :Reference class 'merPredD' [package "lme4"] with 18 fields
  .. ..$ Lambdat:Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  .. .. .. ..@ i       : int [1:6] 0 1 2 3 4 5
  .. .. .. ..@ p       : int [1:7] 0 1 2 3 4 5 6
  .. .. .. ..@ Dim     : int [1:2] 6 6
  .. .. .. ..@ Dimnames:List of 2
  .. .. .. .. ..$ : NULL
  .. .. .. .. ..$ : NULL
  .. .. .. ..@ x       : num [1:6] 0.848 0.848 0.848 0.848 0.848 ...
  .. .. .. ..@ factors : list()
  .. ..$ LamtUt :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  .. .. .. ..@ i       : int [1:30] 0 0 0 0 0 1 1 1 1 1 ...
  .. .. .. ..@ p       : int [1:31] 0 1 2 3 4 5 6 7 8 9 ...
  .. .. .. ..@ Dim     : int [1:2] 6 30
  .. .. .. ..@ Dimnames:List of 2
  .. .. .. .. ..$ : NULL
  .. .. .. .. ..$ : NULL
  .. .. .. ..@ x       : num [1:30] 0.848 0.848 0.848 0.848 0.848 ...
  .. .. .. ..@ factors : list()
  .. ..$ Lind   : int [1:6] 1 1 1 1 1 1
  .. ..$ Ptr    :<externalptr> 
  .. ..$ RZX    : num [1:6, 1] 1.98 1.98 1.98 1.98 1.98 ...
  .. ..$ Ut     :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  .. .. .. ..@ i       : int [1:30] 0 0 0 0 0 1 1 1 1 1 ...
  .. .. .. ..@ p       : int [1:31] 0 1 2 3 4 5 6 7 8 9 ...
  .. .. .. ..@ Dim     : int [1:2] 6 30
  .. .. .. ..@ Dimnames:List of 2
  .. .. .. .. ..$ : chr [1:6] "A" "B" "C" "D" ...
  .. .. .. .. ..$ : NULL
  .. .. .. ..@ x       : num [1:30] 1 1 1 1 1 1 1 1 1 1 ...
  .. .. .. ..@ factors : list()
  .. ..$ Utr    : num [1:6] 6384 6481 6634 6354 6787 ...
  .. ..$ V      : num [1:30, 1] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ VtV    : num [1, 1] 30
  .. ..$ Vtr    : num 45825
  .. ..$ X      : num [1:30, 1] 1 1 1 1 1 1 1 1 1 1 ...
  .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. ..$ : chr [1:30] "1" "2" "3" "4" ...
  .. .. .. ..$ : chr "(Intercept)"
  .. .. ..- attr(*, "assign")= int 0
  .. ..$ Xwts   : num [1:30] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ Zt     :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  .. .. .. ..@ i       : int [1:30] 0 0 0 0 0 1 1 1 1 1 ...
  .. .. .. ..@ p       : int [1:31] 0 1 2 3 4 5 6 7 8 9 ...
  .. .. .. ..@ Dim     : int [1:2] 6 30
  .. .. .. ..@ Dimnames:List of 2
  .. .. .. .. ..$ : chr [1:6] "A" "B" "C" "D" ...
  .. .. .. .. ..$ : NULL
  .. .. .. ..@ x       : num [1:30] 1 1 1 1 1 1 1 1 1 1 ...
  .. .. .. ..@ factors : list()
  .. ..$ beta0  : num 0
  .. ..$ delb   : num 1527
  .. ..$ delu   : num [1:6] -20.755 0.461 33.669 -27.212 66.877 ...
  .. ..$ theta  : num 0.848
  .. ..$ u0     : num [1:6] 0 0 0 0 0 0
  .. ..and 42 methods, of which 30 are possibly relevant:
  .. ..  b, beta, CcNumer, copy#envRefClass, initialize, initializePtr,
  .. ..  installPars, L, ldL2, ldRX2, linPred, P, ptr, RX, RXdiag, RXi,
  .. ..  setBeta0, setDelb, setDelu, setTheta, solve, solveU, sqrL, u, unsc,
  .. ..  updateDecomp, updateL, updateLamtUt, updateRes, updateXwts
  ..@ optinfo:List of 7
  .. ..$ optimizer: chr "bobyqa"
  .. ..$ control  :List of 1
  .. .. ..$ iprint: int 0
  .. ..$ derivs   :List of 2
  .. .. ..$ gradient: num 1.61e-07
  .. .. ..$ Hessian : num [1, 1] 14.1
  .. ..$ conv     :List of 2
  .. .. ..$ opt : int 0
  .. .. ..$ lme4: list()
  .. ..$ feval    : int 16
  .. ..$ warnings : list()
  .. ..$ val      : num 0.848

......但这让我更加聪明。

1 个答案:

答案 0 :(得分:5)

lme4提供VarCorr用于提取方差和相关性组件:

varcor <- VarCorr(fm1)
as.data.frame(varcor)
#       grp        var1 var2    vcov   sdcor
#1    Batch (Intercept) <NA> 1764.05 42.0006
#2 Residual        <NA> <NA> 2451.25 49.5101