В общем, я бы настоятельно рекомендовал не кодировать свой собственный MCMC для реального прикладного байесовского анализа. Это как много работы и времени , и очень вероятно , вводить ошибки в коде. Сэмплеры Blackbox, такие как Stan, уже используют очень сложные сэмплеры. Поверьте мне, вы не будете кодировать пробоотборник этого калибра только для одного анализа!
Существуют особые случаи, в которых этого будет недостаточно. Например, если вам нужно было провести анализ в режиме реального времени (т.е. компьютерное решение на основе входящих данных), эти программы не будут хорошей идеей. Это потому, что Stan требует компиляции кода C ++, что может занять значительно больше времени, чем просто запуск уже подготовленного сэмплера для относительно простых моделей. В этом случае вы можете написать свой собственный код. Кроме того, я полагаю, что есть особые случаи, когда пакеты, такие как Stan, работают очень плохо, такие как негауссовы модели пространства состояний (полное раскрытие: я считаю, что Stan работает плохо в этом случае, но не знает). В этом случае, возможно, стоит реализовать собственный MCMC. Но это исключение, а не правило!
Честно говоря, я думаю, что большинство исследователей, которые пишут сэмплеры для одного анализа (и я видел это), делают это потому, что им нравится писать свои собственные сэмплеры. По крайней мере, я могу сказать, что подпадаю под эту категорию (т.е. я разочарован тем, что написание собственного сэмплера не лучший способ сделать что-то).
Кроме того, хотя нет смысла писать свой собственный сэмплер для одного анализа , может иметь смысл написать собственный код для класса анализа., Поскольку JAG, Stan и т. Д. Являются сэмплерами черного ящика, вы всегда можете ускорить процесс, специализируясь на конкретной модели, хотя количество улучшений зависит от модели. Но написание чрезвычайно эффективного сэмплера с нуля - это, возможно, 10-1000 часов работы, в зависимости от опыта, сложности модели и т. Д. Если вы проводите исследования в области байесовских методов или пишете статистическое программное обеспечение, это нормально; это твоя работа Но если ваш начальник скажет: «Эй, вы можете проанализировать этот набор данных повторных измерений?» и вы потратите 250 часов на написание эффективного сэмплера, ваш босс, вероятно, будет расстроен. Напротив, вы могли бы написать эту модель в Stan, скажем, за 2 часа, и у вас было бы 2 минуты времени работы вместо 1 минуты времени, достигнутого эффективным пробоотборником.