ワイブル分布のMLE推定のアプローチの比較


7

いくつかのデータに対してワイブル分布をパラメーター化する必要があります。したがって、Rのfitdistrplusパッケージからの最尤推定(MLE)を使用します。ただし、パッケージで何が行われるかを理解したかったので、パッケージを使用するほかに、 fitdist。

要約すると、私のアプローチは次のとおりです。

(i)メソッド「MLE」でfitdist関数を使用します。

(ii)尤度関数の偏導関数を解く

(iii)optim関数を使用して負の尤度を最小化

まず、いくつかのデータをシミュレートします。

n <- 1e4    
set.seed(1) 
dat <- rweibull(n, shape=0.8, scale=1.2)

アプローチ1: fitdistrplusパッケージを適用します。

library(fitdistrplus)
A1 <- fitdist(dat, "weibull", method="mle")$estimate
A1
    shape     scale 
0.7914886 1.2032989 

アプローチ2:

ワイブル密度として

偏微分は次のとおりです。

上記の偏微分の根を検索します。

weib1 <- function(c) { 1/c - sum(dat^c*log(dat))/sum(dat^c) + 1/n*sum(log(dat)) }
shape <- uniroot(weib1, c(0,10), tol=1e-12)$root  
scale <- (1/n*sum(dat^shape))^(1/shape)
A2    <- c(shape, scale)
A2
[1] 0.7914318 1.2033179

アプローチ3:負の対数尤度を最小化するパラメーターを検索します。

fobj <- function(params){
  -sum(log(dweibull(dat, params[1], params[2])))
}
A3 <- optim(c(0.5, 1), fobj)$par
A3
[1] 0.7913756 1.2032748

アプローチを比較すると、パラメーター推定値(A1、A2、A3)は小数点第4位が異なります。fitdistのドキュメントを考慮すると、どちらもoptimを使用しているため、A1とA3が同じ推定値を生成することを期待していました。

したがって、私の質問は次のとおりです。

fitdistで使用される目的関数とは何ですか?アプローチ3を変更して、fitdistとまったく同じ推定値を得るにはどうすればよいですか?そして一般的に、どのアプローチが好ましいでしょうか。偏微分の解法が最もクリーンなアプローチだと思いますか?

回答:


1

ワイブルパラメータの推定は、通常、勾配降下法に関連するアルゴリズムを使用して行われます。私の知る限り、ほとんどのパッケージは、ロケーションスケールの変換を実行してこれを実装し、結果のGumbelログの可能性に対してプロシージャを実行します。

関連チェック

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.