Misalkan Anda memiliki populasi dengan unit, masing-masing dengan variabel acak . Anda mengamati nilai untuk setiap unit yang . Kami ingin perkiraan .X i ∼ Poisson ( λ ) n = N - n 0 X i > 0 λ
Ada metode momen dan cara kemungkinan bersyarat maksimum untuk mendapatkan jawaban, tapi saya ingin mencoba algoritma EM. Saya mendapatkan algoritma EM menjadi mana subskrip menunjukkan nilai dari iterasi sebelumnya dari algoritma dan adalah konstan sehubungan dengan parameter. (Saya benar-benar berpikir bahwa dalam fraksi dalam tanda kurung harus , tetapi itu tampaknya tidak akurat; pertanyaan untuk waktu lain).-1Knn+1
Untuk membuat ini konkret, anggaplah bahwa , . Tentu saja, dan tidak teramati dan harus diperkirakan.
Ketika saya mengulangi fungsi berikut, memasukkan nilai maksimum iterasi sebelumnya, saya mencapai jawaban yang benar (diverifikasi oleh CML, MOM, dan simulasi sederhana):
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
Tapi ini masalah sederhana; mari kita maksimalkan tanpa iterasi:
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
Nilai fungsi lebih tinggi daripada dalam prosedur yang tidak iteratif dan hasilnya tidak konsisten dengan metodologi lain. Mengapa prosedur kedua memberikan jawaban yang berbeda dan (saya kira) salah?
sumber