繁体   English   中英

使用ezANOVA的ggplot2残差

[英]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软件包中)。 ezANOVAez.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)$idid:aid:bid:a:b等。

我发现使用enframe和nest(将列表组件的长度可能不同)将它们缝成小块是非常有用的(因为列表组件的长度可能不同),可以很长的格式快速获取它们,然后可以对其进行绘制或测试:

ezanova_residuals_tbl <- enframe(ezanova_residuals) %>% unnest

hist(ezanova_residuals_tbl$value)

shapiro.test(ezanova_residuals_tbl$value)

我自己没有使用过,但是如果需要的话,映射思想也适用于coefficientsfitted.values函数,将它们从ezANOVA结果中拉出来。 它们可能以一些奇怪的格式出现,但是之后需要一些额外的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM