Натисніть і запустіть MCMC


16

Я намагаюся реалізувати алгоритм звернення та запуску MCMC, але у мене виникають проблеми з розумінням того, як це зробити. Загальна ідея полягає в наступному:

Щоб створити скачок пропозиції в МЗ, ми:

  • Створіть напрямок з розподілу на поверхні одиничної сфериdO
  • Створіть підписану відстань вздовж обмеженого простору.λ

Однак я не маю уявлення про те, як мені слід займатися реалізацією цього в R (або будь-якій іншій мові).

У когось є фрагмент коду, який би вказував на мене в правильному напрямку?

До речі, мене не так цікавить бібліотека, яка займається цим методом, я хочу спробувати її кодувати самостійно.

Велике дякую.


1
Ніколи раніше не чув про цей алгоритм, але він звучить досить цікаво. Чи можете ви надати посилання на пояснювальне джерело? Дякую !
steffen

@steffen Ось посилання на оригінальний документ - насправді технічний звіт. Я ніколи не використовував цю процедуру.
csgillespie

1
Яка перевага хіт-запуску MCMC перед іншими методами? Швидкість конвергенції?
RockScience

@fRed: Тому я запропонував щедроту. Я читав про «Хіт і біжи», але не знаю, за яких обставин це було б корисно.
csgillespie

3
Зараз посилання розірвано.
daknowles

Відповіді:


11

Я не дивився на наданий вами папір, але все одно дозвольте мені піти:

Якщо у вас є -вимірний простір параметрів, ви можете генерувати випадковий напрямок рівномірно розподілений на поверхні одиничної сфери за допомогоюpd

x <- rnorm(p)
d <- x/sqrt(sum(x^2))

(пор. Wiki ).

Потім використовуйте це для створення пропозицій щодо для вибірки відхилення (якщо припустити, що ви можете фактично оцінити розподіл для ).dd

Якщо припустити, що ви починаєте в позиції і прийняли , створіть пропозицію зxdy

 lambda <- r<SOMEDISTRIBUTION>(foo, bar)
 y <- x + lambda * d

і зробити Метрополіс-Гастінгс-Step , щоб вирішити , слід чи перейти до чи ні.y

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


Додано для переваги @ csgillespie:

З того, що мені вдалося зібрати за допомогою якогось гуглінгу, удару та запуску MCMC корисно в першу чергу для швидкого змішування, якщо у вас є (багатоваріантна) ціль, яка має довільну обмежену, але не обов'язково підключену підтримку, тому що вона дозволяє вам рухатися з будь-якої точки в підтримку будь-якого іншого за один крок. Більше тут і тут .


1
Якщо ця відповідь не задовільна, ви могли б пояснити чому?
Джон Сальватьє

Я не впевнений у @fred, але коли я запропонував нагороду, то, мабуть, я хотів трохи більше зрозуміти MCMC. Наприклад, для яких типів проблем найкраще підходити. Звичайно, якщо інших відповідей немає, то це запитання виграло б щедрість.
csgillespie

3
@csgillespie: Я змінив свою відповідь, щоб краще відповідати вашим інтересам. Нехай це не скаже, що я не заслужив щедрості. ;)
фабі

2
Велике спасибі за посилання. Однією з причин, по якій я поставив щедрості, було те, що мої пошуки в Google викликали декілька математичних дискусій методу, але мало на шляху практичних застосувань. Будь ласка, не сприймайте це як незначне, якщо я зачекаю ще 48 годин до вручення винагороди (це особливо щедрий щедрот!)
csgillespie

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.