Wie verwenden Sie den EM-Algorithmus, um MLEs für eine latente Variablenformulierung eines Poisson-Modells mit Null-Inflation zu berechnen?

10

Das auf Null aufgeblasene Poisson-Regressionsmodell wird für eine Stichprobe durch und es wird ferner angenommen, dass die Parameter und erfüllt sindY i = { 0 mit der Wahrscheinlichkeit p i + ( 1 - p i ) e - λ i k mit der Wahrscheinlichkeit ( 1 - p i ) e - λ i λ k i / k ! λ = ( λ 1 , , λ n ) p =(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γ.

Die entsprechende logarithmische Wahrscheinlichkeit des Poisson-Regressionsmodells mit Null- ist

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

Hier sind und die Entwurfsmatrizen. Diese Matrizen können abhängig von den Merkmalen, die für die beiden Erzeugungsprozesse verwendet werden sollen, gleich sein. Sie haben jedoch die gleiche Anzahl von Zeilen.BG

Unter der Annahme, dass wir beobachten wenn aus dem perfekten stammt, und wenn aus dem Poisson-Zustand stammt, wäre die logarithmische WahrscheinlichkeitZi=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!)]
Die ersten beiden Begriffe sind der Verlust einer logistischen Regression zur Trennung von von . Der zweite Term ist eine Regression auf die durch den Poisson-Prozess erzeugten Punkte.zi=0zi=1

Aber sind latente Variablen nicht nicht beobachtbar? Der Zweck besteht darin, die erste Log-Wahrscheinlichkeit zu maximieren. Wir müssen jedoch latente Variablen einführen und eine neue Log-Wahrscheinlichkeit ableiten. Mit dem EM-Algorithmus können wir dann die zweite Log-Wahrscheinlichkeit maximieren. Dies setzt jedoch voraus, dass wir wissen, dass entweder oder ?Zi=0Zi=1

Damien
quelle
Was ist ? Außerdem scheinen große Teile dieser Frage weitgehend aus einer früheren, anderen Frage von @Robby ausgeschnitten und eingefügt worden zu sein. Sind Sie das? f
Makro
@ Macro: Makro ja das bin ich. Ich bin mir nicht sicher, was ist. Die Zeitung hat es nie gesagt. f
Damien

Antworten:

11

Die Wurzel der Schwierigkeit, die Sie haben, liegt im Satz:

Mit dem EM-Algorithmus können wir dann die zweite Log-Wahrscheinlichkeit maximieren.

Wie Sie beobachtet haben, können Sie nicht. Stattdessen maximieren Sie den erwarteten Wert der zweiten Protokollwahrscheinlichkeit (bekannt als "vollständige Datenprotokollwahrscheinlichkeit"), wobei der erwartete Wert über . zi

Dies führt zu einer iterativen Prozedur, bei der Sie bei der -Iteration die erwarteten Werte des Berücksichtigung der Parameterschätzungen aus der -Iteration berechnen (dies wird als "E-Schritt" bezeichnet) ",) Ersetzen Sie sie dann durch die vollständige Datenprotokollwahrscheinlichkeit (siehe EDIT unten, warum wir dies in diesem Fall tun können) und maximieren Sie diese in Bezug auf die Parameter, um die Schätzungen für die aktuelle Iteration zu erhalten (der" M-Schritt "). .)kthzi(k1)th

Die Wahrscheinlichkeit eines vollständigen Datenprotokolls für das Poisson ohne Inflation im einfachsten Fall - zwei Parameter, z. B. und - ermöglicht eine erhebliche Vereinfachung des M-Schritts, was sich in gewissem Maße auf Ihre Form überträgt. Ich werde Ihnen anhand eines R-Codes zeigen, wie das im einfachen Fall funktioniert, damit Sie das Wesentliche sehen können. Ich werde nicht so viel wie möglich vereinfachen, da dies zu einem Verlust an Klarheit führen kann, wenn Sie an Ihr Problem denken:λ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 

In Ihrem Fall führen Sie bei jedem Schritt eine gewichtete Poisson-Regression durch, bei der die Gewichte 1-zhatdie Schätzungen von und damit und dann maximieren:βλi

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

in Bezug auf den Koeffizientenvektor Ihrer Matrix , um die Schätzungen von . Die erwarteten Werte werden bei jeder Iteration erneut berechnet.p i E z i = p i / ( p i + ( 1 - p i ) exp ( - λ i ) )GpiEzi=pi/(pi+(1pi)exp(λi))

Wenn Sie dies für reale Daten tun möchten, anstatt nur den Algorithmus zu verstehen, sind bereits R-Pakete vorhanden. Hier ist ein Beispiel http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm , das die psclBibliothek verwendet.

BEARBEITEN: Ich sollte betonen, dass wir den erwarteten Wert der Wahrscheinlichkeit des vollständigen Datenprotokolls maximieren und NICHT die Wahrscheinlichkeit des vollständigen Datenprotokolls mit den erwarteten Werten der fehlenden Daten / latenten Variablen, die eingesteckt sind, maximieren Die Wahrscheinlichkeit eines vollständigen Datenprotokolls ist in den fehlenden Daten linear, da hier die beiden Ansätze gleich sind, ansonsten jedoch nicht.

jbowman
quelle
@Cokes, Sie sollten diese Informationen als Ihre eigene ergänzende Antwort hinzufügen und keine vorhandene Antwort ändern. Diese Bearbeitung sollte nicht genehmigt worden sein.
Gung - Reinstate Monica