สมมติว่าคุณมีประชากรที่มีหน่วยแต่ละคนมีตัวแปรสุ่มแลมบ์ดา) คุณสังเกตn = N-n_0ค่าสำหรับหน่วยใด ๆ ที่x_i> 0 เราต้องการการประมาณการของ\ แลมบ์ดา
มีวิธีการสักครู่และวิธีหาโอกาสสูงสุดแบบมีเงื่อนไขในการรับคำตอบ แต่ฉันต้องการลองใช้อัลกอริทึม EM ฉันได้อัลกอริทึม EM เป็น
เพื่อให้เป็นรูปธรรมนี้สมมติว่า , 20 แน่นอนว่าและไม่มีการตรวจสอบและจะถูกประเมิน
เมื่อฉันทำซ้ำฟังก์ชันต่อไปนี้เสียบค่าสูงสุดของการทำซ้ำก่อนหน้านี้ฉันได้คำตอบที่ถูกต้อง (ตรวจสอบโดย 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
ค่าของฟังก์ชั่นสูงกว่าในขั้นตอนการทำซ้ำและผลลัพธ์ที่ไม่สอดคล้องกับวิธีการอื่น ๆ เหตุใดขั้นตอนที่สองจึงให้คำตอบที่แตกต่างและ (ฉันเข้าใจ) คำตอบที่ไม่ถูกต้อง