Hiểu về MCMC và thuật toán Metropolis-Hastings


13

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 :f(x)=axD

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 ).aaaa0aC

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 0D .L0a0D

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σ = s t e p s i z e . Bây giờ, s t e p s i z e là hằng số.aa1μ=a0σ=stepsizestepsize

5) đánh giá khả năng mới ( ) đưa ra một 1D .L1a1D

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.L1L0a1a0C

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 đềuL1L0U

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.UL1L0a1a0C

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.UL1L0a0Ca0

10) Kết thúc Lặp lại.

11) Loại bỏ một số yếu tố từ đầu (pha burn-in).C

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 .Ca

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?f(x)=ax
  • Đâ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 .f(x)=ax+b

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.

Câu trả lời:


11

Dường như có một số quan niệm sai lầm về thuật toán của Metropolis-Hastings (MH) trong mô tả của bạn về thuật toán.

Trước hết, người ta phải hiểu rằng MH là một thuật toán lấy mẫu. Như đã nêu trong wikipedia

Trong thống kê và trong vật lý thống kê, thuật toán Metropolis trộm Hastings là phương pháp chuỗi Monteov (MCMC) của Markov để lấy chuỗi các mẫu ngẫu nhiên từ phân phối xác suất mà việc lấy mẫu trực tiếp rất khó khăn.

Để thực hiện các thuật toán MH bạn cần một mật độ đề nghị hoặc phân phối nhảy , từ đó nó rất dễ dàng để mẫu. Nếu bạn muốn mẫu từ một phân phối f ( ) , thuật toán MH có thể được thực hiện như sau:Q(|)f()

  1. Chọn trạng thái ngẫu nhiên ban đầu .x0
  2. Tạo một ứng cử viên từ Q ( | x 0 ) .xQ(|x0)
  3. Tính tỉ số .α=f(x)/f(x0)
  4. Chấp nhận như một thực hiện f với xác suất α .xfα
  5. Hãy như tình trạng ban đầu mới và tiếp tục lấy mẫu cho đến khi bạn có được kích thước mẫu mong muốn.x

Khi bạn lấy được mẫu, bạn vẫn cần phải đốt nó và làm mỏng nó: với điều kiện là bộ lấy mẫu hoạt động không có triệu chứng, bạn cần loại bỏ mẫu đầu tiên (burn-in) và cho rằng các mẫu phụ thuộc bạn cần lấy mẫu cho mỗi lần lặp k (tỉa thưa).Nk

Một ví dụ trong R có thể được tìm thấy trong liên kết sau:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

Phương pháp này được sử dụng chủ yếu trong thống kê Bayes để lấy mẫu từ phân phối sau của các tham số mô hình.

Ví dụ mà bạn đang sử dụng dường như không rõ ràng với tôi vì không phải là mật độ trừ khi bạn giới hạn x trên một tập hợp giới hạn. Ấn tượng của tôi là bạn quan tâm đến việc lắp một đường thẳng vào một tập hợp các điểm mà tôi sẽ khuyên bạn nên kiểm tra việc sử dụng thuật toán Metropolis-Hastings trong bối cảnh hồi quy tuyến tính. Liên kết sau đây trình bày một số ý tưởng về cách MH có thể được sử dụng trong ngữ cảnh này (Ví dụ 6.8):f(x)= =mộtxx

Robert & Casella (2010), Giới thiệu phương pháp Monte Carlo với R , Ch. 6, "Thuật toán của Hastolis Thắng"

Ngoài ra còn có rất nhiều câu hỏi, với các gợi ý đến các tài liệu tham khảo thú vị, trong trang web này thảo luận về ý nghĩa của chức năng khả năng.

Một con trỏ khác có thể quan tâm là gói R mcmc, thực hiện thuật toán MH với các đề xuất Gaussian trong lệnh metrop().


Chào bạn của tôi. Vâng, tôi đang xem xét MH trong bối cảnh hồi quy tuyến tính. Các url bạn đã cho tôi giải thích mọi thứ thực sự tốt đẹp. Cảm ơn bạn. Nếu tôi đưa ra một số câu hỏi khác liên quan đến MH, tôi sẽ đăng lại câu hỏi. Cảm ơn một lần nữa.
AstrOne
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.