Supongamos que tenemos una población con $N$ unidades, cada una variable aleatoria $X_i \sim \text{Poisson}(\lambda)$. Observas $n = N-n_0$ valores para cualquier unidad para la cual se $X_i > 0$. Queremos una estimación de $\lambda$.
Hay método de los momentos y de máxima verosimilitud condicional maneras de obtener la respuesta, pero quería probar el algoritmo EM. Puedo obtener el algoritmo EM para ser $$ Q\left(\lambda_{-1}, \lambda\right) = \lambda \left(n + \frac{n}{\text{exp}(\lambda_{-1}) - 1}\right) + \log(\lambda)\sum_{i=1}^n{x_i} + K, $$ donde el $-1$ subíndice indica el valor de la anterior iteración del algoritmo y $K$ es constante con respecto a los parámetros. (En realidad creo que el $n$ en la fracción entre paréntesis debe ser $n+1$, pero eso no parece exacto; una pregunta para otro momento).
Para hacer este concreto, supongamos que $n=10$, $\sum{x_i} = 20$. Por supuesto, $N$ $n_0$ son observados y $\lambda$ es para ser estimado.
Cuando me iterar la función siguiente, el uso de la iteración anterior del valor máximo, puedo llegar a la respuesta correcta (verificado por la LMC, MAMÁ, 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 sencillo; vamos a maximizar sin iteración:
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 mayor que en las naciones unidas-procedimiento iterativo y el resultado es inconsistente con las otras metodologías. ¿Por qué es el segundo procedimiento dándole una forma diferente y (supongo) respuesta incorrecta?