Ich habe versucht, den AIC einer linearen Regression in R zu berechnen, ohne die AIC
Funktion zu verwenden:
lm_mtcars <- lm(mpg ~ drat, mtcars)
nrow(mtcars)*(log((sum(lm_mtcars$residuals^2)/nrow(mtcars))))+(length(lm_mtcars$coefficients)*2)
[1] 97.98786
Allerdings AIC
gibt einen anderen Wert:
AIC(lm_mtcars)
[1] 190.7999
Kann mir jemand sagen, was ich falsch mache?
r
aic
information-theory
Luciano
quelle
quelle
AIC
verwendet, lautet-2*as.numeric(logLik(lm_mtcars))+2*(length(lm_mtcars$coefficients)+1)
.logLik
besagt, dass fürlm
Modelle 'alle Konstanten' enthalten sind. Es wird alsolog(2*pi)
irgendwo eine gebenAntworten:
Beachten Sie, dass die Hilfe zu der Funktionσ2
logLik
in R besagt, dass sie fürlm
Modelle 'alle Konstanten' enthält ... daher gibtlog(2*pi)
es irgendwo einen darin sowie einen weiteren konstanten Term für den Exponenten in der Wahrscheinlichkeit. Sie können auch nicht vergessen, die Tatsache zu zählen, dass ein Parameter ist.Beachten Sie jedoch, dass für ein Modell mit einer unabhängigen Variablen p = 3 ist (der x-Koeffizient, die Konstante und ).σ2
So erhalten Sie die Antwort:
quelle
Die2 k - 2 logL L k SRnnlogSrn+2(k−1) Sr n
AIC
Funktion gibt , wobei die Wahrscheinlichkeit und die Anzahl der geschätzten Parameter (einschließlich des Abschnitts und der Varianz) ist. Sie verwenden , wobei die Restsumme der Quadrate ist, & die Stichprobengröße. Diese Formeln unterscheiden sich durch eine additive Konstante; Solange Sie dieselbe Formel verwenden und die Unterschiede in der AIC zwischen verschiedenen Modellen untersuchen, bei denen sich die Konstanten aufheben, spielt dies keine Rolle.L k n log S rquelle