Comment interpréter le tracé d'autocorrélation dans MCMC

12

Je me familiarise avec les statistiques bayésiennes en lisant le livre Doing Bayesian Data Analysis , de John K. Kruschke, également connu sous le nom de "chiot livre". Dans le chapitre 9, des modèles hiérarchiques sont présentés avec cet exemple simple: et les observations de Bernoulli sont de 3 pièces, chacune de 10 flips. L'un montre 9 têtes, les 5 autres têtes et l'autre 1 tête.

yjjeBernoullje(θj)θjBetune(μκ,(1-μ)κ)μBetune(UNEμ,Bμ)κgunemmune(Sκ,Rκ)

J'ai utilisé du pymc pour déduire les hyperparamètres.

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

Ma question concerne l'autocorrélation. Comment interpréter l'autocorrélation? Pourriez-vous m'aider à interpréter le tracé d'autocorrélation?

entrez la description de l'image ici

Il indique que lorsque les échantillons s'éloignent les uns des autres, la corrélation entre eux diminue. droite? Pouvons-nous l'utiliser pour tracer afin de trouver l'amincissement optimal? L'amincissement affecte-t-il les échantillons postérieurs? après tout, à quoi sert ce complot?

Adham
la source

Réponses:

13

Tout d'abord: si la mémoire et le temps de calcul pour gérer la sortie MCMC ne sont pas limitatifs, l'amincissement n'est jamais "optimal". À nombre égal d'itérations MCMC, l'amincissement de la chaîne conduit toujours (en moyenne) à une perte de précision de l'approximation MCMC.

Un amincissement systématique basé sur l'autocorrélation ou tout autre diagnostic n'est donc pas recommandé . Voir Link, WA & Eaton, MJ (2012) Sur l'amincissement des chaînes dans MCMC. Methods in Ecology and Evolution, 3, 112-115.

Dans la pratique quotidienne, cependant, il y a le cas commun où vous devez travailler avec un modèle pour lequel l'échantillonneur ne se mélange pas très bien (autocorrélation élevée). Dans ce cas

1) Les éléments de chaîne étroite sont très similaires, ce qui signifie que jeter un ne perd pas beaucoup d'informations (c'est ce que montre le graphique d'autocorrélation)

2) Vous avez besoin de beaucoup de répétitions pour obtenir la convergence, ce qui signifie que vous obtenez de très grandes chaînes si vous ne fluidifiez pas. De ce fait, travailler avec la chaîne complète peut être très lent, coûter beaucoup de stockage ou même entraîner des problèmes de mémoire lors de la surveillance d'un grand nombre de variables.

3) De plus, j'ai le sentiment (mais celui que je n'ai jamais testé systématiquement) que l'amincissement rend JAGS un peu plus rapide également, donc je pourrais peut-être obtenir quelques itérations supplémentaires en même temps.

Donc, mon point est le suivant: le tracé d'autocorrélation vous donne une estimation approximative de la quantité d'informations que vous perdez par amincissement (notez bien qu'il s'agit d'une moyenne sur toute la partie postérieure, la perte peut être plus élevée dans certaines régions).

Que ce prix vaille la peine de payer dépend de ce que vous gagnez en éclaircissant en termes d'économie de ressources informatiques et de temps plus tard. Si les itérations MCMC sont bon marché, vous pouvez toujours compenser la perte d'amincissement en exécutant également quelques itérations supplémentaires.

Florian Hartig
la source
Merci Florian pour ta réponse. Cela m'a été très utile.
Adham