我应该为我的 Poisson GLM 使用偏移量吗?

机器算法验证 r 广义线性模型 泊松分布 抵消
2022-01-26 17:29:04

我正在研究使用两种不同的水下视觉普查方法时鱼类密度和鱼类丰富度的差异。我的数据最初是计数数据,但通常会更改为鱼的密度,但我仍然决定使用 Poisson GLM,我希望这是正确的。

model1 <- glm(g_den ~ method + site + depth, poisson)

我的 3 个预测变量是方法、站点和深度,我在输入它们时将它们作为因子排序。

我的响应变量是石斑鱼物种丰富度、石斑鱼密度和其他鱼群的相同。我知道密度不是整数,而是数字数据,例如 1.34849。但是,我现在收到此错误:

In dpois(y, mu, log = TRUE) : non-integer x = 0.037500

我一直在阅读,很多人建议使用偏移量,这是最明智的做法吗?

3个回答

这里有几个问题:

  1. 您需要使用观察到的计数作为响应变量。您不应使用密度 ( g_den)。
  2. 如果观察到的计数来自不同的区域,则需要将这些区域的日志作为新变量:

    larea = log(area)
    
  3. 您可以通过两种不同的方式控制观察的不同区域:

    • 通过larea用作偏移量。这将使您的响应实际上是一个比率(即使模型左侧列出的内容是一个count)。
    • 通过用larea作协变量。这将控制不同的区域,但不会使您的响应等同于速率。这是一种更灵活的方法,可让您评估larea增加或减少对计数的影响(即斜率是小于还是大于 1)。

在以下 CV 线程中有关于这些问题的更多信息:

如果您要使用泊松建模,您的响应变量必须具有整数值。然后你有两个选择

  • 使用面积或其他一些合适的分母作为偏移量。这通常需要先记录
  • 包括面积等作为预测变量。同样,这通常会作为日志包含在内,因为您正在对日志计数进行建模。

如果您使用偏移方法,您是在说如果我将面积翻倍,我希望得到双倍的计数。如果您使用预测器方法,您会说您知道如果您将面积乘以计数,但不一定乘以相同的因子。

这是你的电话。

看起来您将鱼的数量除以所调查的水的体积(或者可能是面积)。在这种情况下,偏移量确实是合适的,您应该使用除以任何内容的日志。也许

model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)

(从早期的错误版本编辑,缺少日志)

错误消息的原因是泊松分布通常是整数值,但响应不是整数。一旦存在偏移,这种情况就会改变;(response/offset) 必须是整数(当然是,假设原始计数是整数)。