3

glmer関数でシミュレーションを行っています。シミュレーションごとに推定値をデータベースに抽出しますが、シミュレートされたデータが適切に収束したかどうかを示す変数も必要です。(たとえば、特異収束、偽収束などの警告が表示されますが、推定値はとにかく与えられます)。

私は試します

assign("last.warning", NULL, envir = baseenv()) # clear the previous warning
mod1=glmer(y~x+(1+x|study), family="binomial", data=test1)
warningss1=ifelse(length(warnings())>0, "yes", "no"); warningss1

たとえそれが発散していても、それは常に私を返します`

4

2 に答える 2

5

いずれにしても、警告の一般的なメカニズムに頭をぶつけるつもりはありません。警告ログをゼロにしたりリセットしたりする方法はありません。かなり効果的に隠されています。代わりにオブジェクトを見て、その名前を とgm1すると、収束に失敗します。(収束エラーが発生するまで、サンプル サイズを縮小しました。):

    gm1@optinfo$conv$lme4$messages
#[1] "Model failed to converge with max|grad| = 0.10941 (tol = 0.001, component 5)"
#[2] " Hessian is numerically singular: parameters are not uniquely determined"   

any( grepl("failed to converge", gm1@optinfo$conv$lme4$messages) )
#[1] TRUE

#with a convergent run:
> any( grepl("failed to converge", gm1@optinfo$conv$lme4$messages) )
#[1] FALSE 
>   gm1@optinfo$conv$lme4$messages
#NULL
于 2015-03-24T06:12:01.403 に答える