Méthode de rejet

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

But[modifier | modifier le code]

La méthode de rejet est utilisée pour engendrer indirectement une variable aléatoire \scriptstyle\ X\ , de densité de probabilité \scriptstyle\ f, lorsqu'on ne sait pas simuler directement la loi de densité de probabilité \scriptstyle\ f\ (c'est le cas par exemple si \scriptstyle\ f\ n'est pas une densité classique, mais aussi pour la loi de Gauss).

Soit \scriptstyle\ (Y,U)\ un couple de variables aléatoires indépendantes tirées selon une loi uniforme, i.e. \scriptstyle\ (Y,U)\ est un point tiré uniformément dans le carré unité. On peut alors montrer que la distribution de \scriptstyle\ X\ est la loi conditionnelle de \scriptstyle\ X\ sachant l'événement

M=\{U \le f_{X}(Y)\}.

Autrement dit,

{f_{X}(x)=f_{Y}(x|M)}.

Pour simuler une suite de variables aléatoires réelles \scriptstyle\ \left(X_n\right)_{n\ge 1}\ de distribution identique à celle de \scriptstyle\ X, il suffit donc, dans une suite de tirages de couples \scriptstyle\ (Y_i,U_i)\ uniformes indépendants, de sélectionner les \scriptstyle\ Y_i\ correspondant aux tirages \scriptstyle\ (Y_i,U_i)\ vérifiant \scriptstyle\ M, et de rejeter les autres.

Algorithme[modifier | modifier le code]

La méthode de rejet


On voudrait simuler une variable aléatoire réelle \scriptstyle\ X\ de densité de probabilité \scriptstyle\ f\ . On suppose

  • qu'il existe une autre densité de probabilité \scriptstyle\ g\ telle que le ratio \scriptstyle\ \frac{f}{g}\ soit borné, disons par \scriptstyle\ c\ (bref, \scriptstyle\ f \le c g),
  • qu'on sache simuler \scriptstyle\ Y\ de densité \scriptstyle\ g.

La version basique de la méthode de rejet prend la forme suivante:

  1. Boucler:
    • Tirer \scriptstyle\ Y\ de densité \scriptstyle\ g;
    • Tirer \scriptstyle\ U\ selon la loi uniforme U(0;1), indépendamment de \scriptstyle\ Y;
  2. Tant que \scriptstyle\ U> \tfrac{f(Y)}{c\,g(Y)},\ reprendre en 1;
  3. Accepter \scriptstyle\ Y\ comme un tirage aléatoire de densité de probabilité \scriptstyle\ f.

On remarque que l'algorithme comporte une boucle dont la condition porte sur des variables aléatoires. Le nombre d'itérations, notons-le \scriptstyle\ N, est donc lui-même aléatoire. On peut montrer que \scriptstyle\ N\ suit la loi géométrique de paramètre \scriptstyle\ \frac{1}{c}, i.e.

\mathbb{P}\left(N=k\right)\ =\ \left(1-\tfrac{1}{c}\right)^{k-1}\,\tfrac{1}{c}\ 1_{k\ge 1}.

En effet,

 \frac{1}{c}\ =\ \int_{\mathbb{R}}\,\tfrac{f(y)}{c\,g(y)}\ g(y)\,dy\ =\ \int_{\mathbb{R}}\,\mathbb{P}\left(U\le \tfrac{f(y)}{c\,g(y)}\right)\ g(y)\,dy\ =\ \mathbb{P}\left(U\le \tfrac{f(Y)}{c\,g(Y)}\right)

est la probabilité, lors d'une itération, de terminer la boucle, et, par conséquent, d'accepter Y. Par suite, l'espérance de \scriptstyle\ N\ (c.-à-d. le nombre moyen d'itérations à effectuer avant d'obtenir une réalisation de la densité f ) vaut c.

\mathbb{E}\left[N\right]\ =\ c.

On a donc tout intérêt à choisir c le plus petit possible. En pratique, une fois la fonction g choisie, le meilleur choix de c est donc la plus petite constante qui majore le ratio f/g, c'est-à-dire:

c = \sup \frac{f(x)}{g(x)}.

Notons que, soit c est supérieur strict à 1, soit f=g, la deuxième solution étant assez théorique : en effet, comme \scriptstyle\ cg-f\ge 0,

0\ \le\ \int_{\mathbb{R}}\left(cg-f\right)\ =\ c\ \int_{\mathbb{R}}g\ -\ \int_{\mathbb{R}}f\ =\ c-1.

On a donc intérêt à choisir c le plus proche de 1 possible, pour que le nombre d'itérations moyen soit proche de 1 lui aussi. Bref, le choix de l'enveloppe g est primordial:

  • le tirage de la loi g doit être facile ;
  • l'évaluation de f(x)/g(x) doit être aisée ;
  • la constante c doit être la plus petite possible ;
  • la fonction cg doit majorer la densité f.

Les deux derniers points conduisent à rechercher une fonction g dont le graphe "épouse" étroitement celui de f.

Généralisations[modifier | modifier le code]

Le fait que f(x) \le c g(x) peut être re-écrit comme f(x) = c g(x) h(x)h est une fonction à valeurs dans [0;1]. On remplace l'étape 4 de l'algorithme initial par la condition:

Tant que U /h(X) > 1, reprendre en 1

Une autre généralisation peut être considérée lorsque l'évaluation du ratio f/g est délicate. On cherche alors à encadrer la fonction f par deux fonctions facilement évaluables:

h_1(x) \leq f(x) \leq h_2(x)

tout en supposant qu'il existe une densité g telle que f(x) \le c g(x). Aucune autre hypothèse n'est nécessaire; en particulier, il ne faut pas imposer que h_2(x) \leq c g(x). L'algorithme prend alors la forme suivante:

  1. Suite := vrai
  2. Tant que Suite
    • tirer Y selon g;
    • tirer U selon la loi uniforme U(0;1), indépendamment de Y;
    • Z := U c g(Y);
    • Suite := SI(Z \le h_1(Y), vrai, faux );
    • Si Suite alors
      • Si Z \leq h_2(Y) alors Suite:= SI(Z \leq f(Y),vrai,faux) fin si
    • Fin si
  3. fin tant que
  4. retourne Y comme un tirage de f.

Dans cet algorithme, les fonctions h permettent de recourir à une comparaison à f (et donc son évaluation) que très rarement.

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  • Robert, C.P. and Casella, G. "Monte Carlo Statistical Methods" (second edition). New York: Springer-Verlag, 2004.
  • J. von Neumann, "Various techniques used in connection with random digits. Monte Carlo methods", Nat. Bureau Standards, 12 (1951), pp. 36–38.
  • Luc Devroye. Non-Uniform Random Variate Generation. New York: Springer-Verlag, 1986. (site) Voir le chapitre 2, section 3, p. 40