Gói phần mềm tối ưu để phân tích bayes


14

Tôi đã tự hỏi gói phần mềm thống kê nào mà các bạn đề nghị để thực hiện suy luận Bayes.

Ví dụ: tôi biết rằng bạn có thể chạy openBUGS hoặc winBUGS dưới dạng standalones hoặc bạn cũng có thể gọi chúng từ R. Nhưng R cũng có một số gói riêng (MCMCPack, BACCO) có thể phân tích bayesian.

Có ai có bất kỳ đề xuất nào về gói số liệu thống kê bayes trong R là tốt nhất hoặc về các lựa chọn thay thế khác (Matlab hoặc Mathematica không?)

Các tính năng chính tôi đang tìm kiếm để so sánh là hiệu suất, dễ sử dụng, ổn định và linh hoạt


1
(1) Tôi không nghĩ có một gói có thể đủ điều kiện là tối ưu . (2) Phân tích Bayes không chỉ bao gồm lấy mẫu. (3) Các gói R này rất hữu ích để lấy mẫu: Rtwalk , mcmc . Họ chỉ yêu cầu lập trình log-posterior nhưng không có gói nào là không thể sai được. (4) Người ta biết rằng, theo lập trình thích hợp: R<(Matlab,Python)<Cvề hiệu quả (xem ví dụ liên kết ).

2
điểm công bằng, mặc dù re: 4 - điều này không nhất thiết đúng nếu bạn bao gồm thời gian phát triển. Ngoài ra, các giải pháp dựa trên R (giao tiếp với R hoặc chạy dưới dạng gói R) thường sử dụng C / C ++ cho mã lấy mẫu.
dùng4733

@ user4733, các giải pháp dựa trên C ++ nhanh hơn 5-10 lần so với các biến thể BUGS và nhanh hơn nhiều so với các giải pháp R, xem câu trả lời của tôi.
Tò mò

câu hỏi tương tự: stats.stackexchange.com/q/9202/5509
Tò mò

Câu trả lời:


11

Các biến thể BUGS bên ngoài là tiêu chuẩn. Hoạt động trong R có thể thuận tiện, nhưng tôi sẽ ngạc nhiên nếu các gói đó hoàn thiện và hoạt động tốt. Sử dụng một thư viện bắc cầu R và chương trình bên ngoài thường là sự thỏa hiệp phổ biến nhất.

Tôi sử dụng kết hợp jags / rjags (jags có thể được coi là một phương ngữ của lỗi). Tôi đã không thử các biến thể lỗi khác, nhưng các báo cáo tôi đã nghe là hiệu suất và khả năng xử lý các vấn đề về số lượng của jags tốt hơn một chút so với các biến thể lỗi khác. Tôi thấy jags dễ sử dụng, nhưng tất nhiên, bạn cần một số kiến ​​thức về phân tích dữ liệu bayesian để biết cách sử dụng nó.


Hmm ok cảm ơn lời khuyên của bạn! Vì vậy, bạn nghĩ rằng các biến thể BUGS là cách nhanh nhất để làm phân tích bayes?
BYS2

4
Có nhưng đọc một cuốn sách đầu tiên. Phân tích dữ liệu Bayesian của Gelman là hợp quy, mặc dù phân tích dữ liệu bayes của Kruschke có rào cản thấp hơn để nhập cảnh (mặc dù có lẽ không thấp như những chú chó con trên trang bìa gợi ý).
dùng4733

7

Trong 3 biến thể BUGS (openBUGS / winBUGS, jags) dường như là hứa hẹn nhất cho sự phát triển tính năng trong tương lai và openBUGS / winBUGS dường như là các dự án chết. Tuy nhiên, jags vẫn còn thiếu một số niceties có trong openBUGS / winBUGS (cũng xem tại đây ). Mặt khác, jags đã loại bỏ một số hạn chế trong WinBUGS, ví dụ:

x ~ dnorm(0, tau) 
tau ~ dgamma(1.0E-3, 1.0E-3) # in WinBUGS, you cannot do this, 1.0E-3 is too small 
                             # for dgamma (use e.g. dgamma(0.01, 0.01))

Tin tốt là với hầu hết các mô hình, bạn có thể chạy chúng trong cả 3 công cụ chỉ với những thay đổi tối thiểu, do đó bạn có thể chuyển sang công cụ khác sau mà không gặp nhiều vấn đề (đó là những gì tôi làm).

Tuy nhiên, vì một số lý do (ví dụ thiếu tính song song và bản chất phiên dịch) , không đúng khi các biến thể BUGS này là cách nhanh nhất để thực hiện phân tích bayesian! Trong thực tế, hoàn toàn ngược lại. Các dự án BUGS là tốt để kiểm tra và phát triển các mô hình phức tạp trên các bộ dữ liệu nhỏ . Khi bạn đã phát triển mô hình và cần chạy nó nhiều lần trên các bộ dữ liệu lớn, việc sử dụng các công cụ khác nhau sẽ hiệu quả hơn.

Ví dụ, combo CppBugs / RCpp được cho là nhanh hơn 5-10 lần so với các biến thể BUGS. Nguyên tắc là về cơ bản, bạn biên dịch mô hình của mình thành một chương trình C ++, chạy nhanh hơn nhiều. Ngoài ra, hãy xem blog của Dirk Eddelbuettel để kiểm tra Rcpp - trông rất nhanh. Bạn cũng có thể chơi với song song.

Bạn cũng có thể thực hiện tính toán song song trong WinBUGS bằng cách sử dụng bugsparallel .


Ồ wow, cảm ơn vì tất cả lời khuyên của bạn, nó rất hữu ích :)
BYS2

Không có gì. Khu vực nghiên cứu của bạn là gì? Nếu đó là hệ sinh thái, tôi có thể giới thiệu sách về phân tích Bayes bằng WinBUGS trong Sinh thái dân số.
Tò mò

Thật thú vị, có tài liệu tham khảo về cách cppbugs so sánh với jags không? Vì jags được viết bằng C ++, nên không rõ ràng ngay lập tức bao nhiêu phần giải thích sẽ đòi hỏi.
dùng4733

2
Andrew gelman có một dự án đầy hứa hẹn tên là Stan ( mc-stan.org ) về cơ bản là một phương ngữ lỗi được biên dịch thành c ++ và điều đó dường như thực sự nhanh so với các lỗi.
Rasmus Bååth

2
@ RasmusBååth Bạn nên đưa ra câu trả lời của riêng mình. Stancó khả năng trở thành một phần mềm cho các mô hình Bayes.
Ari B. Friedman
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.