Je voudrais automatiser le choix du burn-in pour une chaîne MCMC, par exemple en supprimant les n premières lignes sur la base d'un diagnostic de convergence.
Dans quelle mesure cette étape peut-elle être automatisée en toute sécurité? Même si je vérifie toujours l'autocorrélation, la trace mcmc et les fichiers PDF, il serait bien d'avoir le choix de la durée de gravure automatisé.
Ma question est générale, mais ce serait formidable si vous pouviez fournir des détails pour traiter un objet R mcmc.object; J'utilise les packages rjags et coda dans R.
Réponses:
Voici une approche à l'automatisation. Commentaires très appréciés. Il s'agit d'une tentative de remplacer l'inspection visuelle initiale par un calcul, suivie d'une inspection visuelle ultérieure, conformément à la pratique standard.
Cette solution intègre en fait deux solutions potentielles, tout d'abord, calculer le rodage pour supprimer la longueur de la chaîne avant qu'un certain seuil ne soit atteint, puis utiliser la matrice d'autocorrélation pour calculer l'intervalle d'amincissement.
L'objet mcmc peut être téléchargé ici: jags.out.Rdata
--mise à jour--
Comme implémenté dans R, le calcul de la matrice d'autocorrélation est plus lent que ce qui serait souhaitable (> 15 min dans certains cas), dans une moindre mesure, tout comme le calcul du facteur de rétrécissement GR. Il y a une question sur la façon d'accélérer l'étape 4 sur stackoverflow ici
--update partie 2--
réponses supplémentaires:
Il n'est pas possible de diagnostiquer la convergence, seulement de diagnostiquer le manque de convergence (Brooks, Giudici et Philippe, 2003)
La fonction autorun.jags du package runjags automatise le calcul de la longueur d'exécution et les diagnostics de convergence. Il ne commence à surveiller la chaîne que lorsque le diagnostic de la rubine Gelman est inférieur à 1,05; il calcule la longueur de chaîne en utilisant le diagnostic Raftery et Lewis.
Gelman et al (Gelman 2004 Bayesian Data Analysis, p. 295, Gelman et Shirley, 2010 ) déclarent qu'ils utilisent une approche conservatrice de rejet de la première moitié de la chaîne. Bien qu'il s'agisse d'une solution relativement simple, en pratique, cela suffit pour résoudre le problème pour mon ensemble particulier de modèles et de données.
la source
autorun.jags
,...
permet de transmettre les paramètres à laadd.summary
fonction. Laadd.summary
fonction a un argumentpsrf.target
avec une valeur par défaut de 1,05