Я пытаюсь реализовать алгоритм запуска и запуска MCMC, но у меня возникли проблемы с пониманием, как это сделать. Общая идея заключается в следующем:
Чтобы сгенерировать скачок предложения в MH, мы:
- Создать направление из распределения на поверхности единичной сферы O
- Генерируйте расстояние вдоль ограниченного пространства.
Тем не менее, я понятия не имею, как мне следует реализовать это в R (или любом другом языке).
У кого-нибудь есть фрагмент кода, который укажет мне правильное направление?
Кстати, я не настолько заинтересован в библиотеке, которая делает этот метод, я хочу попробовать и сам ее кодировать.
Большое спасибо.
Ответы:
Я не смотрел на бумагу, которую ты поставил, но все равно дай мне попробовать:
(см. вики ).
Затем используйте это для генерации предложений поd для отбраковки (если вы действительно можете оценить распределение для d ).
Предполагая, что вы начинаете в позицииИкс и приняли d , сгенерировать предложение Y с
и сделайте Метрополис-Гастингс-Степ, чтобы решить, следует ли переехать вY или не.
Конечно, насколько хорошо это может работать, будет зависеть от распределенияd и насколько дорого (неоднократно) оценивать его плотность на этапе отбраковки, но с тех пор, как составить предложения по d дешево вы можете сойти с рук.
Добавлено для пользы @ csgillespie:
From what I was able to gather by some googling, hit-and-run MCMC is useful primarily for fast mixing if you have a (multivariate) target that has arbitrary bounded but not necessarily connected support, because it enables you to move from any point in the support to any other in one step. More here and here.
источник
I came across your question when I was looking for the original reference for Hit-and-Run. Thanks for that! I just put together a proof-of-concept implementation of hit-and-run for PyMC at the end of this recent blog.
источник