首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么R绘制残差与杠杆,而不是残差与因子水平(ANOVA检验与aov模型)

为什么R绘制残差与杠杆,而不是残差与因子水平(ANOVA检验与aov模型)
EN

Stack Overflow用户
提问于 2022-01-07 18:54:19
回答 1查看 357关注 0票数 0

我正在分析一组关于新生儿体重的数据,以及关于他们母亲的一些信息,包括一个明确的变量“吸烟”--无论母亲是否吸烟。

我做了一个aov测试,并想用它的帮助绘制一个ANOVA模型的诊断图。我希望得到四个情节,包括一个‘残差对因子水平’的绘图。相反,我得到了一个“残差与杠杆”的图形,就好像我的分类变量是数字变量一样。

您可以在这里找到数据集:https://drive.google.com/file/d/1VwiAHdYZF2BrGZZ875GGdkyamKMgxmGU/view?usp=sharing

其中变量“烟雾”的值为0(非吸烟者)和1(吸烟者)。我使用变异将其转换为一个适当的因素(比如奇偶),然后自己进行aov测试,并试图绘制结果,以验证假设。下面您可以找到我的代码:

代码语言:javascript
复制
babies <- read.csv("babies.csv")
babies <- babies %>% 
mutate(parity = factor(parity, 
                     levels = c(0, 1), 
                     labels = c("not firstborn", "firstborn"))) %>% 
mutate(smoke = factor(smoke, 
                    levels = c(0, 1), 
                    labels = c("non smoker", "smoker")))

model6 <- aov(babies$bwt ~ babies$smoke)
par(mfrow = c(2,2))
plot(aov(babies$bwt ~ babies$smoke))

在第四个情节中,我得到的结果是:

我试着检查“吸烟”是否是我想要的一个因素,就像这样:

代码语言:javascript
复制
> head(babies$smoke)
[1] non smoker non smoker smoker     non smoker smoker     non smoker
Levels: non smoker smoker

既然‘烟雾’是一个因素(正如我所理解的)和一个范畴变量,为什么有杠杆作为每一个数字变量?如何解决这个问题并找到合适的情节?

谢谢你提前提供帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-07 19:33:57

没有plot.aov方法,所以您得到了plot.lm方法(因为aov(babies$bwt ~ babies$smoke)类将是c("aov", "lm"))。

如果您想为"aov"对象绘制其他内容,请编写一个函数plot.aov来完成它。例如,

代码语言:javascript
复制
plot.aov <- function(x, which = 1:3, ...) {
  NextMethod(x, which = which, ...)
  for (f in names(x$xlevels)) {
    xvar <- x$model[, f]
    plot(xvar, residuals(x), xlab = f, ylab = "Residuals")
  }
}

然后

代码语言:javascript
复制
plot(aov(babies$bwt ~ babies$smoke))

将绘制前3幅plot.lm图,然后根据模型中的因子绘制剩余图。(如果有其他因素,它会处理每一个因素。)我得到了

或者,您可以使用termplot函数。

代码语言:javascript
复制
termplot(aov(babies$bwt ~ babies$smoke), partial.resid=TRUE)

这给出了这个情节:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70625885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档