Interpretation des Autokorrelationsplots in MCMC

12

Ich mache mich mit der Bayes'schen Statistik vertraut, indem ich das Buch Doing Bayesian Data Analysis von John K. Kruschke, auch als "Welpenbuch" bekannt, lese . In Kapitel 9 werden hierarchische Modelle dieses einfachen Beispiels vorgestellt: und die Bernoulli-Beobachtungen bestehen aus 3 Münzen mit jeweils 10 Flips. Einer zeigt 9 Köpfe, die anderen 5 Köpfe und der andere 1 Kopf.

yjichBernÖullich(θj)θjBetein(μκ,(1-μ)κ)μBetein(EINμ,Bμ)κGeinmmein(Sκ,Rκ)

Ich habe Pymc verwendet, um auf die Hyperparamter zu schließen.

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

Meine Frage betrifft die Autokorrelation. Wie soll ich Autokorrelation interpretieren? Können Sie mir bitte helfen, die Autokorrelationskurve zu interpretieren?

Bildbeschreibung hier eingeben

Je weiter die Stichproben voneinander entfernt sind, desto geringer ist die Korrelation zwischen ihnen. richtig? Können wir dies zum Zeichnen verwenden, um die optimale Ausdünnung zu finden? Beeinflusst die Ausdünnung die hinteren Proben? was nützt denn diese Handlung?

Adham
quelle

Antworten:

13

Erstens: Wenn der Speicher und die Rechenzeit für die Verarbeitung der MCMC-Ausgabe nicht begrenzt sind, ist die Ausdünnung niemals "optimal". Bei einer gleichen Anzahl von MCMC-Iterationen führt das Ausdünnen der Kette (im Durchschnitt) immer zu einer Verlustgenauigkeit der MCMC-Approximation.

Eine routinemäßige Ausdünnung aufgrund von Autokorrelation oder einer anderen Diagnose ist daher nicht ratsam . Siehe Link, WA & Eaton, MJ (2012) Zum Ausdünnen von Ketten in MCMC. Methods in Ecology and Evolution, 3, 112 & ndash; 115.

In der täglichen Praxis ist es jedoch üblich, dass Sie mit einem Modell arbeiten müssen, für das der Sampler nicht sehr gut mischt (hohe Autokorrelation). In diesem Fall

1) Elemente mit enger Kette sind sich sehr ähnlich, was bedeutet, dass beim Wegwerfen nicht viele Informationen verloren gehen (das zeigt die Autokorrelationskurve).

2) Sie brauchen viele Wiederholungen, um Konvergenz zu erreichen, was bedeutet, dass Sie sehr große Ketten erhalten, wenn Sie nicht dünner werden. Aus diesem Grund kann das Arbeiten mit der gesamten Kette sehr langsam sein, viel Speicherplatz kosten oder sogar zu Speicherproblemen führen, wenn viele Variablen überwacht werden.

3) Zusätzlich habe ich das Gefühl (aber dieses Gefühl habe ich noch nie systematisch getestet), dass das Ausdünnen JAGS auch ein bisschen schneller macht, so dass ich möglicherweise in der Lage bin, mehrere Iterationen in der gleichen Zeit zu erhalten.

Mein Punkt ist also: Die Autokorrelationskurve gibt Ihnen eine ungefähre Schätzung darüber, wie viele Informationen Sie durch Ausdünnen verlieren (beachten Sie jedoch, dass dies ein Durchschnitt über den gesamten posterioren Bereich ist und der Verlust in bestimmten Regionen höher sein kann).

Ob dieser Preis die Zahlung wert ist, hängt davon ab, was Sie durch Ausdünnen an Rechenressourcen und späterer Zeit gewinnen. Wenn MCMC-Iterationen kostengünstig sind, können Sie den Verlust der Ausdünnung jederzeit durch einige weitere Iterationen ausgleichen.

Florian Hartig
quelle
Vielen Dank Florian für deine Antwort. Es war sehr nützlich für mich.
Adham