Пуассон GLM с категориальными данными - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь подобрать обобщенную смешанную модель Пуассона, используя количество категориальных данных, помеченных как s и v. Так как данные были собраны в течение сеансов, которые имеют различную продолжительность (см. session_dur_s), я хочу включить эту информацию в качестве предиктора, поместив offset в модель glm.

Вот мой стол:

label session counts session_dur_s
s   1   587 6843    
s   2   203 2095    
s   3   187 1834    
s   4   122 1340    
s   5   40  1108    
s   6   64  476 
s   7   60  593 
v   1   147 6721    
v   2   57  2095    
v   3   58  1834    
v   4   22  986 
v   5   8   1108    
v   6   12  476 
v   7   11  593 

Мои данные:

label <-   c("s","s","s","s","s","s","s","v","v","v","v","v","v","v")
session <-  c(1,2,3,4,5,6,7,1,2,3,4,5,6,7)
counts <- c(587,203,187,122,40,64,60,147,54,58,22,8,12,11)
session_dur_s <-c(6843,2095,1834,1340,1108,476,593,6721,2095,1834,986,1108,476,593)
sv_dur <-  data.frame(label,session,counts,session_dur_s)

Это мой код:

sv_dur_mod <- glm(counts ~ label * session, data=sv_dur, family = "poisson",offset =session_dur_s)

summary(sv_dur_mod)

plot(allEffects(sv_dur_mod),type="response")

Я не могу выполнить функцию glm, потому что получаю красивую ошибку:

Error: no valid set of coefficients has been found: please supply starting values

Я не уверен, как это сделать. Я был бы очень рад, если бы умная голова указала мне, что я могу сделать, чтобы решить это.

Если есть лучшая модель, которую я могу использовать для прогнозирования подсчетов по времени для меток s и v, я более чем готов к этому.

Большое спасибо за комментарии и предложения!

P.S. Я запускаю его в сценарии уценки R, используя следующие пакеты tidyverse, effects и dplyr

1 Ответ

0 голосов
/ 27 июня 2018

Poisson GLM по умолчанию использует ссылку на журнал. То есть он может быть выполнен как:

sv_dur_mod <- glm(counts ~ label * session,
                  data = sv_dur,
                  family = poisson("log"))

Соответственно, логарифмическое смещение обычно уместно:

sv_dur_mod <- glm(counts ~ label * session,
                  data = sv_dur,
                  offset = log(session_dur_s),
                  family = poisson("log"))

, который выполняется как ожидалось. См. Ответ здесь для получения дополнительной информации об использовании смещения журнала: https://stats.stackexchange.com/a/237980/70372

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...