Як інтерпретувати графік автокореляції в MCMC


12

Я знайомлюсь із статистикою Байєса, читаючи книгу " Проведення байєсівського аналізу даних " Джона К. Крушке, також відомого як "цуценя книга". У розділі 9 ієрархічні моделі знайомляться з цим простим прикладом: а спостереження Бернуллі - 3 монети, кожні 10 фліп. Один показує 9 голів, інший 5 голів та інший 1 голову.

уjiБеrноуллi(θj)θjБета(мкκ,(1-мк)κ)мкБета(Амк,Бмк)κГамма(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 дешеві, ви завжди можете компенсувати втрату стоншування, виконавши ще кілька ітерацій.


Дякую Флоріану за вашу відповідь. Мені це було дуже корисно.
Адам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.