我想知道这里是否有人可以帮助我。
我正在尝试用betareg
包拟合 beta GLM,因为我的因变量是一个从 0 到 1 变化的比例(500m 网格大小中鲸鱼的相对密度)。我有三个协变量:
- 深度(以米为单位测量,范围从 4 到 100m),
- 到海岸的距离(以米为单位,范围从 0 到 21346m)和
- 到船只的距离(以米为单位,范围从 0 到 20621)。
我的因变量有很多 0 和许多太接近 0 的值(如7.8e-014
)。当我尝试拟合模型时,显示以下错误:
invalid dependent variable, all observations must be in (0, 1).
从我之前的讨论来看,这似乎是由我在数据集中的 0 引起的(我不应该有任何 0 或 1)。当我将所有 0 更改为仅正定(例如 0.0000000000000001)时,我收到的错误消息是:
Error in chol.default(K) :
the leading minor of order 2 is not positive definite
In addition: Warning messages:
1: In digamma(mu * phi) : NaNs produced
2: In digamma(phi) : NaNs produced
Error in chol.default(K) :
the leading minor of order 2 is not positive definite
In addition: Warning messages:
1: In betareg.fit(X, Y, Z, weights, offset, link, link.phi, type, control) :
failed to invert the information matrix: iteration stopped prematurely
2: In digamma(mu * phi) : NaNs produced
从我在几个论坛上看到的情况来看,这似乎是因为我的矩阵不是正定的。它可能是不确定的(即同时具有正特征值和负特征值),或者我的矩阵可能接近奇异矩阵,即它的最小特征值非常接近 0(因此在计算上它是 0)。
我的问题是:由于我只有这个数据集,有没有办法解决这些问题并运行 beta 回归?或者,我可以使用任何其他模型来代替它可以工作的 betareg 包吗?
这是我的代码:
betareg(Density~DEPTH+DISTANCE_TO_COAST+DIST_BOAT,data=misti)