0

我试图了解StepAIC(). 使用 时direction = 'backward',如果进一步删除条款不再降低模型 AIC,它会停止吗?示例如下:

fm<- lm(mpg ~ ., data = mtcars)
require(MASS)
fit_fm <- stepAIC(fm, direction = 'backward')
#The final step stopped at:
Step:  AIC=61.31
mpg ~ wt + qsec + am

       Df Sum of Sq RSS  AIC
<none>              169 61.3
- am    1      26.2 195 63.9
- qsec  1     109.0 278 75.2
- wt    1     183.3 353 82.8

这是否意味着删除任何术语 wt、qsec 或 am 根本不会降低模型 AIC(即所有 AIC=61.31)?

4

2 回答 2

2
       Df Sum of Sq RSS  AIC
<none>              169 61.3
- am    1      26.2 195 63.9
- qsec  1     109.0 278 75.2
- wt    1     183.3 353 82.8

如果您删除更多术语,此表将向您显示 AIC,该<none>行是当前模型。

如果保持模型不变,则删除的附加项为<none>,AIC 为 61.3。如果您删除这些术语(删除am,获得 63.9 的 AIC 等),则每行都会显示 AIC。所以你是对的,删除任何剩余的条款都会提高 AIC - 你是 AIC 的(本地)最低限度。

于 2021-01-20T14:24:36.403 回答
1

是的,这是正确的。您可以自己检查(第二个extractAIC()是 AIC):

extractAIC(fm_nowt <- update(fit_fm, . ~ . -wt))
## [1]  3.00000 82.79016
extractAIC(fm_noqsec <- update(fit_fm, . ~ . -qsec))
## [1]  3.00000 75.21711
extractAIC(fm_noam <- update(fit_fm, . ~ . -am))
## [1]  3.00000 63.90843

请注意,返回的值与基础 R 中的返回值extractAIC()不同,但模型 AIC 之间的差异(这是我们真正关心的)是相同的AIC()

 AIC(fm_nowt)- AIC(fit_fm)
[1] 21.48286
> extractAIC(fm_nowt)- extractAIC(fit_fm)
[1] -1.00000 21.48286
于 2021-01-20T14:23:01.673 回答