Trong vài ngày qua, tôi đã cố gắng hiểu Markov Chain Monte Carlo (MCMC) hoạt động như thế nào. Cụ thể, tôi đã cố gắng để hiểu và thực hiện thuật toán Metropolis-Hastings. Cho đến nay tôi nghĩ rằng tôi có một sự hiểu biết tổng thể về thuật toán nhưng có một vài điều chưa rõ ràng đối với tôi. Tôi muốn sử dụng MCMC để phù hợp với một số mô hình dữ liệu. Bởi vì điều này, tôi sẽ mô tả sự hiểu biết của tôi về thuật toán Metropolis-Hastings để khớp một đường thẳng với một số dữ liệu quan sát D :
1) Dự đoán ban đầu cho . Thiết lập này một như hiện nay của chúng tôi một ( một 0 ). Đồng thời thêm một phần cuối của Chuỗi Markov ( C ).
2) Lặp lại các bước dưới đây một số lần.
3) Đánh giá khả năng hiện tại ( ) đưa ra một 0 và D .
4) Đề xuất một mới ( một 1 ) bằng cách lấy mẫu từ phân phối chuẩn với μ = một 0 và σ = s t e p s i z e . Bây giờ, s t e p s i z e là hằng số.
5) đánh giá khả năng mới ( ) đưa ra một 1 và D .
6) Nếu lớn hơn L 0 , chấp nhận một 1 là mới một 0 , append nó ở phần cuối của C và đi đến bước 2.
7) Nếu nhỏ hơn L 0, hãy tạo một số ( U ) trong phạm vi [0,1] từ phân phối đồng đều
8) Nếu nhỏ hơn chênh lệch giữa hai khả năng xảy ( L 1 - L 0 ), chấp nhận một 1 là mới một 0 , append nó ở phần cuối của C và đi đến bước 2.
9) Nếu lớn hơn sự khác biệt giữa hai khả năng xảy ( L 1 - L 0 ), append các một 0 ở phần cuối của C , tiếp tục sử dụng cùng một 0 , đi đến bước 2.
10) Kết thúc Lặp lại.
11) Loại bỏ một số yếu tố từ đầu (pha burn-in).
12) Bây giờ lấy trung bình của các giá trị trong . Trung bình này là ước tính a .
Bây giờ tôi có một số câu hỏi liên quan đến các bước trên:
- Làm cách nào để xây dựng hàm khả năng cho mà còn cho bất kỳ hàm tùy ý nào?
- Đây có phải là một triển khai chính xác của thuật toán Metropolis-Hastings?
- Làm thế nào việc lựa chọn phương pháp tạo số ngẫu nhiên ở Bước 7 có thể thay đổi kết quả?
- Thuật toán này sẽ thay đổi như thế nào nếu tôi có nhiều tham số mô hình? Ví dụ: nếu tôi có mô hình .
Ghi chú / Tín dụng: Cấu trúc chính của thuật toán được mô tả ở trên dựa trên mã từ Xưởng Python MPIA.