Создайте цепи MCMC для многомерного нормального распределения с помощью сэмплера Гамильтонова Монте-Карло (HMC).
Задайте количество параметров к выборке и их средним значениям.
Во-первых, сохраните функциональный normalDistGrad
на пути MATLAB®, который возвращает многомерную нормальную логарифмическую плотность вероятности и ее градиент (normalDistGrad
задан в конце этого примера). Затем вызовите функцию с аргументами, чтобы задать logpdf
входной параметр к hmcSampler
функция.
Выберите начальную точку сэмплера. Создайте сэмплер HMC и настройте его параметры.
Чертите выборки от следующей плотности, с помощью нескольких независимых цепей. Выберите отличающийся, случайным образом распределенные начальные точки для каждой цепи. Задайте количество выборок выжигания дефектов, чтобы отбросить с начала Цепи Маркова и количества выборок, чтобы сгенерировать после выжигания дефектов. Установите 'VerbosityLevel'
распечатать детали во время выборки для первой цепи.
|==================================================================================|
| ITER | LOG PDF | STEP SIZE | NUM STEPS | ACC RATIO | DIVERGENT |
|==================================================================================|
| 500 | 8.017202e+01 | 5.303e-01 | 4 | 8.820e-01 | 0 |
| 1000 | 7.756258e+01 | 5.303e-01 | 8 | 8.500e-01 | 0 |
| 1500 | 9.227175e+01 | 5.303e-01 | 2 | 8.547e-01 | 0 |
| 2000 | 8.073805e+01 | 3.128e-02 | 6 | 8.610e-01 | 0 |
| 2500 | 9.672952e+01 | 5.161e-01 | 2 | 8.600e-01 | 0 |
После получения случайной выборки исследуйте проблемы, такие как сходимость и смешивание, чтобы определить, представляют ли выборки разумный набор случайной реализации от целевого распределения. Чтобы исследовать выход, постройте графики трассировки выборок для первых нескольких переменных с помощью первой цепи.
Много выборок выжигания дефектов были удалены, чтобы уменьшать эффект начальной точки выборки. Кроме того, графики трассировки похожи на высокочастотный шум без любой видимой корреляции дальней между выборками. Это указывает, что цепь хорошо смешана.
normalDistGrad
функция возвращает логарифм многомерной нормальной плотности вероятности со средними значениями в Mu
и стандартные отклонения в Sigma
, заданный как скаляры или столбцы векторизовал ту же длину как startpoint
. Вторым выходным аргументом является соответствующий градиент.