Her biri rastgele değişken olan birimine sahip bir popülasyonunuz olduğunu varsayalım . olan herhangi bir birim için değerlerini gözlemlersiniz . Bir tahmin istiyoruz .
Anların yöntemi ve cevabı almak için koşullu maksimum olasılık yolları var, ancak EM algoritmasını denemek istedim. EM algoritmasının burada alt yapısı, algoritmanın önceki yinelemesinden gelen değeri gösterir ve , parametreleri. (Aslında düşünüyorum parantez içinde kesir olmalıdır ; başka bir zaman bir sorum, ama bu doğru görünmüyor).
Bunu somutlaştırmak için , olduğunu varsayın . Elbette, ve gözlemlenmez ve tahmin edilir.
Aşağıdaki işlevi yinelediğimde, önceki yinelemenin maksimum değerini eklediğimde, doğru cevaba ulaşıyorum (CML, MOM ve basit bir simülasyon tarafından doğrulandı):
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
Ancak bu basit bir sorundur; tekrarlamadan en üst düzeye çıkaralım:
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
İşlevin değeri yinelemesiz yordamdan daha yüksektir ve sonuç diğer yöntemlerle tutarsızdır. İkinci prosedür neden farklı ve (sanırım) yanlış bir cevap veriyor?