Perché l'algoritmo EM deve essere iterativo?


9

Supponiamo di avere una popolazione con unità, ciascuna con una variabile casuale X iPoisson ( λ ) . Si osservano n = N - n 0 valori per qualsiasi unità per la quale X i > 0 . Vogliamo una stima di λ .NXiPoisson(λ)n=N-n0Xio>0λ

Esistono metodi di momenti e modi condizionati di massima probabilità di ottenere la risposta, ma volevo provare l'algoritmo EM. Ottengo che l'algoritmo EM sia dove ilsimbolo-1indica il valore della precedente iterazione dell'algoritmo eKè costante rispetto ai parametri. (In realtà penso chennella frazione tra parentesi dovrebbe esseren+1, ma ciò non sembra accurato; una domanda per un'altra volta).

Q(λ-1,λ)=λ(n+nexp(λ-1)-1)+log(λ)Σio=1nXio+K,
-1Knn+1

Per rendere concreto questo, supponiamo che , x i = 20 . Naturalmente, N e n 0 sono inosservati e λ deve essere stimato.n=10ΣXio=20Nn0λ

Quando eseguo l'iterazione della seguente funzione, inserendo il valore massimo dell'iterazione precedente, raggiungo la risposta corretta (verificata da CML, MOM e una semplice simulazione):

EmFunc <- function(lambda, lambda0){
  -lambda * (10 + 10 / (exp(lambda0) - 1)) + 20 * log(lambda)
}

lambda0 <- 2
lambda  <- 1

while(abs(lambda - lambda0) > 0.0001){
  lambda0 <- lambda
  iter    <- optimize(EmFunc, lambda0 = lambda0, c(0,4), maximum = TRUE)
  lambda  <- iter$maximum
}

> iter
$maximum
[1] 1.593573

$objective
[1] -10.68045

Ma questo è un problema semplice; massimizziamo senza iterare:

MaxFunc <- function(lambda){
  -lambda * (10 + 10 / (exp(lambda) - 1)) + 20 * log(lambda)
}

optimize(MaxFunc, c(0,4), maximum = TRUE)
$maximum
[1] 2.393027

$objective
[1] -8.884968

Il valore della funzione è maggiore rispetto alla procedura non iterativa e il risultato non è coerente con le altre metodologie. Perché la seconda procedura fornisce una risposta diversa (presumo) errata?

Risposte:


6

Xio=0yQy λ-1λ-1

QλyyQf(λ)=Q(λ,λ)

f(λ)f

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.