R에서 선형 회귀의 AIC를 계산하려고 시도했지만 다음 AIC
과 같이 함수 를 사용하지 않았습니다 .
lm_mtcars <- lm(mpg ~ drat, mtcars)
nrow(mtcars)*(log((sum(lm_mtcars$residuals^2)/nrow(mtcars))))+(length(lm_mtcars$coefficients)*2)
[1] 97.98786
그러나 AIC
다른 값을 제공합니다.
AIC(lm_mtcars)
[1] 190.7999
누군가 내가 뭘 잘못하고 있는지 말해 줄래?
5
(아직 답을 확인하지 않고) : 가능성은 실제로 곱셈 상수까지만 정의되기 때문에 반드시 잘못하고있는 것은 아닙니다. 두 사람이 로그 우도를 계산하고 다른 수를 얻을 수 있습니다 (그러나 로그 우도의 차이는 동일 함).
—
Glen_b-복지 모니카
Hong Oois의 대답 은이 질문과 관련이 있다고 생각합니다. 함수가
—
COOLSerdash
AIC
사용 하는 공식 은입니다 -2*as.numeric(logLik(lm_mtcars))+2*(length(lm_mtcars$coefficients)+1)
.
luciano : 수식 @COOLSerdash의 "+1"은 분산 모수 항에서 발생합니다. 함수
—
Glen_b -Reinstate Monica
logLik
는 lm
모델의 경우 '모든 상수'를 포함 한다고 말합니다 . 그래서 log(2*pi)
어딘가에있을 것입니다
@Glen_b : 가능성이 곱셈 상수까지만 정의 된 이유는 무엇 입니까? 결국, 다른 분포 제품군 (예 : AIC 또는 Cox 테스트)에서 중첩되지 않은 모델을 비교할 때 해당 상수를 기억해야합니다.
—
Scortchi-Monica Monica 복원
@Scortchi 정의는 내 것이 아닙니다! RAFisher를 사용해야합니다. 처음부터 그런 식으로 생각합니다 (1921). 그것은 적어도 연속적인 경우에 여전히 그런 식으로 정의되어 있다는 것은 여기 에서 예를 들어 '보다 정확하게'문장의 시작 부분을 참조 하십시오 .
—
Glen_b-복지 주 모니카