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