диагностика

Класс: HamiltonianSampler

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

Синтаксис

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

Описание

tbl = diagnostics(smp,chains) возвращает Цепь Маркова диагностика Монте-Карло для цепочек в 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. Истинные следующие средние значения в нескольких стандартных погрешностях Монте-Карло (MCSEs) предполагаемых следующих средних значений. Сэмплер 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

Функция 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