La raíz de la dificultad que tienes está en la oración:
Luego, utilizando el algoritmo EM, podemos maximizar la segunda probabilidad de registro.
Como has observado, no puedes. En cambio, lo que maximiza es el valor esperado de la segunda probabilidad de registro (conocida como la "probabilidad de registro de datos completa"), donde el valor esperado se toma sobre . zi
Esto lleva a un procedimiento iterativo, donde en la iteración se calculan los valores esperados de dadas las estimaciones de los parámetros de la iteración ( (esto se conoce como el "paso E ",) luego sustitúyalos en la probabilidad de registro de datos completa (consulte EDITAR a continuación para ver por qué podemos hacer esto en este caso), y maximícela con respecto a los parámetros para obtener las estimaciones para la iteración actual (el" paso M " .)kthzi(k−1)th
La probabilidad log-datos completa para la Poisson inflado de cero en el caso más simple - dos parámetros, por ejemplo y - permite simplificar de manera importante cuando se trata de la M-paso, y esto se traslada en cierta medida a su formulario. Le mostraré cómo funciona eso en el caso simple a través de un código R, para que pueda ver la esencia del mismo. No simplificaré tanto como sea posible, ya que eso podría causar una pérdida de claridad cuando piense en su problema:λ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
En su caso, en cada paso hará una regresión ponderada de Poisson donde los pesos son 1-zhat
para obtener las estimaciones de y, por lo tanto, , y luego maximizar:βλi
∑(Ezilogpi+(1−Ezi)log(1−pi))
con respecto al vector coeficiente de su matriz para obtener las estimaciones de . Los valores esperados , nuevamente calculados en cada iteración.GpiEzi=pi/(pi+(1−pi)exp(−λi))
Si desea hacer esto para datos reales, en lugar de simplemente comprender el algoritmo, los paquetes R ya existen; Aquí hay un ejemplo http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm usando la pscl
biblioteca.
EDITAR: Debo enfatizar que lo que estamos haciendo es maximizar el valor esperado de la probabilidad de registro de datos completos, NO maximizar la probabilidad de registro de datos completos con los valores esperados de los datos faltantes / variables latentes conectadas. Como sucede, si la probabilidad de registro de datos completos es lineal en los datos faltantes, ya que está aquí, los dos enfoques son iguales, pero de lo contrario, no lo son.