Предположим, что у вас есть популяция с единицами, каждая со случайной величиной . Вы наблюдаете значений для любой единицы измерения, для которой . Мы хотим оценить .X i ∼ Пуассона ( λ ) n = N - n 0 X i > 0 λ
Есть метод моментов и условные способы получения максимального правдоподобия, но я хотел попробовать алгоритм EM. Я получаю EM-алгоритм для где индекс указывает значение из предыдущей итерации алгоритма, а является постоянным по отношению к параметры. (Я действительно думаю, что в дроби в скобках должно быть , но это не кажется точным; вопрос в другой раз).-1Knn+1
Чтобы сделать это конкретным, предположим, что , . Конечно, и не соблюдаются, и должен быть оценен.
Когда я повторяю следующую функцию, вставляя максимальное значение предыдущей итерации, я получаю правильный ответ (проверяется с помощью CML, MOM и простого моделирования):
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
Но это простая проблема; давайте просто максимизируем без итерации:
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
Значение функции выше, чем в неитерационной процедуре, и результат не согласуется с другими методологиями. Почему вторая процедура дает другой и (я полагаю) неправильный ответ?