Jak interpretować wykres autokorelacji w MCMC

12

Zapoznam się ze statystykami bayesowskimi, czytając książkę Doing Bayesian Data Analysis autorstwa Johna K. Kruschke znaną również jako „książkę o szczeniętach”. W rozdziale 9 przedstawiono modele hierarchiczne na tym prostym przykładzie: a obserwacje Bernoulliego to 3 monety, każde 10 rzutów. Jeden pokazuje 9 głów, drugi 5 głów, a drugi 1 głowę.

yjotjabmirnoullja(θjot)θjotbmitza(μκ,(1-μ)κ)μbmitza(ZAμ,bμ)κsolzammza(S.κ,Rκ)

Użyłem pymc, aby wywnioskować hiperparamteres.

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])

Moje pytanie dotyczy autokorelacji. Jak interpretować autokorelację? Czy mógłbyś mi pomóc zinterpretować wykres autokorelacji?

wprowadź opis zdjęcia tutaj

Mówi, że gdy próbki zbliżają się do siebie, korelacja między nimi zmniejsza się. dobrze? Czy możemy to wykorzystać do wykreślenia optymalnego przerzedzenia? Czy ścieńczenie wpływa na próbki tylne? w końcu, do czego służy ta fabuła?

Adham
źródło

Odpowiedzi:

13

Po pierwsze: jeśli pamięć i czas obliczeniowy do obsługi wyjścia MCMC nie są ograniczone, przerzedzanie nigdy nie jest „optymalne”. Przy takiej samej liczbie iteracji MCMC, przerzedzenie łańcucha zawsze prowadzi (średnio) do precyzji straty w przybliżeniu MCMC.

Rutynowe przerzedzanie w oparciu o autokorelację lub jakąkolwiek inną diagnostykę nie jest zatem wskazane . Patrz Link, WA i Eaton, MJ (2012) Na temat przerzedzania łańcuchów w MCMC. Methods in Ecology and Evolution, 3, 112-115.

Jednak w codziennej praktyce często zdarza się, że trzeba pracować z modelem, w którym sampler nie miesza się zbyt dobrze (wysoka autokorelacja). W tym przypadku

1) Elementy ścisłego łańcucha są bardzo podobne, co oznacza, że ​​wyrzucenie jednego z nich nie powoduje utraty dużej ilości informacji (tak pokazuje wykres autokorelacji)

2) Potrzebujesz dużej liczby powtórzeń, aby uzyskać zbieżność, co oznacza, że ​​otrzymasz bardzo duże łańcuchy, jeśli nie będziesz cienki. Z tego powodu praca z pełnym łańcuchem może być bardzo powolna, kosztuje dużo pamięci, a nawet może prowadzić do problemów z pamięcią podczas monitorowania wielu zmiennych.

3) Dodatkowo mam wrażenie (ale tego, którego nigdy nie testowałem systematycznie), że przerzedzanie sprawia, że ​​JAGS jest również nieco szybszy, więc może być w stanie uzyskać kilka kolejnych iteracji w tym samym czasie.

Chodzi mi o to: wykres autokorelacji daje przybliżone oszacowanie, ile informacji tracisz przez przerzedzanie (zauważ, że jest to średnia w całym odcinku tylnym, utrata może być wyższa w poszczególnych regionach).

To, czy tę cenę warto zapłacić, zależy od tego, co zyskasz, przerzedzając, oszczędzając zasoby komputerowe i czas później. Jeśli iteracje MCMC są tanie, zawsze możesz zrekompensować utratę przerzedzenia, uruchamiając jeszcze kilka iteracji.

Florian Hartig
źródło
Dziękuję Florian za odpowiedź. To było dla mnie bardzo przydatne.
Adham