Как интерпретировать автокорреляционный график в MCMC

12

Я знакомлюсь с байесовской статистикой, читая книгу Джона К. Крушке « Анализ байесовских данных» , также известную как «книга щенков». В главе 9 иерархические модели представлены на этом простом примере: и наблюдения Бернулли составляют 3 монеты, каждая из которых состоит из 10 сальто. Один показывает 9 голов, другой 5 голов, а другой 1 голову.

yjiBernoulli(θj)θjBeta(μκ,(1μ)κ)μBeta(Aμ,Bμ)κGamma(Sκ,Rκ)

Я использовал pymc для определения гиперпараметров.

with pm.Model() as model:
# define the     
    mu = pm.Beta('mu', 2, 2)
    kappa = pm.Gamma('kappa', 1, 0.1)
    # define the prior
    theta = pm.Beta('theta', mu * kappa, (1 - mu) * kappa, shape=len(N))
    # define the likelihood
    y = pm.Bernoulli('y', p=theta[coin], observed=y)

    # Generate a MCMC chain
    step = pm.Metropolis()
    trace = pm.sample(5000, step, progressbar=True)
    trace = pm.sample(5000, step, progressbar=True)


burnin = 2000  # posterior samples to discard
thin = 10  # thinning 
pm.autocorrplot(trace[burnin::thin], vars =[mu, kappa])

Мой вопрос касается автокорреляции. Как мне интерпретировать автокорреляцию? Не могли бы вы помочь мне интерпретировать сюжет автокорреляции?

введите описание изображения здесь

Это говорит о том, что когда образцы удаляются друг от друга, корреляция между ними уменьшается. право? Можем ли мы использовать это для построения оптимального прореживания? Влияет ли истончение на задние образцы? В конце концов, какая польза от этого сюжета?

Adham
источник

Ответы:

13

Прежде всего: если память и время вычислений для обработки вывода MCMC не ограничены, то прореживание никогда не бывает «оптимальным». При равном количестве итераций MCMC утончение цепи всегда приводит (в среднем) к точности потерь в приближении MCMC.

Поэтому регулярное истончение, основанное на автокорреляции или любой другой диагностике, не рекомендуется . См. Link, WA & Eaton, MJ (2012) Об истончении цепей в MCMC. Методы в экологии и эволюции, 3, 112-115.

Однако в повседневной практике часто приходится работать с моделью, для которой сэмплер работает не очень хорошо (высокая автокорреляция). В таком случае

1) Элементы с близкой цепью очень похожи, это означает, что их выбрасывание не приводит к потере большого количества информации (именно это показывает график автокорреляции)

2) Вам нужно много повторений, чтобы получить конвергенцию, а это означает, что вы получите очень большие цепочки, если вы не тонкие. Из-за этого работа с полной цепочкой может быть очень медленной, требовать больших затрат на хранение или даже приводить к проблемам с памятью при мониторинге большого количества переменных.

3) Кроме того, у меня есть ощущение (но такого, которое я никогда не проверял систематически), что прореживание делает JAGS также немного быстрее, поэтому может быть в состоянии получить еще несколько итераций за одно и то же время.

Итак, моя точка зрения такова: график автокорреляции дает вам приблизительную оценку того, сколько информации вы теряете из-за истончения (обратите внимание, что это среднее значение по всему последнему, потери могут быть выше в отдельных регионах).

Стоит ли платить эту цену, зависит от того, что вы выиграете, экономя вычислительные ресурсы и время в будущем. Если итерации MCMC дешевы, вы всегда можете компенсировать потерю прореживания, выполнив еще несколько итераций.

Флориан Хартиг
источник
Спасибо, Флориан, за ваш ответ. Это было очень полезно для меня.
Adham