首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比例建模- Betareg误差

比例建模- Betareg误差
EN

Stack Overflow用户
提问于 2014-10-15 14:53:48
回答 2查看 7K关注 0票数 2

我想知道这里是否有人能帮我。

我试图用betareg软件包来拟合βGLM,因为我的因变量是一个比例(500米网格大小中鲸鱼的相对密度)从0到1不等。我有三个协变量:

  • 深度(以米计,从4米到100米),
  • 到海岸的距离(以米为单位,从0到21346米)
  • 与船只的距离(以米为单位,从0到20621)。

我的因变量有很多0和许多值太接近0(如在7.8e-014中)。当我试图拟合模型时,以下错误显示:

代码语言:javascript
复制
invalid dependent variable, all observations must be in (0, 1). 

从我以前的讨论来看,这似乎是由于我在数据集中的0(我不应该有任何0或1s)造成的。当我将所有的0改为仅正定(例如0.0000000000000001)时,我得到的错误消息是:

代码语言:javascript
复制
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包,它可以工作?

这是我的代码:

代码语言:javascript
复制
betareg(Density~DEPTH+DISTANCE_TO_COAST+DIST_BOAT,data=misti)
EN

回答 2

Stack Overflow用户

发布于 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年)。

因此,解决这个问题的一个方法是:

代码语言:javascript
复制
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代替模型比例/百分比..。

票数 11
EN

Stack Overflow用户

发布于 2016-02-04 18:27:51

您可以使用因变量的logistic转换来运行线性模型,而不是β回归。尝试以下几点:

代码语言:javascript
复制
   logistic <- function(p) log(p / (1-p) +0.01)
   lm(logistic(Density)~DEPTH+DISTANCE_TO_COAST+DIST_BOAT,data=misti)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26385617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档