A raiz da dificuldade que você está tendo está na frase:
Em seguida, usando o algoritmo EM, podemos maximizar a segunda probabilidade de log.
Como você observou, você não pode. Em vez disso, o que você maximiza é o valor esperado da segunda probabilidade de log (conhecida como "probabilidade completa do log de dados"), em que o valor esperado é assumido sobre o . zi
Isso leva a um procedimento iterativo, onde na iteração você calcula os valores esperados de considerando as estimativas de parâmetro da iteração ( (conhecida como "E-step ",) substitua-os na probabilidade completa do log de dados (consulte EDIT abaixo para saber por que podemos fazer isso neste caso) e maximize isso em relação aos parâmetros para obter as estimativas para a iteração atual (a" etapa M " .)kthzi(k−1)th
O log probabilidade-de dados completa para o Poisson zero inflado no caso mais simples - dois parâmetros, dizer e - permite simplificar de forma significativa quando se trata de o M-passo, e isso leva por cima de alguma forma ao seu formulário. Vou mostrar como isso funciona no caso simples, através de um código R, para que você possa ver a essência dele. Não simplificarei o máximo possível, pois isso pode causar uma perda de clareza quando você pensa no seu 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
No seu caso, em cada etapa, você fará uma regressão de Poisson ponderada em que os pesos devem 1-zhat
obter as estimativas de e, portanto, e, em seguida, maximizar:βλi
∑(Ezilogpi+(1−Ezi)log(1−pi))
com relação ao vetor de coeficiente da sua matriz para obter as estimativas de . Os valores esperados , calculados novamente a cada iteração.GpiEzi=pi/(pi+(1−pi)exp(−λi))
Se você deseja fazer isso com dados reais, em vez de apenas entender o algoritmo, já existem pacotes R; aqui está um exemplo http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm usando a pscl
biblioteca.
EDIT: Devo enfatizar que o que estamos fazendo é maximizar o valor esperado da probabilidade do log de dados completos, NÃO maximizar a probabilidade do log de dados completos com os valores esperados dos dados ausentes / variáveis latentes plugados. Como acontece, se a probabilidade do log de dados completos é linear nos dados ausentes, como aqui, as duas abordagens são iguais, mas, caso contrário, não são.