베이지안 분석을위한 최적의 소프트웨어 패키지


14

베이지안 추론을 수행하기 위해 어떤 소프트웨어 통계 패키지를 권장하는지 궁금합니다.

예를 들어, openBUGS 또는 winBUGS를 독립형으로 실행하거나 R에서 호출 할 수 있다는 것도 알고 있습니다. 그러나 R에는 베이지안 분석을 수행 할 수있는 자체 패키지 (MCMCPack, BACCO)도 있습니다.

R의 어떤 베이지안 통계 패키지가 가장 좋거나 다른 대안 (Matlab 또는 Mathematica)에 대한 제안이 있습니까?

내가 비교하고자하는 주요 기능은 성능, 사용 편의성, 안정성 및 유연성입니다.


1
(1) 최적 의 패키지가 있다고 생각하지 않습니다 . (2) 베이지안 분석에는 샘플링 만이 포함되지 않습니다. (3)이 R 패키지는 샘플링에 유용합니다 : Rtwalk , mcmc . 그것들은 로그-포어를 프로그래밍 할 필요가 있지만 패키지가 완벽한 것은 아니다. (4) 적절한 프로그래밍 하에서 R<(Matlab,Python)<C효율성 측면에서 (예를 들어 링크 참조 ) 잘 알려져있다 .

2
re : 4에도 불구하고 공정한 포인트-개발 시간을 포함한다면 반드시 그런 것은 아닙니다. 또한 R 기반 솔루션 (R과 인터페이스하거나 R 패키지로 실행)은 일반적으로 샘플링 코드에 C / C ++를 사용합니다.
user4733

@ user4733, C ++ 기반 솔루션은 BUGS 변형보다 5-10 배 빠르며 R 솔루션보다 훨씬 빠릅니다. 내 대답을 참조하십시오.
Curious

답변:


11

외부 버그 변형이 표준입니다. R 내에서 작업하는 것이 편리 할 수 ​​있지만 패키지가 성숙하고 성능이 좋으면 놀랍습니다. R과 외부 프로그램을 연결하는 라이브러리를 사용하는 것이 일반적으로 가장 일반적입니다.

jags / rjags 콤보를 사용합니다 (jags는 대략 버그의 방언으로 간주 될 수 있음). 나는 다른 버그 변형을 시도하지 않았지만 내가 들었던 보고서는 jags의 성능과 수치 문제를 처리하는 능력이 다른 버그 변형보다 약간 낫다는 것입니다. 나는 jags를 사용하기 쉽다는 것을 알지만 물론 베이지안 데이터 분석에 대한 지식이 필요합니다.


흠, 조언 감사합니다! 따라서 BUGS 변형이 베이지안 분석을 수행하는 가장 빠른 방법이라고 생각하십니까?
BYS2

4
예,하지만 책을 먼저 읽으십시오. Kruschke의 베이지안 데이터 분석은 진입 장벽이 낮지 만 Gelman의 베이지안 데이터 분석은 정식입니다.
user4733

7

3 가지 BUGS 변형 (openBUGS / winBUGS, jags) 내에서 jags는 향후 기능 개발에서 가장 무시할만한 것으로 보이고 openBUGS / winBUGS는 죽은 프로젝트 인 것 같습니다. 그러나, jags는 여전히 openBUGS / winBUGS에 존재하는 약간의 미묘함이 부족합니다 ( 여기 참조 ). 반면 jags는 WinBUGS에 존재하는 일부 제한 사항을 제거했습니다.

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

좋은 소식은 대부분의 모델에서 최소한의 변경만으로 3 가지 도구 모두에서 실행할 수 있으므로 나중에 많은 문제없이 다른 도구로 전환 할 수 있다는 것입니다.

그러나 몇 가지 이유로 (예 : 병렬 처리 및 해석기 특성 부족) 이러한 BUGS 변형이 베이지안 분석을 수행하는 가장 빠른 방법이라는 것은 사실이 아닙니다! 실제로는 정반대입니다. BUGS 프로젝트는 소규모 데이터 세트에서 복잡한 모델을 테스트하고 개발하기에 좋습니다 . 모델을 개발하고 대규모 데이터 세트에서 반복적으로 실행해야하는 경우 다른 도구를 사용하는 것이 더 효율적입니다.

예를 들어 CppBugs / rcpp 콤보는 BUGS 변형보다 5-10 배 빠릅니다. 기본적으로 모델을 C ++ 프로그램으로 컴파일하면 훨씬 빠르게 실행됩니다. 또한 Dic Eddelbuettel의 Rcpp 테스트 블로그를 살펴보십시오 . 병렬 처리를 할 수도 있습니다.

bugsparallel을 사용하여 WinBUGS 에서 병렬 계산을 수행 할 수도 있습니다 .


오 와우, 모든 조언을 주셔서 감사합니다, 그것은 매우 유용했습니다 :)
BYS2

아니에요. 연구 분야는 무엇입니까? 그것이 생태학이라면, 인구 생태학에서 WinBUGS를 사용한 베이지안 분석에 관한 책을 추천 할 수 있습니다.
Curious

흥미로운 점은 cppbugs가 jags와 어떻게 비교되는지에 대한 언급이 있습니까? jags는 C ++로 작성되었으므로 해석 계층에 어느 정도의 오버 헤드가 수반되는지는 분명하지 않습니다.
user4733

2
Andrew gelman 은 Stan ( mc-stan.org ) 이라는 유망한 프로젝트를 가지고 있습니다.이 프로젝트는 기본적으로 c ++로 컴파일되는 버그 방언이며 버그와 비교하여 정말 빠릅니다.
Rasmus Bååth

2
@ RasmusBååth 당신은 그 자신의 대답을해야합니다. Stan될 가능성이 베이지안 모델에 대한 소프트웨어의 조각.
Ari B. Friedman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.