如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。