Я помітив, що в R, Пуассоні та негативних біноміальних регресіях, здається, завжди відповідають однакові коефіцієнти для категоричних, але не безперервних предикторів.
Наприклад, ось регресія з категоричним прогноктором:
data(warpbreaks)
library(MASS)
rs1 = glm(breaks ~ tension, data=warpbreaks, family="poisson")
rs2 = glm.nb(breaks ~ tension, data=warpbreaks)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Ось приклад з неперервним прогноктором, де Пуассон і НБ відповідають різним коефіцієнтам:
data(cars)
rs1 = glm(dist ~ speed, data=cars, family="poisson")
rs2 = glm.nb(dist ~ speed, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
(Звичайно, ці дані не рахуються, а моделі не мають сенсу ...)
Потім я перекодую прогноктор у коефіцієнт, і дві моделі знову відповідають однаковим коефіцієнтам:
library(Hmisc)
speedCat = cut2(cars$speed, g=5)
#you can change g to get a different number of bins
rs1 = glm(cars$dist ~ speedCat, family="poisson")
rs2 = glm.nb(cars$dist ~ speedCat)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Однак негативна біноміальна регресія Джозефа Хільбе дає приклад (6.3, стор. 118-119), де категоричний предиктор, стать, підходить з дещо різними коефіцієнтами за Пуассоном ( ) та NB ( ). Він каже: “Співвідношення частоти захворюваності між моделями Пуассона та НБ досить схожі. Це не дивно, якщо врахувати близькість [відповідає в R] до нуля. "α 1 / θ
Я розумію це, але у наведених вище прикладах summary(rs2)
говорить нам, що оцінюється відповідно в 9,16 і 7,93.
То чому ж коефіцієнти точно однакові? І чому лише для категоричних прогнозів?
Редагувати №1
Наведемо приклад з двома неортогональними провісниками. Дійсно, коефіцієнти вже не однакові:
data(cars)
#make random categorical predictor
set.seed(1); randomCats1 = sample( c("A","B","C"), length(cars$dist), replace=T)
set.seed(2); randomCats2 = sample( c("C","D","E"), length(cars$dist), replace=T)
rs1 = glm(dist ~ randomCats1 + randomCats2, data=cars, family="poisson")
rs2 = glm.nb(dist ~ randomCats1 + randomCats2, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
І, в тому числі інший предиктор, змушує моделі підходити до різних коефіцієнтів, навіть коли новий предиктор є безперервним. Отже, це чимось пов'язане з ортогональністю фіктивних змінних, які я створив у своєму оригінальному прикладі?
rs1 = glm(dist ~ randomCats1 + speed, data=cars, family="poisson")
rs2 = glm.nb(dist ~ randomCats1 + speed, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))