Algorithme de Metropolis
Bibliographie :
Metropolis N, Rosenbluth AW, Rosenbluth MN, Teller AH, Teller E. Equations of state calcualtions by fast computing machines. Journal of Chemical Physics 1953:21, 1087--91.
Particularité et détails de l'algorithme de Metropolis
La distribution de proposition \(q\) est symétrique : \(q(\tilde{\boldsymbol{\theta}}|\boldsymbol{\theta}^{(k)}) = q(\boldsymbol{\theta}^{(k)} |\tilde{\boldsymbol{\theta}})\). Dans le détail, lorsque la chaîne est en \(\boldsymbol{\theta}^{(k)}\), l'algorithme est ainsi :
échantillonner \(\tilde{\boldsymbol{\theta}}\) de la distribution \(q(\tilde{\boldsymbol{\theta}} | \boldsymbol{\theta}^{(k)})\)
calculer le \(r\), minimum entre 1 et \(\alpha = \dfrac{p(\tilde{\boldsymbol{\theta}}|y)}{ p(\boldsymbol{\theta}^{(k)}|y)}\)
si \(r \geqslant 1\), \(\tilde{\boldsymbol{\theta}}\) est accepté et \(\boldsymbol{\theta}^{(k+1)} = \tilde{\boldsymbol{\theta}}\)
si \(r < 1\), \(\tilde{\boldsymbol{\theta}}\) est accepté comme nouvelle valeur avec une probabilité \(r\) : on tire \(u\) d'une uniforme [0,1], si \(u \leqslant r\), on accepte la nouvelle valeur et \(\boldsymbol{\theta}^{(k+1)} = \tilde{\boldsymbol{\theta}}\) et si \(u > r\), on rejette la nouvelle valeur et \(\boldsymbol{\theta}^{(k+1)} = \boldsymbol{\theta}^{(k)}\)
Conséquences
Ceci signifie que si on arrive dans une région de plus forte densité, la nouvelle valeur est acceptée. Si on arrive dans une région de densité plus faible, la nouvelle valeur est acceptée avec une probabilité densité nouvelle/densité ancienne. Si elle est rejetée, on conserve l'ancienne valeur (plateau sur le plot de la trace). Ce procédé assure que la chaîne visitera plus souvent les régions où la densité est forte
Un avantage est qu'il n'est pas nécessaire de calculer la constante de normalisation qui disparaît dans \(\alpha\) :
\(\alpha = \dfrac{p(\tilde{\boldsymbol{\theta}}|y)}{ p(\boldsymbol{\theta}^{(k)}|y)} = \dfrac{p(y|\tilde{\boldsymbol{\theta}}) p(\tilde{\boldsymbol{\theta}})}{ p(y|\boldsymbol{\theta}^{(k)}) p(\boldsymbol{\theta}^{(k)})}\)