Au cours des derniers jours, j'ai essayé de comprendre comment fonctionne Markov Chain Monte Carlo (MCMC). En particulier, j'ai essayé de comprendre et de mettre en œuvre l'algorithme Metropolis-Hastings. Jusqu'à présent, je pense que j'ai une compréhension globale de l'algorithme, mais il y a quelques choses qui ne sont pas encore claires pour moi. Je souhaite utiliser MCMC pour adapter certains modèles aux données. Pour cette raison, je vais décrire ma compréhension de l'algorithme de Metropolis-Hastings pour ajuster une droite à certaines données observées :D
1) Faites une première estimation pour . Définissez ce comme notre actuelle ( ). Ajoutez également à la fin de la chaîne de Markov ( ).a a a 0 a C
2) Répétez les étapes ci-dessous plusieurs fois.
3) Évaluer la probabilité actuelle ( ) donné et . a 0 D
4) Proposer un nouveau ( ) en échantillonnant à partir d'une distribution normale avec et . Pour l'instant, la est constante.a 1 μ = a 0 σ = s t e p s i z e s t e p s i z e
5) Évaluer la probabilité nouvelle ( ) donné et . a 1 D
6) Si est plus grand que , acceptez comme nouveau , ajoutez-le à la fin de et passez à l'étape 2.L 0 a 1 a 0 C
7) Si est plus petit que générer un nombre ( ) dans la plage [0,1] à partir d'une distribution uniformeL 0 U
8) Si est plus petit que la différence entre les deux probabilités ( - ), acceptez comme nouveau , ajoutez-le à la fin de et passez à l'étape 2.L 1 L 0 a 1 a 0 C
9) Si est plus grand que la différence entre les deux probabilités ( - ), ajoutez l' à la fin de , continuez à utiliser le même , passez à l'étape 2.L 1 L 0 a 0 C a 0
10) Fin de la répétition.
11) Retirez certains éléments du début de (phase de rodage).
12) prennent maintenant la moyenne des valeurs en . Cette moyenne est l'estimation .a
J'ai maintenant quelques questions concernant les étapes ci-dessus:
- Comment puis-je construire la fonction de vraisemblance pour mais aussi pour toute fonction arbitraire?
- Est-ce une implémentation correcte de l'algorithme de Metropolis-Hastings?
- Comment la sélection de la méthode de génération de nombres aléatoires à l'étape 7 peut-elle changer les résultats?
- Comment cet algorithme va-t-il changer si j'ai plusieurs paramètres de modèle? Par exemple, si j'avais le modèle .
Notes / Crédits: La structure principale de l'algorithme décrit ci-dessus est basée sur le code d'un atelier MPIA Python.