【问题标题】:The Weibull distribution in R (ExtDist)R 中的 Weibull 分布 (ExtDist)
【发布时间】:2017-12-25 18:21:45
【问题描述】:

有没有人在使用 ExtDist Package 的 Weibull 分布方面遇到问题?

来自documentation

形状参数未知的分布的参数估计 示例来自:Rinne (2009) 数据集 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

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

【问题讨论】:

  • 您是否阅读了示例的下一部分? “# eWeibull 计算的估计值与 Rinne (2009) 给出的估计值不同。但是,eWeibull 的参数估计值似乎有所改进,因为 -99.09037 的对数似然更大(如下面的 lWeibull 给出)。”
  • 嗨,Ben,是的,但我从 5.82976007 的代码中得到的答案肯定不是很接近,输出应该在 99 范围内

标签: r distribution weibull


【解决方案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 

【讨论】:

    猜你喜欢
    • 2019-10-08
    • 2013-12-20
    • 1970-01-01
    • 2020-11-27
    • 2012-08-02
    • 2013-07-03
    • 2019-09-06
    • 1970-01-01
    • 2016-06-05
    相关资源
    最近更新 更多