diagnostics

Класс: 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 в виде одного из следующего:

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

  • Массив ячеек матриц, где цепочечный 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