使用 R 的 mtcars 数据集和 anova() 函数的新手问题。我的问题是如何使用 anova() 来选择最佳(嵌套)模型。以下是一些示例数据:
> anova(lm(mpg~disp,mtcars),lm(mpg~disp+wt,mtcars),lm(mpg~disp+wt+am,mtcars))
Analysis of Variance Table
Model 1: mpg ~ disp
Model 2: mpg ~ disp + wt
Model 3: mpg ~ disp + wt + am
Res.Df RSS Df Sum of Sq F Pr(>F)
1 30 317.16
2 29 246.68 1 70.476 8.0036 0.008535 **
3 28 246.56 1 0.126 0.0143 0.905548
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> anova(lm(mpg~disp,mtcars),lm(mpg~disp+wt,mtcars),lm(mpg~disp+wt+hp,mtcars))
Analysis of Variance Table
Model 1: mpg ~ disp
Model 2: mpg ~ disp + wt
Model 3: mpg ~ disp + wt + hp
Res.Df RSS Df Sum of Sq F Pr(>F)
1 30 317.16
2 29 246.68 1 70.476 10.1201 0.003571 **
3 28 194.99 1 51.692 7.4228 0.010971 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
我的理解是 anova() 比较残差平方和的减少以报告每个嵌套模型的相应 p 值,其中较低的 p 值意味着嵌套模型与第一个模型有更大的不同。
问题 1:为什么改变第三个回归变量的影响是由第二个巢模型产生的?也就是说,disp+wt
从第一个示例到第二个示例,模型的 p 值从 0.008535 变为 0.003571。(anova 的模型 2 分析是否使用模型 3 的数据???)
问题 2:由于第 3 个模型的Sum of Sq
值在第一个示例中要低得多(例如 0.126 对 51.692),我预计 p 值也会更低,但实际上它会增加(例如 0.905548 对 0.010971)。为什么?
问题 3:最终我试图理解,给定一个包含很多回归变量的数据集,如何使用 anova() 来找到最佳模型。任何一般的经验法则都值得赞赏。