Lượt và chạy MCMC


16

Tôi đang cố gắng thực hiện thuật toán MCMC hit và chạy, nhưng tôi gặp một chút khó khăn để hiểu cách thực hiện. Ý tưởng chung, như sau:

Để tạo một bước nhảy đề xuất trong MH, chúng tôi:

  • Tạo hướng từ phân bố trên bề mặt của khối cầu đơn vịdÔi
  • Tạo khoảng cách đã ký dọc theo không gian bị hạn chế.λ

Tuy nhiên, tôi không biết làm thế nào tôi nên thực hiện điều này trong R (hoặc bất kỳ ngôn ngữ nào khác).

Có ai có một đoạn mã sẽ chỉ cho tôi đi đúng hướng không?

BTW, tôi không quan tâm đến một thư viện thực hiện phương pháp này, tôi muốn tự mình thử và mã hóa nó.

Cảm ơn nhiều.


1
Chưa bao giờ nghe về thuật toán này trước đây, nhưng nghe có vẻ khá thú vị. Bạn có thể cung cấp một liên kết đến một nguồn giải thích? Cảm ơn bạn !
steffen

@steffen Đây là một liên kết đến bài báo gốc - thực sự là báo cáo kỹ thuật. Tôi cũng chưa bao giờ sử dụng thủ tục này.
csgillespie

1
Lợi thế của hit và chạy MCMC so với các phương thức khác là gì? Tốc độ hội tụ?
RockScience

@fRed: Đó là lý do tại sao tôi cung cấp tiền thưởng. Tôi đã đọc về Hit và chạy, nhưng không biết trong trường hợp nào nó sẽ hữu ích.
csgillespie

3
Liên kết bây giờ bị hỏng.
daknowles

Câu trả lời:


11

Tôi đã không nhìn vào tờ giấy bạn cung cấp, nhưng dù sao tôi cũng phải đi:

Nếu bạn có một không gian tham số chiều bạn có thể tạo ra một hướng ngẫu nhiên phân bố đều trên bề mặt của hình cầu đơn vị vớipd

x <- rnorm(p)
d <- x/sqrt(sum(x^2))

(cf Wiki ).

Sau đó, sử dụng điều này để tạo các đề xuất cho để lấy mẫu từ chối (giả sử bạn thực sự có thể đánh giá phân phối cho ).dd

Giả sử bạn bắt đầu ở vị trí và đã chấp nhận một , hãy tạo một đề xuất vớixdy

 lambda <- r<SOMEDISTRIBUTION>(foo, bar)
 y <- x + lambda * d

và thực hiện một bước tiến thủ đô-đô-la để quyết định có nên chuyển sang hay không.y

Tất nhiên, việc này có thể hoạt động tốt như thế nào sẽ phụ thuộc vào việc phân phối và mức độ đắt đỏ (lặp đi lặp lại) đánh giá mật độ của nó trong bước lấy mẫu từ chối, nhưng vì việc tạo đề xuất cho rẻ nên bạn có thể bỏ qua nó.dd


Đã thêm cho lợi ích của @ csgillespie:

Từ những gì tôi có thể thu thập được bởi một số googling, MCMC hit-and-run rất hữu ích cho việc trộn nhanh nếu bạn có một mục tiêu (đa biến) có giới hạn tùy ý nhưng không nhất thiết phải hỗ trợ kết nối, bởi vì nó cho phép bạn di chuyển từ bất kỳ điểm nào trong hỗ trợ cho bất kỳ khác trong một bước. Thêm ở đâyở đây .


1
Nếu câu trả lời này không thỏa đáng, bạn có thể giải thích tại sao không?
John Salvatier

Tôi không chắc chắn về @fred, nhưng khi tôi cung cấp tiền thưởng, tôi cho rằng tôi muốn có một cái nhìn sâu sắc hơn về MCMC hit-and-run. Ví dụ, loại vấn đề nào sẽ phù hợp nhất cho. Tất nhiên, nếu không có câu trả lời nào khác, thì câu hỏi này sẽ giành được tiền thưởng.
csgillespie

3
@csgillespie: Tôi đã chỉnh sửa câu trả lời của mình để đáp ứng tốt hơn sự quan tâm của bạn. Hãy để nó không được nói rằng tôi đã không xứng đáng với tiền thưởng. ;)
fabian

2
Cảm ơn nhiều vì đã liên kết. Một trong những lý do tôi đặt tiền thưởng là các tìm kiếm trên google của tôi đã đưa ra một vài cuộc thảo luận toán học về phương pháp này, nhưng rất ít trong cách ứng dụng thực tế. Xin đừng coi nhẹ nếu tôi đợi thêm 48 giờ trước khi trao tiền thưởng (đó là tiền thưởng đặc biệt hào phóng!)
csgillespie

4

Tôi bắt gặp câu hỏi của bạn khi tôi đang tìm tài liệu tham khảo ban đầu cho Hit-and-Run. Cảm ơn vì điều đó! Tôi vừa đưa ra một triển khai bằng chứng về khái niệm hit-and-run cho PyMC ở cuối blog gần đây này .

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.