Dans son livre Doing Bayesian Data Analysis, John Kruschke déclare qu'en utilisant JAGS de R
... l'estimation du mode à partir d'un échantillon MCMC peut être plutôt instable car l'estimation est basée sur un algorithme de lissage qui peut être sensible aux bosses et ondulations aléatoires dans l'échantillon MCMC. ( Faire une analyse des données bayésiennes , page 205, section 8.2.5.1)
Bien que je connaisse l'algorithme de Metropolis et les formes exactes comme l'échantillonnage de Gibbs, je ne connais pas l'algorithme de lissage qui y est également mentionné et pourquoi cela signifierait que l'estimation du mode à partir de l'échantillon MCMC est instable. Quelqu'un peut-il donner un aperçu intuitif de ce que fait l'algorithme de lissage et pourquoi il rend l'instabilité du mode instable?
Réponses:
Je n'ai pas le livre à portée de main, donc je ne sais pas quelle méthode de lissage Kruschke utilise, mais pour l'intuition, considérez ce tracé de 100 échantillons à partir d'une normale standard, ainsi que les estimations de la densité du noyau gaussien en utilisant différentes bandes passantes de 0,1 à 1,0. (En bref, les KDE gaussiens sont une sorte d'histogramme lissé: ils estiment la densité en ajoutant un gaussien pour chaque point de données, avec une moyenne à la valeur observée.)
Vous pouvez voir que même une fois que le lissage crée une distribution unimodale, le mode est généralement inférieur à la valeur connue de 0.
De plus, voici un tracé du mode estimé (axe y) par la bande passante du noyau utilisée pour estimer la densité, en utilisant le même échantillon. Espérons que cela donne une idée de la façon dont l'estimation varie en fonction des paramètres de lissage.
la source
Sean Easter a fourni une belle réponse; voici comment les scripts R sont fournis avec le livre de Kruschke. La
plotPost()
fonction est définie dans le script R nomméDBDA2E-utilities.R
. Il affiche le mode estimé. À l'intérieur de la définition de fonction, il y a ces deux lignes:La
density()
fonction est livrée avec le package de statistiques de base de R et implémente un filtre de densité du noyau du type décrit par Sean Easter. Il a des arguments facultatifs pour la bande passante du noyau de lissage et pour le type de noyau à utiliser. Il utilise par défaut un noyau gaussien et possède une certaine magie interne pour trouver une belle bande passante. Ladensity()
fonction renvoie un objet avec un composant nomméy
qui a les densités lissées à différentes valeursx
. La deuxième ligne de code, ci-dessus, trouve juste lax
valeur oùy
est maximum.la source