R中的AIC()和extractAIC()有什么区别?


11

两者的R文档并没有太多说明。我从此链接可以得到的所有信息是,使用其中任何一个都可以。我不明白的是为什么他们不平等。

事实:R中的逐步回归函数step()使用extractAIC()

有趣的是,在R的“ mtcars”数据集上运行lm()模型和glm()“空”模型(仅截距)会得出AIC和的不同结果extractAIC()

> null.glm = glm(mtcars$mpg~1)
> null.lm = lm(mtcars$mpg~1)

> AIC(null.glm)
[1] 208.7555
> AIC(null.lm)
[1] 208.7555
> extractAIC(null.glm)
[1]   1.0000 208.7555
> extractAIC(null.lm)
[1]   1.0000 115.9434

鉴于上述两个模型相同,并且AIC()两者给出的结果相同,这很奇怪。

谁能在这个问题上有所启发?

Answers:


6

因此,这是对这两个功能的帮助(使用?AIC和?extractAIC)。

注意,仅对AIC定义一个加法常数,因为对数似然也是如此。这意味着您应该检查是否

extractAIC(full.modell) - extractAIC(null.modell)

AIC(full.modell) - AIC(null.modell)

给出相同的结果。只要它们确实起作用,这两种功能在所有实际目的上都是等效的。


2
我可能失去了一些东西,但我还是不明白,为什么extractAIC(null.lm) != AIC(null.lm)extractAIC(null.glm) == AIC(null.glm)即使null.lm是同一型号的null.glm。您能扩大一点答案吗?
smillig

2
@smillig extractAIC使用不同的lm拟合方法glm,即extractAIC.lmextractAIC.glm。您可以getAnywhere用来研究他们的代码。AIC两者使用相同的方法。
罗兰

我有几对模型(具有多个预测变量),它们的两个函数给出不同的结果。模型1:y = x1 + x2,模型2:y = z + x1 + x2 * z。extractAIC()给出了模型1低(负)值,而对于AIC模型2给出下(正)值
Maxim.K

1
@ Maxim.K您几乎没有提供有关所使用变量和模型类型的信息。如果您这样做了,并且这个问题有一些区别,那么可能值得将其发布为新问题。很难说,不知道细节。
Erik 2013年

@Erik我怀疑如果我说z是连续的并且x2是分类的(傻瓜化的),那么这是否值得。人们可能需要数据才能复制,但恐怕我无法发布它们。
Maxim.K 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.