在 R 中用 0 拟合 beta 分布

Fitting beta distribution with 0 in R

我们有一个数据集 d3。

time MV
1 0
2 0
3 0,3

等等。 在 0 到 1 之间有更多的数据点。我们想要拟合 beta 分布,但我们发现我们应该尝试拟合零膨胀的 beta 分布,因为我们的数据包含零。

但我们真的不知道该怎么做。对于这种分布,如果可能的话,我们首先尝试在散点图中用一条线拟合我们的数据。有人能给我们一个正确的方向吗? 我们已经找到包 gamlss 但不知道如何以正确的方式实现它 谢谢2位苦苦挣扎的同学

将您的数据存储在向量中。在这里,我们使用存储在 x 中的 rBEZI(随机 Beta 零膨胀)生成的示例数据,其中 mu=.5、sigma=1 和 nu=.1,大小为 10000。现在使用公式 x~1 拟合数据。如果您不知道它们可能是什么,则指定起始值是可选的,但在这里我们知道它们是什么,所以可以将起始值指定为它们的实际值。不要忘记将 family 指定为“BEZI”,您可以使用 fitted 访问拟合系数。最后,您可以绘制数据和拟合曲线以查看它们是否匹配。

library(gamlss)
x=rBEZI(10000, .5, 1, .1)
m=gamlss(x~1, mu.start=.5, sigma.start=1, nu.start=.1, family="BEZI")
fitted(m, "mu")[1]

0.5015543

fitted(m, "sigma")[1]
1.008976 

fitted(m, "nu")[1]
0.0997

plotBEZI(fitted(m, "mu")[1], fitted(m, "sigma")[1], fitted(m, "nu")[1])
hist(x, freq=FALSE, add=TRUE)