R(ExtDist)中的威布尔分布

hgb9j2n6  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(145)

有人在使用ExtDist Package时遇到过Weibull分布的问题吗?
documentation
具有未知形状参数的分布的参数估计示例来自:Rinne(2009)数据集第338页和示例第418 -419页给出的参数估计值为形状= 99.2079和尺度= 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

这显然是错误的,但我不确定是我犯了错误还是包里有bug?

qjp7pelc

qjp7pelc1#

在我看来,这是软件包中的一个bug,我做了自己独立的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"))。
如果我用另一种方法拟合伽玛分布,我会得到与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
iih3973s

iih3973s2#

错误影响了eGamma和eWeibull的代码,但现在已经修复(v0.7-1,Jan 17,2023)。感谢Robert Dodier指出它们。
eWeibull的当前输出:

# Parameter Estimation for a distribution with unknown shape parameters
# Example from: Rinne (2009) Dataset p.338 and example pp.418-419
# Parameter estimates are given as shape = 2.5957 and scale = 99.2079.
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

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

Parameter  Type Estimate      S.E.
    shape shape  2.59566 0.4366932
    scale scale 99.20792 9.0404336

# consistent with EnvStats estimates
EnvStats::eweibull(data)$parameters
    shape     scale 
 2.595663 99.207982

eGamma的当前输出:

# Parameter estimation for a distribution with unknown shape parameters
# Example from:  Bury(1999) pp.225-226, parameter estimates as given by Bury are
# shape = 6.40 and scale=2.54.
data <- c(16, 11.6, 19.9, 18.6, 18, 13.1, 29.1, 10.3, 12.2, 15.6, 12.7, 13.1,
          19.2, 19.5, 23, 6.7, 7.1, 14.3, 20.6, 25.6, 8.2, 34.4, 16.1, 10.2, 12.3)
est.par <- eGamma(data, method="numerical.MLE"); est.par

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

Parameter  Type Estimate      S.E.
    shape shape 6.404003 1.7661637
    scale scale 2.544659 0.7300405

# consistent with EnvStats estimates
EnvStats::egamma(data)$parameters
    shape    scale 
 6.404041 2.544643

相关问题