R中的Weibull分布(ExtDist)

时间:2017-07-20 07:29:35

标签: r distribution weibull

有没有人使用ExtDist Package对威布尔发行版有疑问?

来自documentation

  

具有未知形状参数的分布的参数估计   示例来自:Rinne(2009)Dataset p.338和示例pp.418-419   参数估计值为shape = 99.2079,scale = 2.5957。   该数据的对数似然和Rinne的参数估计是   -1163.278。

data <- c(35,38,42,56,58,61,63,76,81,83,86,90,99,104,113,114,117,119,141,183)
est.par <- eWeibull(X=data, method="numerical.MLE"); est.par
plot(est.par)

然而,当我运行这个时,我得到以下输出:

Parameters for the Weibull distribution.
(found using the  numerical.MLE method.)

 Parameter  Type   Estimate       S.E.
     shape shape 5.82976007 1.79326460
     scale scale 0.06628166 0.02129258

这显然是错误的,但我不确定我是否犯了错误或包装中是否有错误?

1 个答案:

答案 0 :(得分:1)

在我看来,这是包中的一个错误。我做了自己独立的MLE并得到了与Rinne相同的答案:

library(bbmle)
m1 <- mle2(y~dweibull(shape=exp(lshape),scale=exp(lscale)),
     data=data.frame(y=data),
     start=list(lshape=0,lscale=0))

然后我挖了进来看了dWeibull函数的来源:

function (x, shape = 2, scale = 2, params = list(shape = 2, scale = 2)) 
{
    if (!missing(params)) {
        shape <- params$shape
        scale <- params$scale
    }
    out = stats::dgamma(x, shape, scale)
    return(out)
}

似乎out应该设置为dweibull(...)的结果,而不是dgamma(...) ... ??看看weibull代码的其余部分,这个错误似乎重复了 - 也许这只是一个草率的剪切和粘贴?我肯定会联系维护者(maintainer("ExtDist"))。

PS。如果我使用替代方法拟合Gamma分布,我会得到与ExtDist包完全相同的答案:

m1g <- mle2(y~dgamma(shape=exp(lshape),rate=exp(lrate)),
     data=data.frame(y=data),
     start=list(lshape=0,lrate=0))
exp(coef(m1g))
##     lshape      lrate 
## 5.82976007 0.06628166