lme4::lmer我目前正在尝试按照本教程绘制函数的结果。我已经尝试了教程中的代码,它按预期工作。\n在教程中,在pred_dist绘图之前将一列添加到数据集中以用于拟合函数。当我用自己的数据尝试此操作时,出现以下错误:
Error: Problem with `mutate()` column `pred_dist`.\n\xe2\x84\xb9 `pred_dist = fitted(model0)`.\n\xe2\x84\xb9 `pred_dist` must be size 15 or 1, not 17192.\n\xe2\x84\xb9 The error occurred in group 1: sgroup = 578, group = 1.\nRun Code Online (Sandbox Code Playgroud)\n\n我的代码:
\n# Loaded libraries\nlibrary(dplyr)\nlibrary(ggplot2)\nlibrary(lme4)\nlibrary(lmerTest)\nlibrary(lattice)\n\n# My lmer model. myData is fairly \nmodel0 <- lmer(outcome ~ (1|group), data=myData, REML = FALSE)\nsummary(model0)\n\nmyData %>% \n # save predicted values\n mutate(pred_dist = fitted(model0)) \nRun Code Online (Sandbox Code Playgroud)\n我想了解的是:是什么导致了此错误消息,以及如何解决它?
\n根据bouncyballungroup()的评论,我在之前添加了\n mutate()。这适用于我的初始模型,但不适用于后续模型。\n我尝试了以下操作:
> model1 <- lmer(outcome ~ predictor + (1|group), myData, REML=FALSE) \n\n> plotVar$pred_dist = fitted(model1). \n\nError: Assigned data \'value\' must be compatible with existing data. \n\xe2\x9c\x96 Existing data has 17192 rows. \n\xe2\x9c\x96 Assigned data has 16794 rows. \n\xe2\x84\xb9 Only vectors of size 1 are recycled.\n\n> plotVar %>% ungroup(.) \n %>% mutate(pred_dist = fitted(model1)) \n\nError: Problem with \'mutate()\' column \'pred_dist\'. \n\xe2\x84\xb9 \'pred_dist = fitted(model1)\'. \n\xe2\x84\xb9 \'pred_dist\' must be size 17192 or 1, not 16794.\nRun Code Online (Sandbox Code Playgroud)\n
我强烈猜测这里发生了两种不同的事情:(1)分组(2)NA值。
让我们构建一个既分组又包含NA值的示例:
library(dplyr)\nlibrary(lme4)\nss <- sleepstudy |> group_by(Subject)\nss$Days[1:5] <- NA\n\nm0 <- lmer(Reaction ~ Days + (Days | Subject), ss)\nRun Code Online (Sandbox Code Playgroud)\n尝试一下原来的代码:
\nss |> mutate(pred = fitted(m0))\nRun Code Online (Sandbox Code Playgroud)\n\n\n\xe2\x84\xb9 的
\npred大小必须为 10 或 1,而不是 175。
\n\xe2\x84\xb9 组 1 中发生错误:主题 = 308。
尝试使用ungroup():
ss |> ungroup() |> mutate(pred = fitted(m0))\nRun Code Online (Sandbox Code Playgroud)\n\n\n\xe2\x84\xb9
\npred = fitted(m0)。
\n\xe2\x84\xb9 的pred大小必须为 180 或 1,而不是 175。
我们仍然收到错误,但请注意尺寸不同。
\n现在使用更新模型na.action = na.exclude(这可以在第一个模型中完成,或者可以通过设置来完成options(na.action = "na.exclude"):
m1 <- update(m0, na.action = na.exclude)\nss |> ungroup() |> mutate(pred = fitted(m1))\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
30451 次 |
| 最近记录: |