Как интерпретировать автокорреляционный график в 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])

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

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

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

Ответы:


13

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

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

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

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

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

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

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

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


Спасибо, Флориан, за ваш ответ. Это было очень полезно для меня.
Adham
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.