Come si usa l'algoritmo EM per calcolare gli MLE per una formulazione variabile latente di un modello di Poisson gonfiato zero?


10

Il modello di regressione di Poisson gonfiato a zero è definito per un campione per Y i = { 0 con probabilità p i + ( 1 - p i ) e - λ i k con probabilità ( 1 - p i ) e - λ i λ k i / k ! e presuppone inoltre che i parametri(y1,,yn)

Yi={0with probability pi+(1pi)eλikwith probability (1pi)eλiλik/k!
λ=(λ1,,λn) e soddisfp=(p1,,pn)

log(λ)=Bβlogit(p)=log(p/(1p))=Gγ.

La probabilità logaritmica corrispondente del modello di regressione di Poisson gonfiato a zero è

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

Qui, e sono le matrici di progettazione. Queste matrici potrebbero essere le stesse, a seconda delle caratteristiche che si desidera utilizzare per i due processi di generazione. Hanno lo stesso numero di righe, tuttavia.BG

Supponendo che potremmo osservare quando proviene dallo stato zero perfetto e quando proviene dallo stato di Poisson la probabilità logaritmica sarebbeZi=1YiZi=0Yi

L(γ,β;y,z)=i=1nlog(f(zi|γ))+i=1nlog(f(yi|zi,β))

z i = 0 z i = 1

=i=1nzi(Giγlog(1+eGiγ))+i=1n(1zi)log(1+eGiγ)+i=1n(1zi)[yiBiβeBiβlog(yi!)]
I primi due termini sono la perdita in una regressione logistica per separare da . Il secondo termine è una regressione ai punti generati dal processo di Poisson.zi=0zi=1

Ma le variabili latenti non sono osservabili? Lo scopo è massimizzare la prima verosimiglianza. Ma dobbiamo introdurre variabili latenti e ricavare una nuova verosimiglianza. Quindi, usando l'algoritmo EM, possiamo massimizzare la seconda verosimiglianza. Ma questo presuppone che sappiamo che o ?Z i = 1Zi=0Zi=1


Che cos'è ? Inoltre, gran parte di questa domanda sembra essere in gran parte tagliata e incollata da una domanda precedente e diversa da @Robby. Sei tu? f
Macro,

f

Risposte:


11

La radice della difficoltà che stai riscontrando sta nella frase:

Quindi, usando l'algoritmo EM, possiamo massimizzare la seconda verosimiglianza.

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))

Se vuoi farlo per dati reali, al contrario della semplice comprensione dell'algoritmo, esistono già pacchetti R; ecco un esempio http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm usando la pscllibreria.

EDIT: dovrei sottolineare che quello che stiamo facendo è massimizzare il valore atteso della verosimiglianza del log dei dati completi, NON massimizzare la verosimiglianza del log dei dati completi con i valori attesi dei dati mancanti / variabili latenti inserite. Come succede, se la probabilità del log di dati completi è lineare nei dati mancanti, poiché è qui, i due approcci sono gli stessi, ma per il resto non lo sono.


@Cokes, è necessario aggiungere queste informazioni come risposta supplementare, non modificare una risposta esistente. Questa modifica non avrebbe dovuto essere approvata.
gung - Ripristina Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.