Odpowiedzi:
Źródłem trudności, na które napotykasz, jest zdanie:
Następnie za pomocą algorytmu EM możemy zmaksymalizować drugie prawdopodobieństwo dziennika.
# 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
W twoim przypadku na każdym kroku wykonasz ważoną regresję Poissona, w której wagi mają 1-zhat
uzyskać oszacowania i dlatego , a następnie zmaksymalizować:
w odniesieniu do wektora współczynnika macierzy uzyskać szacunki . Oczekiwane wartości, ponownie obliczany przy każdej iteracji.
Jeśli chcesz to zrobić dla rzeczywistych danych, w przeciwieństwie do zwykłego zrozumienia algorytmu, pakiety R już istnieją; Oto przykład http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm z wykorzystaniem pscl
biblioteki.
EDYCJA: Powinienem podkreślić, że to, co robimy, to maksymalizacja oczekiwanej wartości prawdopodobieństwa dziennika kompletnych danych, NIE maksymalizowanie prawdopodobieństwa dziennika kompletnych danych z podłączonymi oczekiwanymi wartościami brakujących danych / zmiennych ukrytych. Tak się składa, jeśli prawdopodobieństwo dziennika pełnych danych jest liniowe w brakujących danych, ponieważ tutaj są dwa podejścia są takie same, ale w przeciwnym razie nie są.