MSE и оценка перекрестной проверки резко отличаются от остаточных значений по шкале для GLM

Я столкнулся с чем-то, что, по моему мнению, является критическим и пригодится людям в будущем при подборе и анализе GLM в R. Ответ в моем наборе данных - это переменная частота данных, и набор содержит 1762 наблюдения. Я установил отрицательную биномиальную модель (названную nb1) с командой glm.nb и я хочу оценить, насколько хорошо модель предсказывает данные.

Для начала - при применении команды residuals.glm (тот же результат, если я применяю команду residuals) Я получил

head(residuals.glm(nb1))
     1          2          3          4          5          6 
-1.1630170  2.9662854  2.0234981  0.1104864 -0.6636815  0.5303713 

что является разумным и соответствует диагностическим графикам.

Это где это становится запутанным. При расчете остатков вручную получаю

head(y - fitted(nb1))
      1           2           3           4           5           6 
-35.4970139  28.2611731  10.0475912   0.2914508 -10.0584696   2.4523959  

Вычисление MSE с остатками команды, которые я получаю

mean(residuals(nb1)^2)
[1] 1.061085

при расчете MSE вручную я получаю

mean((y - fitted(nb1))^2)
[1] 4138.733

это в основном то же значение, что и при применении LOOCV (перекрестная проверка с пропуском)

loocvnb <- cv.glm(dfg, nb1, data=dfg), K=1764)
$delta
[1] 4352.700 4352.614

Функция по умолчанию для вектора delta в LOOCV есть MSE.

Почему MSE для опущенного вручную случая и для LOOCV так радикально отличается от применения функции residuals?

1 ответ

Решение

Остатки возвращены residuals.glm по умолчанию являются остатками отклонения. Когда вы делаете y - fitted(nb1) Вы ссылаетесь на необработанные остатки. использование

residuals.glm(nb1, type = "response")
Другие вопросы по тегам