0

作業データは次のようになります。

set.seed(1234)
df <- data.frame(y = rnorm(1:30), 
                 fac1 = as.factor(sample(c("A","B","C","D","E"),30, replace = T)),
                 fac2 = as.factor(sample(c("NY","NC","CA"),30,replace = T)),
                 x = rnorm(1:30))

モデルは次のlmeように適合されます。

library(lme4)
mixed <- lmer(y ~ x + (1|fac1) + (1|fac2), data = df)

以前bootMerはパラメトリック ブートストラップを実行していましたが、固定効果とランダム効果の係数 (切片) と SE を正常に取得できました。

mixed_boot_sum <- function(data){s <- sigma(data)
c(beta = getME(data, "fixef"), theta = getME(data, "theta"), sigma = s)}

mixed_boot <- bootMer(mixed, FUN = mixed_boot_sum, nsim = 100, type = "parametric", use.u = FALSE)

私の最初の質問は、ブートストラップの結果から 2 つのランダム効果の個々のレベルの係数 (勾配) を取得する方法mixed_bootですか?

パッケージの関数をmixed使用してモデルから係数(勾配)を抽出しても問題ありません。以下を参照してください。augmentbroom

library(broom)
mixed.coef <- augment(mixed, df)

ただし、クラスオブジェクトbroomは扱えないようです。boot上記の関数を で直接使用することはできませんmixed_boot

mixed_boot_sumまた、追加して を変更しようとしましたmmList(これが私が探しているものだと思いました) が、R は次のように不平を言います:</p>

Error in bootMer(mixed, FUN = mixed_boot_sum, nsim = 100, type = "parametric",  : 
  bootMer currently only handles functions that return numeric vectors

また、指定することで固定効果と変量効果の両方のCIを取得することは可能FUNですか?

現在、自分のニーズを満たすための の正しい仕様について非常に混乱してFUNいます。私の質問に関する助けをいただければ幸いです。

4

1 に答える 1

1

私の最初の質問は、ブートストラップの結果 mixed_boot から 2 つのランダム効果の個々のレベルの係数 (勾配) を取得する方法です。

「個々のレベルの係数(勾配)」の意味がわかりません。すべての観測値broom::augment(mixed, df)の予測 (残差など) を返します。各レベルで予測された係数が必要な場合は、試してみます

mixed_boot_coefs <- function(fit){
   unlist(coef(fit))
}

元のモデルの場合

mixed_boot_coefs(mixed)
## fac1.(Intercept)1 fac1.(Intercept)2 fac1.(Intercept)3 fac1.(Intercept)4 
##        -0.4973925        -0.1210432        -0.3260958         0.2645979 
## fac1.(Intercept)5           fac1.x1           fac1.x2           fac1.x3 
##        -0.6288728         0.2187408         0.2187408         0.2187408 
##           fac1.x4           fac1.x5 fac2.(Intercept)1 fac2.(Intercept)2 
##         0.2187408         0.2187408        -0.2617613        -0.2617613 
##  ...

結果のオブジェクトにもっと明確な名前を付けたい場合は、次を使用できます。

flatten <- function(cc) setNames(unlist(cc),
                                outer(rownames(cc),colnames(cc),
                                      function(x,y) paste0(y,x)))

mixed_boot_coefs <- function(fit){
   unlist(lapply(coef(fit),flatten))
}

bootMer/ confint/boot::boot.ciこれらの関数を実行すると、これらの値のそれぞれについて信頼区間が得られます (モデルは切片のみのランダムな変動を想定しているため、すべての勾配がグループ間で同一であることに注意してください)。言い換えると、あてはめたモデルから抽出する方法を知っている情報 (条件付きモード/BLUP [ ]、グループ化変数の各レベルの予測切片と勾配 [ ]、パラメーター推定値 [ 、]、変量効果分散 [ ]、特定の条件下での予測 [ ] ...) は、その構造を単純な数値ベクトルに平坦化できる限り、の引数で使用できます。facW.xZranefcoeffixefgetMEVarCorrpredictbootMerFUN

于 2016-09-06T23:45:33.847 に答える