具有分类数据的Poisson GLM

时间:2018-06-26 21:56:09

标签: r rstudio glm poisson

我正在尝试使用标记为sv的分类数据计数来拟合Poisson广义混合模型。由于数据是在具有不同持续时间的会话中收集的(请参见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

我不确定该怎么做。如果一个聪明的头脑能指出我该怎么做才能解决这个问题,我会感到非常高兴。

如果有一个更好的模型可以用来预测sv两个标签随时间的计数,那么我很乐意为之。

非常感谢您的评论和建议!

P.S。我使用以下软件包tidyverseeffectsdplyr

在R markdown脚本中运行它

1 个答案:

答案 0 :(得分:1)

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