4

新しい lme4 パッケージ (現在の開発者バージョン) の新しい bootMer() 機能を使用したいと考えています。私は R を初めて使用し、その FUN 引数に対してどの関数を記述すればよいかわかりません。数値ベクトルが必要だと言っていますが、その関数が何を実行するのかわかりません。したがって、bootMer() にキャストされる混合モデル式があり、多数の複製があります。その外部関数が何をするのかわかりませんか?メソッドをブートストラップするためのテンプレートになるはずですか? bootMer にはブートストラップ メソッドが既に実装されていませんか? では、なぜ彼らは外部の「関心のある統計」を必要とするのでしょうか? そして、どの統計を使用すればよいでしょうか?

次の構文は適切ですか? R は、FUN が数値ベクトルでなければならないというエラーを生成し続けます。見積もりを「適合」から分離する方法がわかりません。そもそもそれを行う必要がありますか? その「楽しい」議論で迷っているとしか言えません。また、変数「Mixed5」を使用して混合モデルの glmer() 式を渡す必要があるのか​​ 、それともポインターと参照を渡す必要があるのか​​ わかりませんか?例を見ると、X (bootMer() の最初の引数は *lmer() オブジェクトです。*Mixed5 を書きたかったのですが、エラーが発生しました。

どうもありがとう。

私のコードは次のとおりです。

library(lme4)
library(boot)

(mixed5 <- glmer(DV ~ (Demo1 +Demo2 +Demo3 +Demo4 +Trt)^2 
                 + (1 | PatientID) + (0 + Trt | PatientID)
                 , family=binomial(logit), MixedModelData4))


FUN <- function(formula) {
  fit <- glmer(DV ~ (Demo1 +Demo2 +Demo3 +Demo4 +Trt)^2 
               + (1 | PatientID) + (0 + Trt | PatientID)
               , family=binomial(logit), MixedModelData4)
  return(coef(fit))
}

result <- bootMer(mixed5, FUN, nsim = 3, seed = NULL, use.u = FALSE,
        type = c("parametric"),
        verbose = T, .progress = "none", PBargs = list())

result
FUN
fit

そしてエラー:

Error in bootMer(mixed5, FUN, nsim = 3, seed = NULL, use.u = FALSE, type = c("parametric"),  : 
  bootMer currently only handles functions that return numeric vectors

-------------------------------------------------- - - - アップデート - - - - - - - - - - - - - - - - - - - - - - ----------

ベンが指示したようにコードを編集しました。コードは非常にうまく実行されましたが、SE とバイアスはすべてゼロでした。また、この出力から P 値を抽出する方法を知っていますか (私には奇妙です)。afex パッケージの mixed() を使用する必要がありますか?

私の修正されたコード:

library(lme4)
library(boot)

(mixed5 <- glmer(DV ~ (Demo1 +Demo2 +Demo3 +Demo4 +Trt)^2 
                + (0 + Trt | PatientID)
                 , family=binomial(logit), MixedModelData4))


FUN <- function(fit) {
  fit <- glmer(DV ~ (Demo1 +Demo2 +Demo3 +Demo4 +Trt)^2 
               + (1 | PatientID) + (0 + Trt | PatientID)
               , family=binomial(logit), MixedModelData4)
  return(fixef(fit))
}

result <- bootMer(mixed5, FUN, nsim = 3)

result

-------------------------------------------------- ------ アップデート 2 ------------------------------------------ -----------

次のことも試しましたが、コードは警告を生成し、結果は得られませんでした。

(mixed5 <- glmer(DV ~ Demo1 +Demo2 +Demo3 +Demo4 +Trt 
                 + (1 | PatientID) + (0 + Trt | PatientID)
                 , family=binomial(logit), MixedModelData4))

FUN <- function(mixed5) {
  return(fixef(mixed5))}

result <- bootMer(mixed5, FUN, nsim = 2)

警告メッセージ:

In bootMer(mixed5, FUN, nsim = 2) : some bootstrap runs failed (2/2)
> result

Call:
bootMer(x = mixed5, FUN = FUN, nsim = 2)

Bootstrap Statistics :
WARNING: All values of t1* are NA
WARNING: All values of t2* are NA
WARNING: All values of t3* are NA
WARNING: All values of t4* are NA
WARNING: All values of t5* are NA
WARNING: All values of t6* are NA

-------------------------------------------------- ------ 更新 3 ------------------------------------------ -----------

このコードも警告を生成しました:

FUN <- function(fit) {
  return(fixef(fit))}

result <- bootMer(mixed5, FUN, nsim = 2)

警告と結果:

Warning message:
In bootMer(mixed5, FUN, nsim = 2) : some bootstrap runs failed (2/2)
> result

Call:
bootMer(x = mixed5, FUN = FUN, nsim = 2)

Bootstrap Statistics :
WARNING: All values of t1* are NA
WARNING: All values of t2* are NA
WARNING: All values of t3* are NA
WARNING: All values of t4* are NA
WARNING: All values of t5* are NA
WARNING: All values of t6* are NA
4

2 に答える 2

10

ここには基本的に 2 つの (単純な) 混乱があります。

  • 1 つ目はcoef()(行列のリストを返す) とfixef()(固定効果係数のベクトルを返す) の間fixef()ですc(fixef(mixed),unlist(VarCorr(mixed)))
  • 2つ目はFUN、適合モデルオブジェクトを入力として受け取る必要があることです...

例えば:

library(lme4)
library(boot)

mixed <- glmer(incidence/size ~ period + (1|herd),
               weights=size, data=cbpp, family=binomial)

FUN <- function(fit) {
    return(fixef(fit))
}

result <- bootMer(mixed, FUN, nsim = 3)

result

## Call:
## bootMer(x = mixed, FUN = FUN, nsim = 3)
## Bootstrap Statistics :
##      original      bias    std. error
## t1* -1.398343 -0.20084060  0.09157886
## t2* -0.991925  0.02597136  0.18432336
## t3* -1.128216 -0.03456143  0.05967291
## t4* -1.579745 -0.08249495  0.38272580
## 
于 2013-08-26T13:22:33.050 に答える
3

これは、ここで問題として報告したのと同じ問題である可能性があります。少なくとも、同じ役に立たないエラーメッセージが表示され、私も時間がかかりました.

これは、データに欠落があることを意味し、lmer は無視しますが、bootMer を強制終了します。

試す:

(mixed5 <- glmer(DV ~ (Demo1 +Demo2 +Demo3 +Demo4 +Trt)^2 
                 + (1 | PatientID) + (0 + Trt | PatientID)
                 , family=binomial(logit), na.omit(MixedModelData4[,c('DV','Demo1','Demo2','Demo3','Trt','PatientId')])))
于 2013-12-04T16:54:23.970 に答える