在 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)
我们有一个数据集 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)