首页 > 解决方案 > 在 R 中用 0 拟合 beta 分布

问题描述

我们有一个数据集 d3。

时间 MV
1 0
2 0
3 0,3

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

但我们真的不知道如何做到这一点。对于这种分布,如果可能,我们首先尝试在散点图中拟合一条线。有人可以在正确的方向上推动我们吗?我们已经找到了 gamlss 包,但不知道如何以正确的方式实现它谢谢你,2 个苦苦挣扎的学生

标签: rdistributionbeta-distribution

解决方案


将数据存储在向量中。rBEZI在这里,我们使用从(随机 Beta 零膨胀)生成的示例数据,x其中 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)

在此处输入图像描述


推荐阅读