比例建模 - Betareg 错误
Posted
技术标签:
【中文标题】比例建模 - Betareg 错误【英文标题】:Proportion modeling - Betareg errors 【发布时间】:2014-12-10 17:04:15 【问题描述】:我想知道这里是否有人可以帮助我。
我正在尝试使用 betareg
包拟合 beta GLM,因为我的因变量是一个从 0 到 1 变化的比例(500m 网格大小中鲸鱼的相对密度)。我有三个协变量:
我的因变量有很多 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)
【问题讨论】:
很难说没有可重现的例子,但我会尝试(1)为你的 0 值添加一个大的偏移量,以确保你远离边界(例如 1e-6); (2) 缩放和居中您的预测变量。单变量 beta 回归是否有效(例如betareg(Density~DEPTH,data=misti)
?您最终可能不得不考虑零通胀。
【参考方案1】:
当我将所有 0 更改为仅正定(例如 0.0000000000000001)时
这样做似乎是个坏主意,会导致您看到错误消息。
似乎betareg
目前只对(0,1)
区间内的数据有效,这就是package vignette 不得不说的:
由 Ferrari 和 Cribari-Neto (2004) 引入的 beta 回归模型类可用于对假定值在开放标准单位区间 (0, 1) 中的连续变量 y 进行建模。 [...] 此外,如果 y 还假设极值 0 和 1,则在实践中有用的转换是 (y · (n − 1) + 0.5)/n,其中 n 是样本大小(Smithson 和 Verkuilen 2006)。
所以解决这个问题的一种方法是:
y.transf.betareg <- function(y)
n.obs <- sum(!is.na(y))
(y * (n.obs - 1) + 0.5) / n.obs
betareg( y.transf.betareg(Density) ~ DEPTH+DISTANCE_TO_COAST+DIST_BOAT, data=misti)
对于betareg
的替代方法,使用带有logit
链接的binomial
GLM,请参阅交叉验证上的这个问题和链接的加州大学洛杉矶分校常见问题解答:
有些人会建议使用quasibinomial
GLM 来模拟比例/百分比...
【讨论】:
我有两个相似的因变量,最小值相同。 >0 和 max 【参考方案2】:您可以使用因变量的逻辑变换来运行线性模型,而不是 beta 回归。请尝试以下操作:
logistic <- function(p) log(p / (1-p) +0.01)
lm(logistic(Density)~DEPTH+DISTANCE_TO_COAST+DIST_BOAT,data=misti)
【讨论】:
以上是关于比例建模 - Betareg 错误的主要内容,如果未能解决你的问题,请参考以下文章
带有 Windows Aero 主题的 QWebEngineView 比例错误
ggplot2 + geom_point + 与大小成比例的气泡(错误“离散值提供给连续比例”)