RのAIC()とextractAIC()の違いは何ですか?


11

どちらのRのドキュメントもあまり明らかにしていません。このリンクから得られることは、どちらを使用しても問題ないということです。私が得られないのは、なぜ彼らが等しくないのかです。

事実:Rのステップワイズ回帰関数はをstep()使用しextractAIC()ます。

興味深いことに、Rの 'mtcars'データセットでlm()モデルとglm()'null'モデル(切片のみ)を実行すると、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()同じ結果が得られることを考えると、奇妙です。

誰も問題にいくつかの光を投げることができますか?

回答:


6

したがって、これら2つの機能(?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.lmを使用しextractAIC.glmます。あなたはgetAnywhere彼らのコードを研究するために使用できます。AIC両方に同じ方法を使用します。
ローランド

両方の関数が異なる結果を与えるモデルのペア(複数の予測子を使用)があります。モデル1:y = x1 + x2、モデル2:y = z + x1 + x2 * z extractAIC()AICは、モデル2について低い(正)の値を与えながら、モデル1の下限(負の)値を与える
Maxim.K

1
@ Maxim.K使用される変数とモデルのタイプに関する情報はほとんど提供しません。この質問にいくつかの違いがある場合、新しい質問として投稿する価値があるかもしれません。詳細を知らずに言うのは難しい。
エリック

@Erik私は、zが連続的でx2がカテゴリカル(ダミー)であると言えば、それだけの価値があるとは思いません。再現するためにデータが必要になりますが、それらを公開することはできません。
マキシム.K
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.