Eu tentei calcular o AIC de uma regressão linear em R, mas sem usar a AIC
função, assim:
lm_mtcars <- lm(mpg ~ drat, mtcars)
nrow(mtcars)*(log((sum(lm_mtcars$residuals^2)/nrow(mtcars))))+(length(lm_mtcars$coefficients)*2)
[1] 97.98786
No entanto, AIC
fornece um valor diferente:
AIC(lm_mtcars)
[1] 190.7999
Alguém poderia me dizer o que estou fazendo de errado?
r
aic
information-theory
luciano
fonte
fonte
AIC
usa é-2*as.numeric(logLik(lm_mtcars))+2*(length(lm_mtcars$coefficients)+1)
.logLik
diz que, paralm
modelos, inclui 'todas as constantes' ... então haverá umalog(2*pi)
em algum lugarRespostas:
Observe que a ajuda na funçãoσ2
logLik
em R diz que, para oslm
modelos, inclui 'todas as constantes' ... então haverá umalog(2*pi)
em algum lugar, além de outro termo constante para o expoente na probabilidade. Além disso, não se esqueça de contar o fato de que é um parâmetro.mas observe que, para um modelo com 1 variável independente, p = 3 (o coeficiente x, a constante e )σ2
O que significa que é assim que você obtém a resposta:
fonte
A2k−2logL L k nlogSrn+2(k−1) Sr n
AIC
função fornece , onde é a probabilidade & é o número de parâmetros estimados (incluindo a interceptação e a variação). Você está usando , onde é a soma residual dos quadrados, e é o tamanho da amostra. Estas formulações diferem por uma constante aditiva; contanto que você use a mesma fórmula e observe as diferenças na AIC entre os diferentes modelos em que as constantes se cancelam, isso não importa.fonte