2013-04-16 3 views
5

Мне было поручено разработать регрессионную модель, изучающую участие учащихся в разных программах. Это очень хороший чистый набор данных, в котором подсчет числа учащихся соответствует распределению Пуассона. Я вписываю модель в R (используя как GLM, так и Zero Inflated Poisson.) Полученные остатки казались разумными.Регрессия для переменной скорости в R

Однако мне было поручено изменить количество студентов на «курс», который был рассчитан как ученики/school_population (каждая школа имеет собственное население.)) Теперь это уже не переменная счета, а пропорция между 0 и 1. Это считается «долей зачисления» в программе.

Эта «ставка» (учащиеся/население) больше не является Пуассоном, но, конечно же, не является нормальной. Итак, я немного потерян относительно соответствующего распределения и последующей модели для его представления.

Нормальное распределение журнала, похоже, хорошо соответствует этому параметру скорости, однако у меня много значений 0, поэтому он фактически не подходит.

Любые предложения по наилучшей форме распространения для этого нового параметра и как смоделировать его в R?

Спасибо!

+2

Я думаю, что это случай использования переменной экспозиции/смещения (http://en.wikipedia.org/wiki/Poisson_regression#.22Exposure.22_and_offset). И, может быть, вопрос к http://stats.stackexchange.com/ – Rcoster

+1

перекрестная ссылка на r-help: http://thread.gmane.org/gmane.comp.lang.r.general/291112 –

ответ

5

Как было предложено в комментариях вы можете сохранить модель Пуассона и сделать это со смещением:

glm(response~predictor1+predictor2+predictor3+ ... + offset(log(population), 
    family=poisson,data=...) 

Или вы могли бы использовать биномиальное GLM, либо

glm(cbind(response,pop_size-response) ~ predictor1 + ... , family=binomial, 
     data=...) 

или

glm(response/pop_size ~ predictor1 + ... , family=binomial, 
     weights=pop_size, 
     data=...) 

Последняя форма иногда более удобна, хотя и менее широко используется. Имейте в виду, что при переключении с Poisson на biomial будет изменяться функция связи из журнала в logit, хотя вы можете использовать family=binomial(link="log")), если хотите.

Нулевая инфляция может быть проще моделировать с комбинацией пуассонов + смещение (я не уверен, что пакет pscl, самый распространенный подход к ZIP, обрабатывает смещения, но я думаю, что это так), что будет больше обычно доступной, чем нулевая биномиальная модель.

Я думаю, что glmmADMB будет делать надутую биномиальную модель, но я ее не тестировал.

+1

Бен - отличный ответ. Вы правы в том, что пакет pscl позволит смещение с помощью ZIP-модели. Однако, когда я пытаюсь подогнать его со смещением, он не подходит, как и модель без смещения. Это кажется странным. Кроме того, я не знаю, как повлияют предсказанные значения. Если я использую функцию zeroinfl() в pscl, имеет ли смещение в формуле изменение интерпретации предсказанных значений? – Noah

Смежные вопросы