Giả sử rằng bạn có một dân số với đơn vị, mỗi đơn vị có một biến ngẫu nhiên . Bạn quan sát các giá trị cho bất kỳ đơn vị nào có . Chúng tôi muốn ước tính .X i ~ Poisson ( λ ) n = N - n 0 X i > 0 λ
Có phương pháp về khoảnh khắc và cách khả năng tối đa có điều kiện để có câu trả lời, nhưng tôi muốn thử thuật toán EM. Tôi nhận được thuật toán EM là trong đó chỉ số chỉ ra giá trị từ lần lặp trước của thuật toán và không đổi đối với những thông số. (Tôi thực sự nghĩ rằng trong phân số trong ngoặc đơn phải là , nhưng điều đó có vẻ không chính xác; một câu hỏi cho một lần khác).-1Knn+1
Để thực hiện cụ thể này, giả sử , . Tất nhiên, và không được quan sát và sẽ được ước tính.Σ x i = 20 N n 0 λ
Khi tôi lặp lại chức năng sau, cắm vào giá trị tối đa của lần lặp trước đó, tôi đạt được câu trả lời đúng (được xác minh bằng CML, MOM và mô phỏng đơn giản):
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
Nhưng đây là một vấn đề đơn giản; hãy chỉ tối đa hóa mà không lặp lại:
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
Giá trị của hàm cao hơn trong thủ tục không lặp và kết quả không phù hợp với các phương pháp khác. Tại sao thủ tục thứ hai đưa ra một câu trả lời khác và (tôi đoán) không chính xác?