Was ist der Unterschied zwischen AIC () und extractAIC () in R?

11

Die R-Dokumentation für beide gibt nicht viel Aufschluss. Alles, was ich von diesem Link bekommen kann, ist, dass es in Ordnung sein sollte, einen von beiden zu verwenden. Was ich nicht verstehe ist, warum sie nicht gleich sind.

Fakt: Die schrittweise Regressionsfunktion in R, step()verwendet extractAIC().

Interessanterweise führt das Ausführen eines lm()Modells und eines glm()Nullmodells (nur der Achsenabschnitt) für den Datensatz 'mtcars' von R zu unterschiedlichen Ergebnissen für AICund 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

Es ist seltsam, da beide oben genannten Modelle gleich sind und AIC()für beide die gleichen Ergebnisse liefern.

Kann jemand etwas Licht auf das Thema werfen?

Sudip Sinha
quelle

Antworten:

6

Entsprechend der Hilfe für diese beiden Funktionen (verwende? AIC und? ExtractAIC) wird dies erwartet.

Beachten Sie, dass der AIC nur bis zu einer additiven Konstante definiert ist, da dies auch für die Log-Wahrscheinlichkeit der Fall ist. Das heißt, Sie sollten prüfen, ob

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

und

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

Geben Sie das gleiche Ergebnis. Solange sie dies tun, sind beide Funktionen für alle praktischen Zwecke gleich.

Erik
quelle
2
Ich fehle wahrscheinlich etwas, aber ich verstehe immer noch nicht , warum extractAIC(null.lm) != AIC(null.lm)während extractAIC(null.glm) == AIC(null.glm)obwohl null.lmdas gleiche Modell wie null.glm. Könnten Sie Ihre Antwort ein wenig erweitern?
Smillig
2
@smillig extractAICverwendet verschiedene Methoden für lmAnpassungen und glmAnpassungen, dh extractAIC.lmund extractAIC.glm. Sie können verwenden getAnywhere, um ihren Code zu studieren. AICverwendet die gleiche Methode für beide.
Roland
Ich habe mehrere Modellpaare (mit mehreren Prädiktoren), für die beide Funktionen unterschiedliche Ergebnisse liefern. Modell 1: y = x1 + x2, Modell 2: y = z + x1 + x2 * z. extractAIC()gibt niedrigeren (negativen) Wert für Modell 1, während AIC niedrigeren (positiven) Wert für Modell 2 gibt.
Maxim.K
1
@ Maxim.K Sie geben wenig Auskunft über die Art der verwendeten Variablen und Modelle. Wenn Sie dies getan haben und es einige Unterschiede zu dieser Frage gibt, lohnt es sich möglicherweise, dies als neue Frage zu posten. Schwer zu sagen, ohne die Details zu kennen.
Erik
@Erik Ich bezweifle, dass es viel wert ist, wenn ich sage, dass z stetig und x2 kategorisch (verblüfft) ist. Man müsste die Daten reproduzieren und ich kann sie leider nicht veröffentlichen.
Maxim.K