Используя встроенный набор данных mtcars
, я просто запустил следующий бит кода:
my_mtcars <- mtcars
my_mtcars$cyl <- as.factor(my_mtcars$cyl)
my_mtcars$gear <- as.factor(my_mtcars$gear)
Установите простой GLM: mpg ~ cyl + gear
my_glm <- glm(mpg ~ cyl + gear, data = my_mtcars)
summary(my_glm)
Я хочу компенсировать cyl
. Если я установлю смещение равным оценкам параметра glm, то получу ту же модель в отношении gear
my_mtcars$cyl_offset <- case_when(
my_mtcars$cyl == 4 ~ 0,
my_mtcars$cyl == 6 ~ -6.656,
my_mtcars$cyl == 8 ~ -10.542
)
Подогнать ту же модель, но использовать смещение вместо нормального члена
my_glm <- glm(mpg ~ offset(cyl_offset) + gear, data = my_mtcars)
summary(my_glm)
Я действительно получаю те же оценки параметров (intercept
+ gear
) и такое же остаточное отклонение, но меньшие стандартные ошибки. Я не ожидал этого - должен ли я был?