StepAIC() 停止点

问题描述

我正在尝试了解 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)?

解决方法

       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。如果您删除这些术语,则每行都会显示 AIC(删除 am,获得 63.9 的 AIC,等等)。所以你是对的,删除任何剩余的条款都会提高 AIC - 您处于 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 中的 second 值是 AIC):

extractAIC()

请注意,AIC() 返回的值与基 R 中 AIC(fm_nowt)- AIC(fit_fm) [1] 21.48286 > extractAIC(fm_nowt)- extractAIC(fit_fm) [1] -1.00000 21.48286 返回的值不同,但是模型 AIC 之间的差异(这是我们真正关心的) 都一样:

A = P(1+r/n)^nt

A   =   final amount
P   =   initial principal balance
r   =   interest rate
n   =   number of times interest applied per time period
t   =   number of time periods elapsed