我正在尝试使用标记为s
和v
的分类数据计数来拟合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
我不确定该怎么做。如果一个聪明的头脑能指出我该怎么做才能解决这个问题,我会感到非常高兴。
如果有一个更好的模型可以用来预测s
和v
两个标签随时间的计数,那么我很乐意为之。
非常感谢您的评论和建议!
P.S。我使用以下软件包tidyverse
,effects
和dplyr
答案 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