【发布时间】:2022-01-08 02:44:11
【问题描述】:
我目前正在尝试在this tutorial 之后绘制lme4::lmer 函数的结果。我已经尝试了教程中的代码,它按预期工作。
在本教程中,在绘图之前将一列 pred_dist 添加到拟合函数的数据集中。当我使用自己的数据尝试此操作时,出现以下错误:
Error: Problem with `mutate()` column `pred_dist`.
ℹ `pred_dist = fitted(model0)`.
ℹ `pred_dist` must be size 15 or 1, not 17192.
ℹ The error occurred in group 1: sgroup = 578, group = 1.
我的代码:
# Loaded libraries
library(dplyr)
library(ggplot2)
library(lme4)
library(lmerTest)
library(lattice)
# My lmer model. myData is fairly
model0 <- lmer(outcome ~ (1|group), data=myData, REML = FALSE)
summary(model0)
myData %>%
# save predicted values
mutate(pred_dist = fitted(model0))
我想了解的是:导致此错误消息的原因是什么,我该如何解决?
更新:
根据bouncyball 的评论,我添加了
ungroup() 在 mutate() 之前。这适用于我的初始模型,但不适用于后续模型。
我尝试了以下方法:
> model1 <- lmer(outcome ~ predictor + (1|group), myData, REML=FALSE)
> plotVar$pred_dist = fitted(model1).
Error: Assigned data 'value' must be compatible with existing data.
✖ Existing data has 17192 rows.
✖ Assigned data has 16794 rows.
ℹ Only vectors of size 1 are recycled.
> plotVar %>% ungroup(.)
%>% mutate(pred_dist = fitted(model1))
Error: Problem with 'mutate()' column 'pred_dist'.
ℹ 'pred_dist = fitted(model1)'.
ℹ 'pred_dist' must be size 17192 or 1, not 16794.
【问题讨论】:
-
最好这样做:
myData$pred_dist = fitted(model0) -
谢谢,成功了!你知道为什么使用
mutate()会产生错误吗? -
我认为
myData是一个分组数据框。如果你把ungroup()放在mutate调用之前会发生什么? -
我们有机会获得minimal reproducible example吗?
-
@bouncyball
ungroup()在我的第一个示例中工作,但两种解决方案都不适用于后续示例(请参阅“更新”)。 @BenBolker 我已经尝试尽可能减少它。我无法用较小的数据集重现错误,因为我不完全确定是什么导致了问题。这就是为什么我包含指向应该能够减少错误的示例数据集的链接。