Оптимальний програмний пакет для байєсівського аналізу


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 ++ на 5-10 разів швидше, ніж варіанти BUGS, і набагато швидше, ніж рішення R, дивіться мою відповідь.
Цікаво

подібне запитання: stats.stackexchange.com/q/9202/5509
цікаво

Відповіді:


11

Зовнішні варіанти BUGS - це стандарт. Робота в R може бути зручною, але я буду здивований, якщо ці пакети будуть настільки ж зрілими та ефективними. Використання бібліотеки, яка з'єднує R та зовнішню програму, як правило, є найпоширенішим компромісом.

Я використовую комбінацію jags / rjags (джеги можуть вважатися діалектом помилок). Я не пробував інших варіантів помилок, але звіти, які я чув, такі, що продуктивність і здатність джегів вирішувати числові проблеми трохи краще, ніж інші варіанти помилок. Я вважаю, що грязі прості у використанні, але, звичайно, вам потрібні певні знання аналізу байесівських даних, щоб знати, як ним користуватися.


Хм добре, дякую за пораду! Отже, ви вважаєте, що варіанти BUGS - це найшвидший спосіб зробити байєсівський аналіз?
BYS2

4
Так, але спочатку прочитайте книгу. Байєсський аналіз даних Гельмана є канонічним, хоча аналіз даних Байесів Крушке має менший бар'єр для входу (хоча, можливо, не такий низький, як це свідчить цуценят на обкладинках).
user4733

7

У 3 варіантах BUGS (openBUGS / winBUGS, джеги) прорізи здаються найбільш перспективними щодо майбутнього розвитку функції, а openBUGS / winBUGS, здається, є мертвими проектами. Однак, джегам все ще не вистачає делікатесів у openBUGS / winBUGS (також дивіться тут ). З іншого боку, джеги усунули деякі обмеження, наявні в 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 на 5-10 разів швидша, ніж варіанти BUGS. Принцип полягає в тому, що ви в основному компілюєте свою модель в програму C ++, яка працює набагато швидше. Крім того , подивіться на блозі Дірка Eddelbuettel для випробування Rcpp - виглядає жорстоко швидко. Ви також можете грати з паралелізмом.

Ви також можете робити паралельні обчислення в WinBUGS, використовуючи bugsparallel .


О, гаразд, дякую за всі ваші поради, це було дуже корисно :)
BYS2

Будь ласка. Яка ваша дослідницька область? Якщо це екологія, я можу порекомендувати книги з байєсівського аналізу за допомогою WinBUGS in Population Ecology.
Цікаво

Цікаво, чи є посилання на те, як cppbugs порівнюється з джегами? Оскільки джеги написані на C ++, не відразу очевидно, скільки би накладало накладний шар інтерпретації.
user4733

2
Ендрю Гельман має багатообіцяючий проект під назвою Stan ( mc-stan.org ), який в основному є діалектом помилок, який збирається до c ++ і, що здається дуже швидким порівняно з помилками.
Rasmus Bååth

2
@ RasmusBååth Ви повинні зробити свою відповідь. Stanшвидше за все, стане частиною програмного забезпечення для моделей Байєсова.
Арі Б. Фрідман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.