如何用“MME”方法拟合威布尔分布并求R中的估计

ssgvzors  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(186)

我试图使用MME方法拟合R中的Weibull分布并找到估计值。下面是用于拟合R中的Weibull分布的代码,来自fitdistrplus和actuar包。

a <- rweibull(100, 10,1)
weibul_mme <- mmedist(a, "weibull", order = 1:2)

但我得到下面的错误

Error in mmedist(a, "weibull", order = 1:2) : 
  the empirical moment function must be defined

如果有人能告诉我我犯了什么错误,或者提供一些同样的阅读材料,那将是很有帮助的

rryofs0p

rryofs0p1#

R代码如下,Microsoft R Open 3。5.3 x64,Win 10

library(fitdistrplus)
library(actuar)

x <- rweibull(1000, 10,1)

memp <- function(x, order) mean(x^order)

weibul_mme <- mmedist(x, "weibull", order = 1:2, memp=memp)
fit.weibull<- fitdist(x, "weibull", method = "mme", order=c(1, 2), memp=memp, lower = c(0, 0))

print(weibul_mme)
print(fit.weibull)

plot(fit.weibull, demp=TRUE)

用最大熵方法产生合理的拟合

trnvg8h3

trnvg8h32#

您还可以尝试使用OneStep包中的onestep命令,使用快速高效的Le Cam一步估计过程拟合Weibull分布。

library(OneStep)
library(actual)

set.seed(2023)
x <- rweibull(100, 10,1)
onestep(x,"weibull")

Parameters:
        estimate
shape 10.1071280
scale  0.9845747

相关问题