Создайте цепи MCMC с помощью сэмплера Гамильтонова Монте-Карло (HMC) и вычислите диагностику MCMC.
Во-первых, сохраните функцию на пути MATLAB®, который возвращает многомерную нормальную логарифмическую плотность вероятности и ее градиент. В этом примере эта функция называется normalDistGrad
и задан в конце примера. Затем вызовите эту функцию с аргументами, чтобы задать logpdf
входной параметр к hmcSampler
функция.
Выберите начальную точку. Создайте сэмплер HMC и настройте его параметры.
Чертите выборки от следующей плотности, с помощью нескольких независимых цепей. Выберите отличающийся, случайным образом распределенные начальные точки для каждой цепи. Задайте количество выборок выжигания дефектов, чтобы отбросить с начала Цепи Маркова и количества выборок, чтобы сгенерировать после выжигания дефектов.
Вычислите диагностику MCMC и отобразите результаты. Сравните истинные средние значения в means
со столбцом назвал Mean
в MCMCdiagnostics
таблица. Истинные следующие средние значения в нескольких стандартных погрешностях Монте-Карло (MCSEs) предполагаемых следующих средних значений. Сэмплер HMC точно восстановил истинные средние значения. Точно так же предполагаемые стандартные отклонения в столбце SD
очень около истинных стандартных отклонений в standev
.
MCMCdiagnostics=3×8 table
Name Mean MCSE SD Q5 Q95 ESS RHat
______ _______ ________ _______ ________ ______ ______ ____
{'x1'} 1.0038 0.016474 0.96164 -0.58601 2.563 3407.4 1
{'x2'} -2.0435 0.034933 1.999 -5.3476 1.1851 3274.5 1
{'x3'} 1.9957 0.008209 0.49693 1.2036 2.8249 3664.5 1
standevs = 3×1
1.0000
2.0000
0.5000
normalDistGrad
функция возвращает логарифм многомерной нормальной плотности вероятности со средними значениями в Mu
и стандартные отклонения в Sigma
В виде скаляров или столбцов векторизовал ту же длину как startpoint
. Вторым выходным аргументом является соответствующий градиент.