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(k−1)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-zhat
die Schätzungen von und damit und dann maximieren:βλi
∑(Ezilogpi+(1−Ezi)log(1−pi))
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+(1−pi)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 pscl
Bibliothek 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.