我正在尝试帮助一位同事的学生。学生在实验装置中观察并计算鸟类的行为(叫声次数)。无法确定每次实验期间特定观察到的鸟类的叫声数量,但计算有助于记录的叫声数量的鸟类数量是可能的。因此,我最初的建议是在 Poisson GLM 模型中包含鸟类数量作为偏移项,因此我们将拟合每只鸟类的预期呼叫次数。
这样做的问题是,在许多观察场合中,没有观察到鸟类(因此也没有观察到叫声)。软件(在这种情况下为 R)抱怨是因为(R 抱怨包含数据,但这纯粹是存在的结果)。y
-Inf
offset(log(nbirds))
-Inf
我实际上怀疑我们需要一个障碍模型(或类似模型),其中我们有一个单独的二项式模型用于“观察到的呼叫”?(或不)和在有呼叫的情况下呼叫数量(每只鸟)的截断计数模型,其中我们仅在模型的计数部分包含偏移项。
使用 R 中的pscl包尝试过这个,但我仍然遇到同样的错误:
mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
offset(log(NumberCOPO)) | 1, data = Data,
dist = "poisson")
因为相同的 R 代码(glm.fit
在内部hurdle()
用于拟合计数模型部分)正在检查,-Inf
即使我认为它不会影响模型对这些观察的拟合。(这是一个正确的假设吗?)
NumberCOPO
我可以通过向(例如)添加一个小数字来使模型适合,0.0001
但这充其量只是一个软糖。
在实践中添加这个小的连续性校正可以吗?如果不是,在处理数据时我们应该考虑哪些其他方法,我们可能希望在 Poisson 模型中使用偏移量,其中偏移量变量可以取值 0?我遇到的所有示例都是针对偏移变量不可能为 0 的情况。