【问题标题】:Why R plots Residuals vs Leverage instead of Residuals vs Factor Levels (ANOVA test & model with 'aov')为什么 R 绘制残差 vs 杠杆而不是残差 vs 因子水平(ANOVA 测试和带有“aov”的模型)
【发布时间】:2022-01-07 18:54:19
【问题描述】:

我正在分析一个数据集,其中包含新生婴儿的体重和他们母亲的一些信息,包括分类变量“smoke”——母亲是否吸烟。

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

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

其中变量“smoke”的值为 0(非吸烟者)和 1(吸烟者)。我使用 mutate 将其更改为适当的因子(其中包括奇偶校验),然后自行进行 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

既然“烟雾”是一个因素(据我所知)和一个分类变量,为什么按数字变量存在杠杆作用?如何解决这个问题并获得正确的情节?

提前感谢您的帮助!

【问题讨论】:

    标签: r anova


    【解决方案1】:

    没有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)
    

    这给出了这个情节:

    【讨论】:

    • 您好!谢谢你的提议。总的来说,它似乎有广泛的应用范围,所以我想我会使用它。我仍然想知道很难,如何获得此处(第 6 页)中介绍的通用情节:homepages.inf.ed.ac.uk/bwebb/statistics/ANOVA_in_R.pdf - 有什么想法吗?
    • 嗯,我不知道。当我从这些笔记中运行代码时,我得到了与笔记一样的残差与水平图,但不是你的数据......
    • 好的,通过查看代码:只有在有恒定杠杆的情况下,您才会得到该图,这会发生(仅?)每个组的数量相等。
    • 是的,你是对的——我对两个类别的一些数据做了一个测试集,两个类别的观察次数相同。最后一个图有效,这意味着它是残差与因子水平的图。非常感谢!
    猜你喜欢
    • 2020-11-10
    • 2016-12-18
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    相关资源
    最近更新 更多