我想知道这里是否有人能帮我。
我试图用betareg软件包来拟合βGLM,因为我的因变量是一个比例(500米网格大小中鲸鱼的相对密度)从0到1不等。我有三个协变量:
我的因变量有很多0和许多值太接近0(如在7.8e-014中)。当我试图拟合模型时,以下错误显示:
invalid dependent variable, all observations must be in (0, 1). 从我以前的讨论来看,这似乎是由于我在数据集中的0(我不应该有任何0或1s)造成的。当我将所有的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)发布于 2016-04-05 08:25:50
当我将所有的0改为仅正定(例如0.0000000000000001)
这样做似乎是个坏主意,会导致您看到的错误消息。
目前看来,betareg只对(0,1)间隔内的数据严格有效,下面是包小体必须说的话:
贝塔回归模型的类别,如法拉利和Cribari (2004)介绍的,对于在开放标准单位区间(0,1)中假设值的连续变量y很有用。..。此外,如果y也假设极值为0和1,则实际中有用的转换是(y·(n−1) +0.5)−,其中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链接的binomial GLM的替代方法,请参阅交叉验证和链接的UCLA常见问题:
有些人会建议使用quasibinomial GLM代替模型比例/百分比..。
发布于 2016-02-04 18:27:51
您可以使用因变量的logistic转换来运行线性模型,而不是β回归。尝试以下几点:
logistic <- function(p) log(p / (1-p) +0.01)
lm(logistic(Density)~DEPTH+DISTANCE_TO_COAST+DIST_BOAT,data=misti)https://stackoverflow.com/questions/26385617
复制相似问题