He intentado calcular el AIC de una regresión lineal en R pero sin usar la AIC
función, así:
lm_mtcars <- lm(mpg ~ drat, mtcars)
nrow(mtcars)*(log((sum(lm_mtcars$residuals^2)/nrow(mtcars))))+(length(lm_mtcars$coefficients)*2)
[1] 97.98786
Sin embargo, AIC
le da un valor diferente:
AIC(lm_mtcars)
[1] 190.7999
¿Alguien podría decirme qué estoy haciendo mal?
r
aic
information-theory
luciano
fuente
fuente
AIC
usa la función es-2*as.numeric(logLik(lm_mtcars))+2*(length(lm_mtcars$coefficients)+1)
.logLik
dice que para loslm
modelos incluye 'todas las constantes' ... por lo que habrá unlog(2*pi)
lugar allí en alguna parteRespuestas:
Tenga en cuenta que la ayuda sobre la funciónσ2
logLik
en R dice que para loslm
modelos incluye 'todas las constantes' ... por lo que habrá unlog(2*pi)
allí en algún lugar, así como otro término constante para el exponente en la probabilidad. Además, no puede olvidar contar el hecho de que es un parámetro.pero tenga en cuenta que para un modelo con 1 variable independiente, p = 3 (el coeficiente x, la constante y )σ2
Lo que significa que así es como obtienes su respuesta:
fuente
La2 k - 2logL , dónde L es la probabilidad y k is the number of estimated parameters (including the intercept, & the variance). You're using nlogSrn+2(k−1) , where Sr is the residual sum of squares, & n is the sample size. These formulæ differ by an additive constant; so long as you're using the same formula & looking at differences in AIC between different models where the constants cancel, it doesn't matter.
AIC
función dafuente