我正在分析一组关于新生儿体重的数据,以及关于他们母亲的一些信息,包括一个明确的变量“吸烟”--无论母亲是否吸烟。
我做了一个aov测试,并想用它的帮助绘制一个ANOVA模型的诊断图。我希望得到四个情节,包括一个‘残差对因子水平’的绘图。相反,我得到了一个“残差与杠杆”的图形,就好像我的分类变量是数字变量一样。
您可以在这里找到数据集:https://drive.google.com/file/d/1VwiAHdYZF2BrGZZ875GGdkyamKMgxmGU/view?usp=sharing
其中变量“烟雾”的值为0(非吸烟者)和1(吸烟者)。我使用变异将其转换为一个适当的因素(比如奇偶),然后自己进行aov测试,并试图绘制结果,以验证假设。下面您可以找到我的代码:
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))在第四个情节中,我得到的结果是:

我试着检查“吸烟”是否是我想要的一个因素,就像这样:
> head(babies$smoke)
[1] non smoker non smoker smoker non smoker smoker non smoker
Levels: non smoker smoker既然‘烟雾’是一个因素(正如我所理解的)和一个范畴变量,为什么有杠杆作为每一个数字变量?如何解决这个问题并找到合适的情节?
谢谢你提前提供帮助!
发布于 2022-01-07 19:33:57
没有plot.aov方法,所以您得到了plot.lm方法(因为aov(babies$bwt ~ babies$smoke)类将是c("aov", "lm"))。
如果您想为"aov"对象绘制其他内容,请编写一个函数plot.aov来完成它。例如,
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")
}
}然后
plot(aov(babies$bwt ~ babies$smoke))将绘制前3幅plot.lm图,然后根据模型中的因子绘制剩余图。(如果有其他因素,它会处理每一个因素。)我得到了

或者,您可以使用termplot函数。
termplot(aov(babies$bwt ~ babies$smoke), partial.resid=TRUE)这给出了这个情节:

https://stackoverflow.com/questions/70625885
复制相似问题