
[英]Graphs of the mixed effects model residuals using the ggplot2 function
[英]ggplot2 residuals with ezANOVA
我用ezANOVA运行了一种三向重复测量ANOVA。
anova_1<-ezANOVA(data = main_data, dv = .(rt), wid.(id),
within = .(A,B,C), type = 3, detailed = TRUE)
我正在尝试通过qqplot观察残差发生了什么,但是我不知道如何到达残差或者它们是否在那里。 使用我的LME模型,我只是从模型中提取它们
main_data$model_residuals <- as.numeric(residuals(model_1))
并绘制它们
residuals_qq<-ggplot(main_data, aes(sample = main_data$model_residuals)) +
stat_qq(color="black", alpha=1, size =2) +
geom_abline(intercept = mean(main_data$model_residuals), slope = sd(main_data$model_residuals))
我想使用ggplot,因为我想保持图形的一致性。
编辑
也许我不清楚我要做什么。 随着LME车型我可以简单地创建变量model_residuals
从残留在物体main_data data.frame
这则包含我ggplot绘制残差。 我想知道ezAnova中的残差是否可能有类似的东西,或者是否有办法让我的ANOVA掌握残差。
我在使用ezANOVA时遇到了同样的麻烦。 我寻求的解决方案是切换到ez.glm
(从afex
软件包中)。 ezANOVA
和ez.glm
包装了来自其他程序包的函数,因此您应该获得相同的结果。 对于您的示例,如下所示:
anova_1<-ez.glm("id", "rt", main_data, within=c("A","B","C"), return="full")
nice.anova(anova_1$Anova) # show the ANOVA table like ezANOVA does.
然后,您可以拉出lm对象并以通常的方式获取残差:
residuals(anova_1$lm)
希望能有所帮助。
编辑:进行一些更改,使其可以使用最新版本
anova_1<-aov_ez("id", "rt", main_data, within=c("A","B","C"))
print(m1)
print(m1$Anova)
summary(m1$Anova)
summary(m1)
然后,您可以拉出lm对象并以通常的方式获取残差:
residuals(anova_1$lm)
我知道一个很老的帖子,但是在使用ez
包对数据建模之后,可以使用ggplot
绘制残差,方法是使用以下函数:
proj(ez_outcome$aov)[[3]][, "Residuals"]
然后:
qplot(proj(ez_outcome$aov)[[3]][, "Residuals"])
希望能帮助到你。
也可能添加到旧帖子中,但是我也遇到了这个问题,因为这是搜索此问题时弹出的第一件事,我想我可能会添加如何解决它。
我发现,如果在ezANOVA设置中包含return_aov = TRUE
参数,则残差就在其中,但是ezANOVA将残差划分到它在每个main和交互作用效果中产生的结果列表中,类似于base aov()
作用在这种情况下,您为主体ID包含一个错误字词。
通过将残差函数映射到aov
中的这个aov
子列表 (而不是主输出)上,可以使用purrr将它们拉到自己的列表中。 因此,从问题示例中,它变为:
anova_1 <- ezANOVA(data = main_data, dv = .(rt), wid = .(id),
within = .(A,B,C), type = 3, detailed = TRUE, return_aov = TRUE)
ezanova_residuals <- purrr::map(anova_1$aov, residuals)
这将产生一个列表,其中每个条目都是ezANOVA模型的一部分用于效果和相互作用的残差,即$(Intercept)
, $id
, id:a
, id:b
, id:a:b
等。
我发现使用enframe和nest(将列表组件的长度可能不同)将它们缝成小块是非常有用的(因为列表组件的长度可能不同),可以很长的格式快速获取它们,然后可以对其进行绘制或测试:
ezanova_residuals_tbl <- enframe(ezanova_residuals) %>% unnest
hist(ezanova_residuals_tbl$value)
shapiro.test(ezanova_residuals_tbl$value)
我自己没有使用过,但是如果需要的话,映射思想也适用于coefficients
和fitted.values
函数,将它们从ezANOVA结果中拉出来。 它们可能以一些奇怪的格式出现,但是之后需要一些额外的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.