他の答えのいくつかは実行可能ですが、最良の答えは、このために設計されたアクセサメソッドを使用することであると主張します- (これは、の前身であるパッケージVarCorr
と同じです)。lme4
nlme
の最近のバージョンlme4
(バージョン 1.1-7、ただし、以下のすべてはおそらくバージョン >= 1.0 に適用可能)のUPDATEVarCorr
は、以前よりも柔軟であり、適合したモデル オブジェクト内で釣りをすることに頼ることなく、必要なすべてを実行する必要があります。
library(lme4)
study <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy)
VarCorr(study)
## Groups Name Std.Dev.
## Subject (Intercept) 37.124
## Residual 30.991
デフォルトでVarCorr()
は標準偏差が出力されますが、必要に応じて代わりに分散を取得できます。
print(VarCorr(study),comp="Variance")
## Groups Name Variance
## Subject (Intercept) 1378.18
## Residual 960.46
(comp=c("Variance","Std.Dev.")
両方を印刷します)。
柔軟性を高めるために、as.data.frame
メソッドを使用してオブジェクトを変換できVarCorr
ます。これにより、グループ化変数、効果変数、および分散/共分散または標準偏差/相関が得られます。
as.data.frame(VarCorr(study))
## grp var1 var2 vcov sdcor
## 1 Subject (Intercept) <NA> 1378.1785 37.12383
## 2 Residual <NA> <NA> 960.4566 30.99123
最後に、VarCorr
オブジェクトの生の形式 (必要がなければ、おそらくいじる必要はありません) は、標準偏差と相関をエンコードする追加の (冗長な) 情報を含む分散共分散行列のリストです。属性 ( "sc"
) は残差標準偏差を示し、モデルに推定スケール パラメーターがあるかどうかを指定します ( "useSc"
)。
unclass(VarCorr(fm1))
## $Subject
## (Intercept) Days
## (Intercept) 612.089748 9.604335
## Days 9.604335 35.071662
## attr(,"stddev")
## (Intercept) Days
## 24.740448 5.922133
## attr(,"correlation")
## (Intercept) Days
## (Intercept) 1.00000000 0.06555134
## Days 0.06555134 1.00000000
##
## attr(,"sc")
## [1] 25.59182
## attr(,"useSc")
## [1] TRUE
##