阶跃函数匹配全模型AIC

Posted

技术标签:

【中文标题】阶跃函数匹配全模型AIC【英文标题】:step function matching AIC of full model 【发布时间】:2018-02-14 07:09:09 【问题描述】:

不应该

AIC(full) = 275.93

当 step() 函数以低于 -9.86 的完整模型运行时匹配 AIC 的输出

Start:  AIC=-9.86
y ~ x + x2

       Df Sum of Sq    RSS      AIC
- x2    1   0.03672 85.372 -11.8147
- x     1   1.03869 86.374 -10.6479
<none>              85.336  -9.8578

Step:  AIC=-11.81
y ~ x

       Df Sum of Sq    RSS     AIC
- x     1     1.004 86.376 -12.646
<none>              85.372 -11.815

Step:  AIC=-12.65
y ~ 1


Call:
lm(formula = y ~ 1, data = data)

Coefficients:
(Intercept)  
   -0.03719  

这里是完整的代码:

set.seed(101)
y = rnorm(100)
x = rnorm(100)
x2 = rnorm(100)
data = data.frame(y = y, x = x, x2 = x2)
null = lm(y~1, data = data)
full = lm(y~x+x2, data = data)
#step(null, scope= list(lower = null, upper = full) , direction="backward", trace = TRUE)
step(full, direction="backward", trace = TRUE)
AIC(full)

【问题讨论】:

【参考方案1】:

您需要extractAIC 而不是AIC

extractAIC(lm(y~x+x2, data = data), scale=0)
#OR
#extractAIC(full, scale=0)

如果您参考文档?AIC?extractAIC,它清楚地说明了

对数似然和因此 AIC/BIC 仅定义为 加法常数。通常使用不同的常数 出于不同的目的,因此 extractAIC 和 AIC 可能会给出不同的 值(对于 "lm" 类的模型,请参阅 extractAIC 的帮助)。

希望这会有所帮助!

【讨论】:

以上是关于阶跃函数匹配全模型AIC的主要内容,如果未能解决你的问题,请参考以下文章

模型选择的方法:AIC,k-折交叉验证

赤池信息准则AIC,BIC

模型选择的几种方法--AIC,BIC,HQ准则

R 上 nls 上的 AIC

在 R 中对 ARIMA AIC 进行排序

R语言时间序列分析-根据aic值选择arima模型