当我尝试使用来自lme4的glmer()创建的GLMM(mpc7j)上的effects-package中的allEffects()时,我在R中得到以下错误的messgae:
> 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个级别的因子,指的是测试时间(重复测量,session1和session2)。我测试的一个科目只测试了一次,而不是像所有其他科目一样。这可能与错误有关吗?
我很感激任何关于我在这里做错了什么或者我应该寻找解决方案的指示。我已经用Google搜索了错误消息但没有成功。 allEffects()函数的R文档也没有帮助我。请帮帮忙?
编辑:当我尝试使用languageR的plotLMER.fnc()时,我收到此错误:
> plotmpc7j<-plotLMER.fnc(mpc7j)
log odds are back-transformed to probabilities
Fehler: Indizierung außerhalb der Grenzen
最后一行转换为“错误:指标超出范围”之类的内容。
答案 0 :(得分:1)
即使这不完整,我也会将其作为答案而非评论发布,因为它很长并且包含大量代码......(我可以稍后再删除它......
到目前为止,底线是,这不是glmer
/ GLMM特定的问题,而是包含交互术语的模型的问题(在这种情况下为sess:pc
和{{1没有主要影响(sess:Stim.cond
)(一般来说这样的模型很奇怪而且常常,但并不总是,错误......这可能就是为什么它们不由sess
包处理) 。我会考虑联系包维护者(effects
)......
使用正确的结构创建虚拟数据集:
maintainer("effects")
适合GLMM:
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)
现在尝试使用GLM的类似模型。
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
g2 <- glm(correct_response ~ pc * Stim.cond + sess:pc + sess:Stim.cond,
data=d7nowl, family=binomial)
try(allEffects(g2)) ## same error
给我们一个答案(我没有检查是否有意义)如果我们 添加allEffects
的主要效果或< / em>(正如原始问题中所指出的)取消与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
(内部效用函数)的内容,以查看逻辑出错的地方。