diagnostics

Класс: HamiltonianSampler

Марковская цепь Монте-Карло диагностика

Синтаксис

tbl = diagnostics(smp,chains)
tbl = diagnostics(smp,chains,'MaxLag',maxlag)

Описание

tbl = diagnostics(smp,chains) возвращает диагностику Markov Chain Monte Carlo для цепей в chains.

tbl = diagnostics(smp,chains,'MaxLag',maxlag) задает максимальное количество лагов автокорреляции для вычисления эффективных размеров выборки.

Входные параметры

расширить все

Гамильтоновый семплер Монте-Карло, указанный как HamiltonianSampler объект.

Используйте hmcSampler функция для создания дискретизатора.

Цепи MCMC, заданные как одно из следующего:

  • Матрица, где каждая строка является выборкой, а каждый столбец - параметром.

  • Массив ячеек из матриц, где цепь chains{i} является матрицей, где каждая строка является выборкой, а каждый столбец - параметром.

Количество параметров (то есть матричных столбцов) должно равняться количеству элементов StartPoint свойство smp пробоотборник.

Максимальное количество лагов автокорреляции для вычисления эффективных размеров выборки, заданное в виде положительного целого числа.

В эффективном вычислении размера выборки используются лаги 1,2,...,maxlag для каждой цепи в chains который имеет более maxlag выборки.

Для цепей с maxlag или меньше образцов, в вычислении используется Ni - 1 лагов, где Ni количество образцов цепных i.

Пример: 'MaxLag',50

Выходные аргументы

расширить все

Диагностика MCMC, вычисленная с использованием всех цепей в chains и возвращается как таблица с этими столбцами.

СтолбецОписание
Name

Имя переменной

Mean

Апостериорная средняя оценка

MCSE

Оценка стандартной ошибки Монте-Карло (стандартное отклонение апостериорной средней оценки)

SD

Оценка апостериорного стандартного отклонения

Q5

Оценка 5-го квантиля маргинального апостериорного распределения

Q95

Оценка 95-го квантиля маргинального апостериорного распределения

ESS

Эффективный размер выборки для апостериорной средней оценки. Большие эффективные размеры выборки приводят к более точным результатам. Если образцы являются независимыми, эффективный размер выборки равен количеству выборок.

RHat

Статистика сходимости Гельмана-Рубина. Как правило большого пальца, значения RHat менее 1,1 интерпретируются как знак того, что цепи сходятся к целевому распределению. Если RHat для любой переменной больше чем 1.1, попробуйте нарисовать больше выборки Монте-Карло.

Примеры

расширить все

Создайте цепи MCMC с помощью гамильтонового анализатора Монте-Карло (HMC) и вычислите диагностику MCMC.

Во-первых, сохраните функцию на пути MATLAB ®, которая возвращает многомерную нормальную плотность вероятностей журнала и его градиент. В этом примере эта функция вызывается normalDistGrad и определяется в конце примера. Затем вызовите эту функцию с аргументами, чтобы задать logpdf входной параметр в hmcSampler функция.

means = [1;-2;2];
standevs = [1;2;0.5];
logpdf = @(theta)normalDistGrad(theta,means,standevs);

Выберите начальную точку. Создайте HMC-дискретизатор и настройте его параметры.

startpoint = randn(3,1);
smp = hmcSampler(logpdf,startpoint);
smp = tuneSampler(smp);

Нарисуйте выборки из апостериорной плотности, используя несколько независимых цепей. Выберите различные, случайным образом распределенные начальные точки для каждой цепи. Укажите количество выборок горения, которые нужно сбросить с начала марковской цепи, и количество выборок, которые будут сгенерированы после горения.

NumChains  = 4;
chains     = cell(NumChains,1);
Burnin     = 500;
NumSamples = 1000;
for c = 1:NumChains
    chains{c} = drawSamples(smp,'Burnin',Burnin,'NumSamples',NumSamples,...
        'Start',randn(size(startpoint)));
end

Вычислите диагностику MCMC и отобразите результаты. Сравните истинные средства в means со столбцом под названием Mean в MCMCdiagnostics таблица. Истинные апостериорные средства находятся в пределах нескольких стандартных ошибок Монте-Карло (MCSE) предполагаемых апостериорных средств. HMC пробоотборник точно восстановил истинные средства. Точно так же предполагаемые стандартные отклонения в столбце SD очень близки к истинным стандартным отклонениям в standev.

MCMCdiagnostics = diagnostics(smp,chains)
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  

means
means = 3×1

     1
    -2
     2

standevs
standevs = 3×1

    1.0000
    2.0000
    0.5000

The normalDistGrad функция возвращает логарифм многомерной нормальной плотности вероятностей со средством в Mu и стандартные отклонения в Sigma, заданный как скаляры или векторы столбцов той же длины, что и startpoint. Второй выходной аргумент является соответствующим градиентом.

function [lpdf,glpdf] = normalDistGrad(X,Mu,Sigma)
Z = (X - Mu)./Sigma;
lpdf = sum(-log(Sigma) - .5*log(2*pi) - .5*(Z.^2));
glpdf = -Z./Sigma;
end

Совет

Введенный в R2017a