Я пытаюсь понять результаты AIC/BIC в R. По какой-то причине R добавляет 1 к числу оцениваемых параметров. Следовательно, R использует другую формулу, чем 2 * p - 2 * logLik
(в гауссовском случае logLik
- остаточная сумма квадратов). Фактически он использует: 2 * (p + 1) - 2 * logLik
.logLik.lm(): Почему R использует (p + 1) вместо p для степени свободы?
После исследования я обнаружил, что проблема связана с stats:::logLik.lm()
.
> stats:::logLik.lm ## truncated R function body
## ...
## attr(val, "df") <- p + 1
## ...
В реальном примере (с помощью R в встроенный в набор данных trees
), рассмотрим:
x <- lm(Height ~ Girth, trees) ## a model with 2 parameters
logLik(x)
## 'log Lik.' -96.01663 (df=3)
Это действительно озадачивает. Кто-нибудь знает почему?
Edit1: glm
примеры по @ crayfish44
model.g <- glm(dist ~ speed, cars, family=gaussian)
logLik(model.g) # df=3
model.p <- glm(dist ~ speed, cars, family=poisson)
logLik(model.p) #df=2
model.G <- glm(dist ~ speed, cars, family=Gamma)
logLik(model.G) #df=3
Edit2: методы logLik
> methods(logLik)
[1] logLik.Arima* logLik.glm* logLik.lm* logLik.logLik* logLik.nls*
Да точно. Линейная модель. – Vincent
Право. И он возвращает: -151.14 (df = 4). Это правильное значение. Проблема в DOF. Есть 4 DOF, когда ясно, что оцениваются только 3 параметра: одна константа и два параметра наклона. – Vincent
Я дал ему то же имя =) – Vincent