EMアルゴリズムを使用して、ゼロ膨張ポアソンモデルの潜在変数定式化のMLEをどのように計算しますか?


10

ゼロ膨張ポアソン回帰モデルは、サンプルに対してによって 定義され そしてさらに、パラメーターおよび満たすと仮定しますYは、iが = { 0の確率でのp I + 1 - P IE - λ I kの確率で1 - P IE - λ I、λはk個のI / Kをλ = λ 1... λ NP =(y1,,yn)

Yi={0with probability pi+(1pi)eλikwith probability (1pi)eλiλik/k!
λ=(λ1,,λn)p=(p1,,pn)

log(λ)=Bβlogit(p)=log(p/(1p))=Gγ.

ゼロインフレーションポアソン回帰モデルの対応する対数尤度は、

L(γ,β;y)=yi=0log(eGiγ+exp(eBiβ))+yi>0(yiBiβeBiβ)i=1nlog(1+eGiγ)yi>0log(yi!)

ここで、とは計画行列です。これらの行列は、2つの生成プロセスで使用したい機能に応じて、同じにすることができます。ただし、行数は同じです。GBG

が完全なゼロ状態からのものである場合に観測でき、がポアソン状態からのものである場合に観測できると仮定すると、対数尤度は次のようになります。Y i Z i = 0 Y iZi=1YiZi=0Yi

L(γ,β;y,z)=i=1nlog(f(zi|γ))+i=1nlog(f(yi|zi,β))

=i=1nzi(Giγlog(1+eGiγ))+i=1n(1zi)log(1+eGiγ)+i=1n(1zi)[yiBiβeBiβlog(yi!)]
最初の2つの項は、を分離するロジスティック回帰の損失ですz_i = 1から。2番目の項は、ポアソンプロセスによって生成されたポイントへの回帰です。zi=0zi=1

しかし、潜在変数は観察できませんか?目的は、最初の対数尤度を最大化することです。しかし、潜在変数を導入し、新しい対数尤度を導出する必要があります。次に、EMアルゴリズムを使用して、2番目の対数尤度を最大化できます。しかし、これは、またはいずれかであることがわかっていると想定していますか?Zi=0Zi=1


とは?また、この質問の大部分は、@ Robbyによる以前の別の質問から大幅にカットアンドペーストされているようです。あなたなの?f
マクロ

@マクロ:マクロはい、私です。が何かわからない。紙は決して言いませんでした。f
Damien

回答:


11

あなたが持っている難しさの根本は文にあります:

次に、EMアルゴリズムを使用して、2番目の対数尤度を最大化できます。

あなたが観察したように、あなたはできません。代わりに、最大化するのは2番目の対数尤度の期待値(「完全なデータ対数尤度」と呼ばれます)であり、期待値は超えて取得されます。 zi

これは、反復手順につながります。ここで、回の反復で、回の反復からのパラメーター推定値を指定して、期待値を計算します(これは「Eステップとして知られています」 "、)次に、それらを完全なデータログ尤度に置き換え(この場合にこれを実行できる理由については、以下の編集を参照してください)、現在の反復(" Mステップ ")の推定値を取得するためにパラメーターに関して最大​​化します。 。)kthzi(k1)th

最も単純な場合のゼロ膨張ポアソンの完全データ対数尤度-2つのパラメーター、たとえばとは、Mステップに関して大幅な簡略化を可能にし、これはフォームにある程度まで引き継がれます。それがどのように機能するかを、いくつかのRコードを介して簡単なケースで示しますので、その本質を見ることができます。あなたが問題を考えたときにそれが明瞭さの損失を引き起こすかもしれないので、私はできるだけ簡略化しません:λp

# Generate data
# Lambda = 1,  p(zero) = 0.1
x <- rpois(10000,1)
x[1:1000] <- 0

# Sufficient statistic for the ZIP
sum.x <- sum(x)

# (Poor) starting values for parameter estimates
phat <- 0.5
lhat <- 2.0

zhat <- rep(0,length(x))
for (i in 1:100) {
  # zhat[x>0] <- 0 always, so no need to make the assignment at every iteration
  zhat[x==0] <- phat/(phat +  (1-phat)*exp(-lhat))

  lhat <- sum.x/sum(1-zhat) # in effect, removing E(# zeroes due to z=1)
  phat <- mean(zhat)   

  cat("Iteration: ",i, "  lhat: ",lhat, "  phat: ", phat,"\n")
}

Iteration:  1   lhat:  1.443948   phat:  0.3792712 
Iteration:  2   lhat:  1.300164   phat:  0.3106252 
Iteration:  3   lhat:  1.225007   phat:  0.268331 
...
Iteration:  99   lhat:  0.9883329   phat:  0.09311933 
Iteration:  100   lhat:  0.9883194   phat:  0.09310694 

あなたのケースでは、各ステップで重み付きポアソン回帰を実行します。重みは1-zhatの推定、したがって推定を取得し、次に最大化します。βλi

(Ezilogpi+(1Ezi)log(1pi))

行列の係数ベクトルに関して、の推定値を取得します。期待値、各反復で再び計算されます。P I EのZはiは = P I /P I + 1 - P Iのexp - λ IGpiEzi=pi/(pi+(1pi)exp(λi))

アルゴリズムを理解するだけでなく、実際のデータに対してこれを実行する場合は、Rパッケージがすでに存在しています。これは、ライブラリを使用したhttp://www.ats.ucla.edu/stat/r/dae/zipoisson.htmの例psclです。

編集:私たちがしていることは、完全なデータログの可能性の期待値を最大化することであり、欠落しているデータ/潜在変数の期待値を接続して完全なデータログの可能性を最大化しないことを強調する必要があります。ここにあるように、完全なデータ対数尤度は欠落データで線形ですが、2つのアプローチは同じですが、それ以外の場合はそうではありません。


@Cokes、既存の回答を変更するのではなく、独自の補足回答としてこの情報を追加する必要があります。この編集は承認されるべきではありませんでした。
ガン-モニカの回復
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.