मान लीजिए कि आपके पास आबादी है इकाइयों, एक यादृच्छिक चर के साथ प्रत्येक । आप किसी भी इकाई के लिए मानों का निरीक्षण करते हैं जिसके लिए । हम का एक अनुमान चाहते हैं ।
उत्तर प्राप्त करने के क्षण और सशर्त अधिकतम संभावना के तरीके हैं, लेकिन मैं ईएम एल्गोरिथ्म की कोशिश करना चाहता था। मुझे EM एल्गोरिथ्म जहां सबस्क्रिप्ट एल्गोरिथ्म के पिछले पुनरावृत्ति से मान को इंगित करता है और सम्मान के साथ स्थिर है पैरामीटर। (मैं वास्तव में लगता है कि कोष्ठक में अंश में होना चाहिए , लेकिन वह सही प्रतीत नहीं होता है, एक समय के लिए एक प्रश्न)।
इस कंक्रीट को बनाने के लिए, मान लीजिए कि , । बेशक, और हैं और का अनुमान लगाया जाना है।
जब मैं निम्न फ़ंक्शन को पुनरावृत्त करता हूं, तो पिछले पुनरावृत्ति के अधिकतम मान में प्लगिंग करता हूं, मैं सही उत्तर (सीएमएल, एमओएम और एक सरल सिमुलेशन द्वारा सत्यापित) तक पहुंचता हूं:
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
फ़ंक्शन का मान संयुक्त-पुनरावृत्त प्रक्रिया से अधिक है और परिणाम अन्य कार्यप्रणाली के साथ असंगत है। दूसरी प्रक्रिया एक अलग और (मैं अनुमान) गलत जवाब क्यों दे रही हूं?