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

14

Мне было интересно, какой пакет статистических программ вы, ребята, порекомендуете для выполнения байесовского вывода.

Например, я знаю, что вы можете запускать openBUGS или winBUGS как автономные или вы также можете вызывать их из R. Но R также имеет несколько своих собственных пакетов (MCMCPack, BACCO), которые могут выполнять байесовский анализ.

У кого-нибудь есть какие-либо предложения относительно того, какой пакет байесовской статистики в R является лучшим или о других альтернативах (Matlab или Mathematica?)

Основные характеристики, которые я хочу сравнить, - это производительность, простота использования, стабильность и гибкость.

BYS2
источник
1
(1) Я не думаю, что есть пакет, который можно было бы назвать оптимальным . (2) Байесовский анализ включает не только выборку. (3) Эти пакеты R полезны для отбора проб: Rtwalk , mcmc . Они требуют только программирования задней части журнала, но ни одна упаковка не является безошибочной. (4) Хорошо известно, что при соответствующем программировании: R<(Matlab,Python)<Cс точки зрения эффективности (см., Например, ссылку ).
2
Справедливо, хотя в отношении: 4 - это не обязательно верно, если вы включаете время разработки. Кроме того, решения на основе R (либо взаимодействующие с R, либо работающие как пакеты R) обычно используют C / C ++ для выборочного кода.
user4733
@ user4733, решения на основе C ++ в 5-10 раз быстрее, чем варианты BUGS, и намного быстрее, чем решения R, см. мой ответ.
любопытно
похожий вопрос: stats.stackexchange.com/q/9202/5509
Любопытно,

Ответы:

11

Варианты внешних БАГОВ являются стандартными. Работа в R может быть удобной, но я бы удивился, если бы эти пакеты были такими же зрелыми и работали. Использование библиотеки, которая соединяет R и внешнюю программу, обычно является наиболее распространенным компромиссом.

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

user4733
источник
Хм хорошо, спасибо за совет! Итак, вы считаете, что варианты BUGS - самый быстрый способ сделать байесовский анализ?
BYS2
4
Да, но сначала прочитайте книгу. Байесовский анализ данных Гельмана является каноническим, хотя Крушке проводит байесовский анализ данных с более низким барьером для входа (хотя, возможно, не так низко, как предполагают щенки на обложках).
user4733
7

Из трех вариантов BUGS (openBUGS / winBUGS, jags), как представляется, наиболее перспективными для разработки будущих функций являются зазубрины, а openBUGS / winBUGS кажутся мертвыми проектами. Тем не менее, в jag по-прежнему отсутствуют некоторые тонкости, присутствующие в 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))

Хорошая новость заключается в том, что с большинством моделей вы можете запускать их во всех трех инструментах с минимальными изменениями, поэтому вы можете переключиться на другой инструмент позже без особых проблем (это то, что я делаю).

Однако по некоторым причинам (например, из-за отсутствия параллелизма и природы интерпретатора) неверно, что эти варианты BUGS являются самым быстрым способом выполнения байесовского анализа! На самом деле совсем наоборот. Проекты BUGS хороши для тестирования и разработки сложных моделей на небольших наборах данных. . После того, как вы разработали модель и вам нужно многократно запускать ее для больших наборов данных, более эффективно использовать различные инструменты.

Например, комбо CppBugs / rcpp называется в 5-10 раз быстрее, чем варианты BUGS. Принцип заключается в том, что вы в основном компилируете свою модель в программу на C ++, которая работает намного быстрее. Также посмотрите блог Дирка Эддельбюттеля для теста Rcpp - выглядит быстро. Вы также можете играть с параллелизмом.

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

любознательный
источник
Ого, хорошо, спасибо за все ваши советы, это было очень полезно :)
BYS2
Добро пожаловать. Какова ваша область исследований? Если это экология, я могу порекомендовать книги по байесовскому анализу, используя WinBUGS в Population Ecology.
любопытно
интересно, есть ли ссылки на то, как cppbugs сравнивается с зазубринами? Так как jags написан на C ++, не сразу очевидно, сколько накладных расходов повлечет за собой уровень интерпретации.
user4733
2
У Эндрю Гелмана есть многообещающий проект под названием Stan ( mc-stan.org ), который в основном представляет собой диалект ошибок, который компилируется до c ++ и кажется очень быстрым по сравнению с ошибками.
Расм Батх
2
@ RasmusBååth Вы должны сделать это своим собственным ответом. Stanскорее всего, станет частью программного обеспечения для моделей Байесовских.
Ари Б. Фридман