Suponha que você tenha uma população com unidades, cada uma com uma variável aleatória . Você observa valores para qualquer unidade para a qual . Queremos uma estimativa de .X i isson Poisson ( λ ) n = N - n 0 X i > 0 λ
Existem métodos de momentos e formas condicionais de probabilidade máxima de obter a resposta, mas eu queria experimentar o algoritmo EM. Eu recebo o algoritmo EM para que o índice indica o valor da iteração anterior do algoritmo e é constante em relação a os parametros. (Na verdade, acho que o na fração entre parênteses deve ser , mas isso não parece preciso; uma pergunta para outra hora).-1Knn+1
Para tornar isso concreto, suponha que , . Obviamente, e não são observados e deve ser estimado.∑ x i = 20 N n 0 λ
Quando eu itero a função a seguir, inserindo o valor máximo da iteração anterior, alcanço a resposta correta (verificada por CML, MOM e uma simulação simples):
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
Mas este é um problema simples; vamos maximizar sem 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
O valor da função é maior que no procedimento não iterativo e o resultado é inconsistente com as outras metodologias. Por que o segundo procedimento está dando uma resposta diferente e (presumo) incorreta?