chol.default(K) 中出现错误:5 阶的前导小数对于 betareg 不是正定的

dan*_*dan 5 beta regression r lm

我正在尝试使用这些数据来拟合beta regression模型:betareg functionbetareg package

df <- data.frame(category=c("c1","c1","c1","c1","c1","c1","c2","c2","c2","c2","c2","c2","c3","c3","c3","c3","c3","c3","c4","c4","c4","c4","c4","c4","c5","c5","c5","c5","c5","c5"),
                 value=c(6.6e-18,0.0061,0.015,1.1e-17,4.7e-17,0.0032,0.29,0.77,0.64,0.59,0.39,0.72,0.097,0.074,0.073,0.08,0.06,0.11,0.034,0.01,0.031,0.041,4.7e-17,0.025,0.58,0.14,0.24,0.29,0.55,0.15),stringsAsFactors = F)

df$category <- factor(df$category,levels=c("c1","c2","c3","c4","c5"))
Run Code Online (Sandbox Code Playgroud)

使用此命令:

library(betareg)
fit <- betareg(value ~ category, data = df)
Run Code Online (Sandbox Code Playgroud)

我得到这个error:

Error in chol.default(K) : 
  the leading minor of order 5 is not positive definite
In addition: Warning message:
In sqrt(wpp) : NaNs produced
Error in chol.default(K) : 
  the leading minor of order 5 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 sqrt(wpp) : NaNs produced
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方案或者 beta 回归根本无法拟合这些数据?

Ach*_*eis 4

将 beta 分布拟合到类别 1 中的数据将非常具有挑战性,因为三个观测值基本上为零。四舍五入到五位数:0.00000、0.00000、0.00000、0.00320、0.00610、0.01500。我不清楚这个类别是否应该以与其他类别相同的方式建模。

在类别 4 中,有另一个观测值的数值为零,尽管其他观测值稍大一些:0.00000、0.01000、0.02500、0.03100、0.03400、0.04100。

省略类别 1 至少可以在没有数值问题的情况下估计模型。对于来自每组六个观测值的两个参数,渐近推理是否是一个很好的近似是另一个问题。但各组之间的精确度似乎并不相同。

betareg(value ~ category | 1, data = df, subset = category != "c1")
## Call:
## betareg(formula = value ~ category | 1, data = df, subset = category != 
##     "c1")
## 
## Coefficients (mean model with logit link):
## (Intercept)   categoryc3   categoryc4   categoryc5  
##      0.2634      -2.2758      -4.4627      -1.0206  
## 
## Phi coefficients (precision model with log link):
## (Intercept)  
##       2.312  
betareg(value ~ category | category, data = df, subset = category != "c1")
## Call:
## betareg(formula = value ~ category | category, data = df, subset = category != 
##     "c1")
## 
## Coefficients (mean model with logit link):
## (Intercept)   categoryc3   categoryc4   categoryc5  
##      0.2566      -2.6676      -4.0601      -0.9784  
## 
## Phi coefficients (precision model with log link):
## (Intercept)   categoryc3   categoryc4   categoryc5  
##      2.0849       3.5619      -0.2308      -0.1376  
Run Code Online (Sandbox Code Playgroud)