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")