EMアルゴリズムを反復する必要があるのはなぜですか?


9

あなたが持つ人口があるとし確率変数とそれぞれ、ユニットをX Iポアソンλ X i > 0であるすべてのユニットについて、n = N n 0の値を観察しますλの推定値が必要です。NXiPoisson(λ)n=Nn0Xi>0λ

モーメントの方法と条件付き最尤法で答えを得る方法はありますが、EMアルゴリズムを試したかったのです。私は、EMアルゴリズムがあることをもらう -1添字は、アルゴリズムの前の反復からの値を示し、Kはパラメータに対して一定であるが。(私は実際と思いnは括弧内画分には、あるべきN+1;別の時間のための質問を、それは正確でいないようです)。

Q(λ1,λ)=λ(n+nexp(λ1)1)+log(λ)i=1nxi+K,
1Knn+1

これを具体的にするために、x i = 20と仮定します。もちろん、Nn 0は観測されておらず、λが推定されます。n=10xi=20Nn0λ

次の関数を繰り返して、前の反復の最大値を差し込むと、正しい答えに到達します(CML、MOM、および簡単なシミュレーションによって検証されます)。

EmFunc <- function(lambda, lambda0){
  -lambda * (10 + 10 / (exp(lambda0) - 1)) + 20 * log(lambda)
}

lambda0 <- 2
lambda  <- 1

while(abs(lambda - lambda0) > 0.0001){
  lambda0 <- lambda
  iter    <- optimize(EmFunc, lambda0 = lambda0, c(0,4), maximum = TRUE)
  lambda  <- iter$maximum
}

> iter
$maximum
[1] 1.593573

$objective
[1] -10.68045

しかし、これは単純な問題です。反復せずに最大化しましょう:

MaxFunc <- function(lambda){
  -lambda * (10 + 10 / (exp(lambda) - 1)) + 20 * log(lambda)
}

optimize(MaxFunc, c(0,4), maximum = TRUE)
$maximum
[1] 2.393027

$objective
[1] -8.884968

関数の値は、非反復手順よりも高く、結果は他の方法と一致していません。2番目の手順で異なる(おそらく)不正解が返されるのはなぜですか?

回答:


6

xi=0yQy λ1λ1

QλyyQf(λ)=Q(λ,λ)

f(λ)f

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