Suponga que tiene una población con unidades, cada una con una variable aleatoria . Usted observa valores de para cualquier unidad para la cual . Queremos una estimación de .X i ∼ Poisson ( λ ) n = N - n 0 X i > 0 λ
Hay métodos de momentos y formas condicionales de máxima probabilidad de obtener la respuesta, pero quería probar el algoritmo EM. Obtengo que el algoritmo EM es donde el subíndice indica el valor de la iteración anterior del algoritmo y es constante con respecto a Los parametros. (De hecho, creo que la en la fracción entre paréntesis debería ser-1Knn+1
Para hacer esto concreto, suponga que , . Por supuesto, y no son observados y se debe estimar .∑ x i = 20 N n 0 λ
Cuando itero la siguiente función, conectando el valor máximo de la iteración anterior, llego a la respuesta correcta (verificada por CML, MOM y una simulación simple):
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
Pero este es un problema simple; vamos a maximizar sin iterar:
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
El valor de la función es más alto que en el procedimiento no iterativo y el resultado es inconsistente con las otras metodologías. ¿Por qué el segundo procedimiento da una respuesta diferente y (supongo) incorrecta?
fuente