运行泊松回归模型时出现偏移量错误

3

我正在尝试在R中运行一个游戏,但是出现了奇怪的错误信息。

通常情况下,我有一些计数,每个样品水体积中的计数数量,并且我想通过该计数进行校正。我正在尝试生成一个平滑函数,将计数作为深度的函数拟合,考虑到采样体积的差异。

最初的回答:

test <- structure(list(depth = c(2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 
37.5, 42.5, 47.5, 52.5, 57.5, 62.5, 67.5, 72.5, 77.5, 82.5, 87.5, 
92.5, 97.5), count = c(53323, 665, 1090, 491, 540, 514, 612, 
775, 601, 497, 295, 348, 357, 294, 292, 968, 455, 148, 155, 101
), vol = c(2119.92, 111.76, 156.64, 71.28, 77.44, 73.92, 62.48, 
78.32, 74.8, 81.84, 53.68, 80.96, 80.08, 79.2, 79.2, 77.44, 77.44, 
84.48, 73.04, 59.84)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -20L), .Names = c("depth", "count", "vol"
))

gam(count ~ s(depth) + offset(vol), data = test, family = "poisson")
Error in if (pdev - old.pdev > div.thresh) { : missing value where TRUE/FALSE needed
最初的回答:
有什么想法为什么这样不起作用?如果我去掉偏移量,或者如果我设置family = "gaussian",函数会按预期运行。
编辑:我发现
gam(count ~ s(depth) + offset(log(vol)), data = test, family = "poisson")

运行正常,我认为我看到有人说要对这些偏移变量进行对数转换,所以也许这实际上是可以正常工作的。

最初的回答
1个回答

4
您在这个模型中需要将vol放在对数刻度上。

更一般地说,偏移量是在链接函数的比例尺上进入模型的。因此,如果您的模型使用family=poisson(link='sqrt'),那么您需要将偏移量包含为offset(sqrt(vol))

我怀疑错误来自于可能存在溢出或似然/差异值中的错误值,因为假设vol值在拟合初始模型时处于对数刻度上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接