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

当我在不同模型(“虚拟”)上对相同数据使用 allEffects() 时,在固定效果中没有包含“sess”的术语,它工作得很好。

> 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)。我测试的科目之一只测试了一次,而不是像所有其他科目一样两次。这可能与错误有关吗?

对于我在这里做错了什么或我应该在哪里寻找解决方案的任何指示,我将不胜感激。我已经用谷歌搜索了错误消息但没有成功。关于 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

即使这不完整,我还是将其作为答案而不是评论发布,因为它很长并且包含很多代码......(我可以稍后返回并删除它......

到目前为止,底线是这不是/ GLMMglmer特定的问题,而是包含交互项(在本例中为sess:pcsess:Stim.cond)但没有主效应(sess,但并非总是错误的......这可能是为什么他们没有被effects包裹处理)。我会考虑联系包维护者 ( maintainer("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 回答