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+(1−pi)e−λikwith probability (1−pi)e−λiλik/k!
λ=(λ1,…,λn) e soddisfp=(p1,…,pn)

log⁡(λ)=Bβlogit(p)=log⁡(p/(1−p))=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(1−zi)log⁡(1+eGiγ)+∑i=1n(1−zi)[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(k−1)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

∑(Ezilog⁡pi+(1−Ezi)log⁡(1−pi))

GpiEzi=pi/(pi+(1−pi)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.