Создайте цепочки 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
. Вторым выходным аргументом является соответствующий градиент.