r - lme4::lmer - 使用随机斜率时 if (any(bgrad < 0)) 出错

我第一次尝试在 R 中运行线性混合效果模型,使用 lme4 包中的 lmer 函数,我不断收到我不知道如何解释的错误。

现在,我得到了错误:

if (any(bgrad < 0)) { : 缺少 value 其中需要 TRUE/FALSE 时出错

当我试图在网上查找它的含义时,我读到它与 if 子句有关,但由于我没有编写代码,我不知道如何解决(甚至理解)这个问题。

我的模型如下所示:

lmer(accuracy ~ emotion1 + Age + (1|item) + 
     (1|id) + (1+emotion1|item) + (1+Age|id), data = lib4)

如果我不考虑随机斜坡,它会起作用,但我认为我需要它们?

简单解释一下,我想看看年龄和不同的情绪在多大程度上影响了对项目的判断准确性,同时我假设项目和个人也有自己的截距和斜率(有些项目更容易评估,有些个人更擅长评估;每个项目可能会受到情绪的不同影响,每个人会受到年龄的影响?)。如果我的模型没有反映这些想法或没有意义,也请告诉我!正如我所说,我是混合效果模型的新手。

我不知道这是否是您需要查看我的数据的问题,如果需要,我会将其发送给您。

回答1

您不必知道这一点,但错误发生在 https://github.com/lme4/lme4/blob/9c673edb76ae19165ffe0a45b375737bb02f1fc3/R/modular.R#L615(转到 https://github.com/lme4/lme4 并搜索对于“bgrad”)。

我以前没有见过这个特殊的错误(这令人印象深刻,因为我已经听说 lme4 错误已经有一段时间了)。

明显错误(抱歉)但易于修复的是您的随机效应规范 (1|item) + (1|id) + (1+emotion1|item) + (1+Age|id) 是多余的;随机斜率规范 (1+emotion1|item)(1+Age|id) 已经包含截距项(并且与 base-R [g]lm 公式不同,该程序包不够聪明,无法自动删除这些冗余项)。尝试在没有 (1|item)(1|id) 的情况下重写您的模型,看看是否可以解决问题。

https://github.com/lme4/lme4/issues/625 建议 lmer 在这些情况下应尝试检查/警告。

也就是说,我有兴趣查看可重现示例的数据,以便(希望)可以给出更有用的错误消息。

相似文章

r - 如何将 lme 函数应用于数据框的每一列?

我正在使用nlme包中的lme函数,并且很难将其应用于我的tibble的每一列。我可以使用单个列成功地“手动”运行它,但在尝试使用purrr::map时会失败。我觉得有什么东西就在我的鼻子底下,但我没...