Создайте цепи MCMC для многомерного нормального распределения с помощью гамильтонового сэмплера Монте-Карло (HMC).
Определите количество параметров для выборки и их средства.
Во-первых, сохраните функцию normalDistGrad
на пути MATLAB ®, который возвращает многомерную нормальную логарифмическую плотность вероятностей и ее градиент (normalDistGrad
определяется в конце этого примера). Затем вызовите функцию с аргументами, чтобы задать logpdf
входной параметр в hmcSampler
функция.
Выберите начальную точку дискретизатора. Создайте HMC-дискретизатор и настройте его параметры.
Нарисуйте выборки из апостериорной плотности, используя несколько независимых цепей. Выберите различные, случайным образом распределенные начальные точки для каждой цепи. Укажите количество выборок горения, которые нужно сбросить с начала марковской цепи, и количество выборок, которые будут сгенерированы после горения. Установите 'VerbosityLevel'
для печати подробных данных во время выборки для первой цепи.
|==================================================================================|
| ITER | LOG PDF | STEP SIZE | NUM STEPS | ACC RATIO | DIVERGENT |
|==================================================================================|
| 500 | 8.450463e+01 | 4.776e-01 | 5 | 9.060e-01 | 0 |
| 1000 | 8.034444e+01 | 4.776e-01 | 9 | 8.810e-01 | 0 |
| 1500 | 9.156276e+01 | 4.776e-01 | 2 | 8.867e-01 | 0 |
| 2000 | 8.027782e+01 | 2.817e-02 | 6 | 8.890e-01 | 0 |
| 2500 | 9.892440e+01 | 4.648e-01 | 2 | 8.904e-01 | 0 |
После получения случайной выборки исследуйте такие проблемы, как сходимость и смешивание, чтобы определить, представляют ли выборки разумный набор случайных реализаций из целевого распределения. Чтобы изучить выход, постройте графики трассировки выборок для первых нескольких переменных с помощью первой цепи.
Для уменьшения эффекта начальной точки отбора проб было удаляемы несколько выборок для обжига. Кроме того, трассировочные графики выглядят как высокочастотный шум, без какой-либо видимой дальней корреляции между выборками. Это указывает, что цепь хорошо перемешана.
The normalDistGrad
функция возвращает логарифм многомерной нормальной плотности вероятностей со средством в Mu
и стандартные отклонения в Sigma
, заданный как скаляры или векторы столбцов той же длины, что и startpoint
. Второй выходной аргумент является соответствующим градиентом.