exponenta event banner

диагностика

Класс: HamiltonianSampler

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

Синтаксис

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

Описание

tbl = diagnostics(smp,chains) возвращает диагностику цепи Маркова 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 с помощью гамильтонова образца Monte Carlo (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

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