4

mer呼び出されて作成されたオブジェクトがありますlmer()

でランダム効果を取得できますが、ランダム効果ranef()ごとに対応する数の観測値が必要です-それを行う簡単な方法はありますか?

追加情報:

私は上記で自分自身を完全に明確にしなかったかもしれません。たとえば、患者が病院内にクラスター化され、病院のランダム切片が含まれる単純な2レベルのモデルがある場合、各病院内の患者数ranef() とともに、各病院のランダム効果を抽出したいと思います。現時点では、

ranef(fullmodel)[[1]]

これは私に次のようなものを与えます:

     (Intercept)
ADE -0.108195883
BEJ -0.005761677
CIS  0.124129426
CMH  0.270879048
CSI  0.285344837
CUL  0.189308979

私は次のようなものを手に入れたいです:

     (Intercept)  n
ADE -0.108195883  77
BEJ -0.005761677  171
CIS  0.124129426  201
CMH  0.270879048  39
CSI  0.285344837  171
CUL  0.189308979  131

これを行うために、私は使用しています

fullmodel <- glmer(.....+(1|hospital), data=dt1)

freqs <- as.data.frame(table(dt1$hospital))
freqs <- freqs[foo$Freq>0,]

そして、cbindこれをからの結果にranef(fullmodel)[[1]]

ただし、これは洗練されておらず、エラーが発生しやすいようです。

4

2 に答える 2

6

ranefグループ化因子に対応する行列のリストを返します。各行列の行はランダム効果の観測値(因子レベル)に対応し、列はランダム効果変数(切片、勾配など)に対応します。したがって、観測数を取得する最も簡単な方法は次のとおりです。

sapply(ranef(model),nrow)
于 2012-11-21T13:04:57.830 に答える
3

このコマンドは、ランダム因子レベルの頻度とともにランダム効果を返します。

lapply(names(ranef(model)),
       function(x) cbind(ranef(model)[[x]], table(model.frame(model)[[x]])))
于 2012-11-22T13:10:03.177 に答える