Comment utilisez-vous l'algorithme EM pour calculer les MLE pour une formulation de variable latente d'un modèle de Poisson gonflé zéro?

10

Le modèle de régression de Poisson gonflé à zéro est défini pour un échantillon par et il suppose en outre que les paramètres et satisfontY i = { 0 avec probabilité p i + ( 1 - p i ) e - λ i k avec probabilité ( 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γ.

La probabilité logarithmique correspondante du modèle de régression de Poisson gonflé à zéro est

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

Ici, et sont les matrices de conception. Ces matrices pourraient être les mêmes, selon les fonctionnalités que l'on souhaite utiliser pour les deux processus de génération. Ils ont cependant le même nombre de lignes.BG

En supposant que nous puissions observer lorsque est de l'état parfait, zéro et lorsque est de l'état de Poisson, la log-vraisemblance seraitZi=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!)]
Les deux premiers termes sont la perte dans une régression logistique pour séparer zi=0 de zi=1 . Le deuxième terme est une régression vers les points générés par le processus de Poisson.

Mais les variables latentes ne sont-elles pas observables? Le but est de maximiser la première probabilité de log. Mais nous devons introduire des variables latentes et dériver une nouvelle log-vraisemblance. Ensuite, en utilisant l'algorithme EM, nous pouvons maximiser la deuxième log-vraisemblance. Mais cela suppose que nous savons que ou ?Z i = 1Zi=0Zi=1

Damien
la source
Qu'est-ce que ? En outre, de grandes parties de cette question semblent être largement coupées et collées à partir d'une question différente et antérieure de @Robby. Est-ce vous? f
Macro
@Macro: Macro oui c'est moi. Je ne suis pas sûr de ce que est. Le journal n'a jamais dit. f
Damien

Réponses:

11

La racine de la difficulté que vous rencontrez réside dans la phrase:

Ensuite, en utilisant l'algorithme EM, nous pouvons maximiser la deuxième log-vraisemblance.

zi

kthzi(k1)th

λ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 

1-zhatβλi

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

GpiEzi=pi/(pi+(1pi)exp(λi))

Si vous voulez le faire pour des données réelles, au lieu de simplement comprendre l'algorithme, les packages R existent déjà; voici un exemple http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm utilisant la psclbibliothèque.

EDIT: Je dois souligner que ce que nous faisons est de maximiser la valeur attendue de la probabilité du journal des données complètes, PAS de maximiser la probabilité du journal des données complètes avec les valeurs attendues des données manquantes / variables latentes branchées. la vraisemblance du journal des données complètes est linéaire dans les données manquantes, comme c'est le cas ici, les deux approches sont les mêmes, mais sinon, elles ne le sont pas.

jbowman
la source
@Cokes, vous devez ajouter ces informations comme votre propre réponse supplémentaire, et non modifier une réponse existante. Cette modification n'aurait pas dû être approuvée.
gung - Rétablir Monica