Создайте цепи MCMC с помощью гамильтонового анализатора Монте-Карло (HMC) и вычислите диагностику MCMC.
Во-первых, сохраните функцию на пути MATLAB ®, которая возвращает многомерную нормальную плотность вероятностей журнала и его градиент. В этом примере эта функция вызывается normalDistGrad
и определяется в конце примера. Затем вызовите эту функцию с аргументами, чтобы задать logpdf
входной параметр в hmcSampler
функция.
Выберите начальную точку. Создайте HMC-дискретизатор и настройте его параметры.
Нарисуйте выборки из апостериорной плотности, используя несколько независимых цепей. Выберите различные, случайным образом распределенные начальные точки для каждой цепи. Укажите количество выборок горения, которые нужно сбросить с начала марковской цепи, и количество выборок, которые будут сгенерированы после горения.
Вычислите диагностику MCMC и отобразите результаты. Сравните истинные средства в means
со столбцом под названием Mean
в MCMCdiagnostics
таблица. Истинные апостериорные средства находятся в пределах нескольких стандартных ошибок Монте-Карло (MCSE) предполагаемых апостериорных средств. 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
The normalDistGrad
функция возвращает логарифм многомерной нормальной плотности вероятностей со средством в Mu
и стандартные отклонения в Sigma
, заданный как скаляры или векторы столбцов той же длины, что и startpoint
. Второй выходной аргумент является соответствующим градиентом.