মনে করুন যে আপনার জনসংখ্যার ইউনিট রয়েছে, প্রতিটি র্যান্ডম ভেরিয়েবল । আপনি জন্য যে কোনও ইউনিটের জন্য মানগুলি পর্যবেক্ষণ করেন । আমরা একটি অনুমান চাই ।
মুহুর্তগুলির পদ্ধতি এবং শর্তাধীন উত্তর পাওয়ার সম্ভাব্য উপায়গুলি রয়েছে তবে আমি ইএম অ্যালগরিদম চেষ্টা করতে চেয়েছিলাম। আমি 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
ফাংশনটির মান আন-পুনরাবৃত্ত পদ্ধতির চেয়ে বেশি এবং ফলাফল অন্যান্য পদ্ধতির সাথে অসামঞ্জস্যপূর্ণ। দ্বিতীয় পদ্ধতিটি কেন একটি পৃথক এবং (আমার ধারণা) ভুল উত্তর দিচ্ছে?