2

lme4 の glmer() で作成された GLMM (mpc7j) でエフェクト パッケージの allEffects() を使用しようとすると、R で次のエラー メッセージが表示されます。

> mpc7j<- glmer(correct_response ~ pc * Stim.cond + sess:pc + sess:Stim.cond +
                (1|item.no) + (1|id), data=d7nowl, family=binomial)

> allEffects(mpc7j)
Error in eval(expr, envir, enclos) : Object 'sess' not found

固定効果に「sess」を含む用語を使用せずに、同じデータの別のモデル (「ダミー」) で allEffects() を使用すると、問題なく動作します。

> dummy<- glmer(correct_response ~ pc * Stim.cond + (1|item.no) + (1|id),
                data=d7nowl, family=binomial)

str(mpc7j) を使用してモデルをチェックしましたが、コントラスト処理グループの要素として「sess」が含まれているようです。

.. .. ..$ pc       : chr "contr.treatment"
.. .. ..$ Stim.cond: chr "contr.treatment"
.. .. ..$ sess     : chr "contr.treatment"

「sess」は 2 つのレベルを持つ要因であり、テストの時間を指します (反復測定、セッション 1 とセッション 2)。私がテストした科目の 1 つは、他のすべての科目のように 2 回ではなく、1 回だけテストされました。それはエラーと関係がありますか?

ここで私が間違っていること、または解決策を探すべき場所についての指針をいただければ幸いです。エラーメッセージをグーグルで検索しましたが、成功しませんでした。allEffects() 関数に関する R のドキュメントも役に立ちませんでした。助けてください?

編集: languageR から plotLMER.fnc() を使用しようとすると、次のエラーが発生します。

> plotmpc7j<-plotLMER.fnc(mpc7j)
log odds are back-transformed to probabilities
Fehler: Indizierung außerhalb der Grenzen

最後の行は、「エラー: 範囲外のインデックス」のようなものに変換されます。

4

1 に答える 1

1

これは不完全ですが、長くて多くのコードが含まれているため、コメントではなく回答として投稿しています...(後で戻って削除できます...

要するに、これまでのところ、これはglmer/GLMM 固有の問題ではなく、主効果 ( ) のない相互作用項 (この場合はsess:pcと) を含むモデルの問題です(一般に、そのようなモデルは奇妙で、しばしば、常にではありませんが、間違っています...パッケージで処理されないのはそのためかもしれません)。パッケージのメンテナー ( ) に連絡することを検討します...sess:Stim.condsesseffectsmaintainer("effects")

正しい構造のダミー データ セットを作成します。

d7nowl <- expand.grid(pc=factor(LETTERS[1:2]),
                      Stim.cond=factor(letters[1:2]),
                      sess=factor(1:2),
                      item.no=factor(1:10),id=factor(1:10))
d7nowl$correct_response <- rbinom(nrow(d7nowl),size=1,prob=0.5)

GLMM を合わせる:

g1 <- glmer(correct_response ~ pc * Stim.cond + sess:pc + sess:Stim.cond +
            (1|item.no) + (1|id), data=d7nowl, family=binomial)

## reproduce error
try(allEffects(g1)) 
## Error in eval(expr, envir, enclos) : object 'sess' not found

次に、GLM で同様のモデルを試してください。

g2 <- glm(correct_response ~ pc * Stim.cond + sess:pc + sess:Stim.cond,
            data=d7nowl, family=binomial)    
try(allEffects(g2)) ## same error

allEffectsの主な効果を追加するsess (元の質問で指摘したように) との相互作用を取り出すと、答えが得られます(意味があるかどうかは確認していません) sess

g3 <- update(g2,.~.+sess)
try(allEffects(g3)) ## OK

g4 <- update(g2,.~.-sess:pc-sess:Stim.cond)
try(allEffects(g4)) ## OK

さらに単純化しようとしてallEffectsも壊れますが、別のエラー メッセージが表示されます。

g5 <- glm(correct_response ~ pc + sess:pc, data=d7nowl, family=binomial)
try(allEffects(g5))
## Error in mod.matrix[, components] : subscript out of bounds

effects:::analyze.model何がうまくいかないのかを正確に理解するには、 (内部ユーティリティ関数)の根幹を掘り下げて、ロジックがどこでうまくいかないかを確認する必要があります。

于 2012-07-05T18:14:50.427 に答える