Vous êtes sur la page 1sur 131

Université Pierre et Marie Curie

Master Mathématiques et Applications Année 2016/2017


Spécialité Statistique Premier Semestre

Simulations Monte-Carlo

Arnaud Guyader
Table des matières

1 Génération de variables aléatoires 1


1.1 Variables uniformes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Méthode d’inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Méthode de rejet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Vecteurs aléatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1 Conditionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.2 Changement de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.3 Vecteurs gaussiens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.4 Copules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6 Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Intégration Monte-Carlo 35
2.1 Exemples et propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1.1 Convergence et intervalles de confiance . . . . . . . . . . . . . . . . . . . . . 35
2.1.2 Quelques mots sur l’intégration numérique . . . . . . . . . . . . . . . . . . . 37
2.1.3 Le paradigme bayésien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2 Réduction de variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.1 Echantillonnage préférentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.2 Conditionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.3 Stratification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.4 Variables antithétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3 Méthodes Quasi-Monte-Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5 Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3 Monte-Carlo par Chaînes de Markov 81


3.1 Rappels sur les chaînes de Markov . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2 Algorithme de Metropolis-Hastings . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2.1 Algorithme de Metropolis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2.2 Généralisation : méthode de Metropolis-Hastings . . . . . . . . . . . . . . . 87
3.3 Exemple d’application : le recuit simulé . . . . . . . . . . . . . . . . . . . . . . . . 88
3.4 Echantillonneur de Gibbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.6 Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

i
Chapitre 1

Génération de variables aléatoires

Introduction
Idéalement, une méthode Monte-Carlo repose sur la simulation d’une suite de variables aléatoires
(Xn )n≥1 indépendantes et identiquement distribuées (i.i.d.) selon une loi donnée. Ce chapitre
expose quelques méthodes pour y parvenir, au moins de façon approchée, en commençant par la
loi uniforme, sur laquelle toutes les autres sont basées.

1.1 Variables uniformes


Le but est de générer une suite de variables aléatoires (Xn )n≥1 indépendantes et de loi uniforme
sur [0, 1]. Ceci est bien entendu impossible sur un ordinateur : d’abord parce que les nombres entre
0 et 1 sont en fait de la forme k/2p avec k ∈ {0, . . . , 2p − 1} ; ensuite parce que vérifier qu’une suite
(Xn )n≥1 est bien i.i.d. est une question très délicate. C’est essentiellement l’objet de la théorie de
la complexité (voir par exemple [3], Chapitre 7, pour une introduction à ce sujet).
En pratique, les logiciels se basent sur une suite dite pseudo-aléatoire qui a la forme Xn = f (Xn−1 )
avec Xn ∈ {0, . . . , 2p − 1}. L’objectif est alors d’obtenir une suite (Xn ) qui ressemble autant que
possible à une suite i.i.d. uniforme sur {0, . . . , 2p − 1}. La fonction f étant déterministe, il est clair
qu’un tel générateur est périodique. Il existe de nombreuses méthodes pour générer de telles suites
et nous ne détaillerons pas ce sujet, nous contentant de mentionner celui utilisé par défaut sous R
via la commande runif, à savoir le Mersenne Twister MT-19937 :

Xn+1 = AXn (mod 2)

où Xn est un vecteur de 19937 bits et A une matrice bien choisie. La variable pseudo-aléatoire Un
correspond alors aux 32 derniers bits de Xn . Proposé par Matsumoto et Nishimura en 1998 [11],
ce générateur a une période de longueur 219937 − 1 (i.e. le maximum possible vu la taille de Xn et
le fait que 0 est un point fixe), lequel est un nombre premier de Mersenne.
Notons aussi que si, pour une raison ou une autre, on veut changer de générateur sous R, il suffit
de le spécifier avant l’appel à runif via la fonction RNGkind. En voici un exemple pour utiliser un
générateur proposé par L’Ecuyer :
> set.seed(123) # fixe la graine du générateur
> runif(1) # génération par Mersennne Twister
[1] 0.2875775
> RNGkind("L’Ecuyer-CMRG") # changement de générateur pseudo-aléatoire
> set.seed(123)
> runif(1)

1
2 Chapitre 1. Génération de variables aléatoires

[1] 0.1663742
> RNGkind("Mersenne-Twister") # retour au générateur par défaut
> set.seed(123)
> runif(1)
[1] 0.2875775
Remarque : Sur cet exemple, le fait de fixer la graine du générateur pseudo-aléatoire par la
commande set.seed a simplement permis de vérifier les changements de générateurs. De façon
plus générale, cette commande en début de programme peut s’avérer très utile puisqu’elle permet
de refaire une simulation dans les mêmes conditions et, le cas échéant, de trouver une erreur dans
un code.
Dans tout ce cours, nous supposerons donc disposer d’un générateur pseudo-aléatoire “satisfaisant”
pour la loi uniforme. La suite de ce chapitre explique alors comment, partant de la loi uniforme, il
est possible de générer d’autres lois.

1.2 Méthode d’inversion


Cette méthode part d’une propriété élémentaire, souvent vue en Licence dans un premier cours de
probabilités. Dit rapidement, soit F une fonction de répartition inversible, alors si U suit une loi
uniforme sur [0, 1], la variable aléatoire X = F −1 (U ) a pour fonction de répartition F . En effet,
pour tout réel x,
P(X ≤ x) = P(F −1 (U ) ≤ x) = P(U ≤ F (x)) = F (x),
où l’on a appliqué respectivement l’aspect bijectif de F , sa croissance et la forme spécifique de la
fonction de répartition de la loi uniforme.
Pour ce qui nous concerne, l’intérêt de ce résultat est manifeste : pour peu que F soit facilement
inversible, alors pour générer une variable aléatoire de loi 1 F , il suffit de générer une variable
uniforme U et de lui appliquer F −1 . On peut en fait généraliser ceci à des fonctions de répartition
non bijectives.

Définition 1 (Inverse généralisée)


Soit X une variable aléatoire de fonction de répartition F . On appelle inverse généralisée de F ,
ou fonction quantile de X, la fonction F −1 définie pour tout u ∈]0, 1[ par

F −1 (u) = inf{x ∈ R : F (x) ≥ u}.

Rappel. Le réel q1/2 := F −1 (1/2) est appelé la médiane de F . De façon générale, lorsque 0 < α < 1,
q1−α := F −1 (1 − α) est appelé quantile d’ordre (1 − α) de F . On le rencontre constamment dans
les tests d’hypothèses, le plus fameux d’entre eux étant celui associé aux intervalles de confiance à
95% de la loi gaussienne centrée réduite : q0.975 := Φ−1 (0.975) = 1.96 . . . ≈ 2, où Φ est la fonction
de répartition de la loi N (0, 1).
Si F est inversible, il est clair que cette fonction quantile correspond bien à l’inverse classique
de F . A contrario, considérons une variable aléatoire X discrète à valeurs dans l’ensemble fini
{x1 < · · · < xm } avec probabilités (p1 , . . . , pm ). Il est facile de vérifier que pour tout u ∈]0, 1[,


 x1 si 0 < u ≤ p1

 x2 si p1 < u ≤ p1 + p2
F −1 (u) = ..

 .


xm si p1 + · · · + pm−1 < u ≤ 1
1. Rappelons que la fonction de répartition caractérise la loi.

Arnaud Guyader Simulations Monte-Carlo


1.2. Méthode d’inversion 3

c’est-à-dire
m
X
F −1 (u) = xk 1p1 +···+pk−1 <u≤p1+···+pk . (1.1)
k=1

Si l’ensemble des valeurs prises par la variable discrète X n’est pas fini, il suffit de remplacer
cette somme par une série. Quoi qu’il en soit, outre que, tout comme F , cette fonction quantile est
croissante et en escalier, on notera que, contrairement à F , elle est continue à gauche. Ces propriétés
sont en fait vraies de façon générale. Venons-en maintenant aux résultats utiles en simulation.

Proposition 1 (Méthode d’inversion)


Soit U une variable uniforme sur [0, 1], F une fonction de répartition et F −1 son inverse généra-
lisée. Alors :
1. la variable aléatoire X = F −1 (U ) a pour fonction de répartition F .
2. si X a pour fonction de répartition F et si F est continue, alors la variable aléatoire F (X)
est de loi uniforme sur [0, 1].

Preuve. Soit X = F −1 (U ) et x réel fixé. Montrons que pour tout u ∈]0, 1], on a

F −1 (u) ≤ x ⇐⇒ u ≤ F (x). (1.2)

Par définition de F −1 (u), si u ≤ F (x), alors F −1 (u) ≤ x. Inversement, si F −1 (u) ≤ x, alors pour
tout ε > 0 on a F −1 (u) < x + ε, donc par définition de F −1 (u), il vient u ≤ F (x + ε). Puisque
F est continue à droite, on en déduit que u ≤ F (x) et l’équivalence (1.2) est établie. Dès lors, la
fonction de répartition de X se calcule facilement :

P(X ≤ x) = P(F −1 (U ) ≤ x) = P(U ≤ F (x)) = F (x),

la dernière égalité venant de ce que, pour tout u ∈ [0, 1], P(U ≤ u) = u. Le premier point est donc
prouvé. On l’applique pour le second : la variable Y = F −1 (U ) a même loi que X, donc la variable
F (X) a même loi que F (Y ) = (F ◦ F −1 )(U ). Or, d’après (1.2), pour tout u ∈]0, 1], on a

F −1 (u) ≤ F −1 (u) =⇒ u ≤ (F ◦ F −1 )(u).

Réciproquement, pour tout u ∈]0, 1] et pour tout ε > 0, on a, toujours par (1.2),

F −1 (u) − ε < F −1 (u) =⇒ F (F −1 (u) − ε) < u.

Etant donné que u ∈]0, 1] et que F est supposée continue en F −1 (u) > 0, le passage à la limite
lorsque ε → 0 donne (F ◦ F −1 )(u) ≤ u. Au total, on a donc prouvé que, pour tout u ∈]0, 1],
(F ◦ F −1 )(u) = u. En revenant aux variables aléatoires, ceci donne F (Y ) = (F ◦ F −1 )(U ) = U
presque sûrement.

Exemples :
1. Concernant la seconde propriété, si X suit une loi de Bernoulli de paramètre 1/2, la variable
F (X) prend les valeurs 1/2 et 1 de façon équiprobable, donc n’est pas uniforme.
2. Loi exponentielle : Soit λ > 0, alors
1 L 1
X = − log(1 − U ) = − log U ∼ E(λ),
λ λ
loi exponentielle de paramètre λ, c’est-à-dire de densité f (x) = λe−λx 1x≥0 . Malgré sa
simplicité, les logiciels n’utilisent pas cette méthode, l’appel au logarithme étant coûteux.

Simulations Monte-Carlo Arnaud Guyader


4 Chapitre 1. Génération de variables aléatoires

3. Loi discrète : on reprend l’exemple de la loi discrète ci-dessus. D’après la formule (1.1), il
suffit dont de tirer une variable U uniforme et de regarder dans quel intervalle de la forme
(p1 + · · · + pk−1 ; p1 + · · · + pk ] elle tombe. Noter que ceci se fait en testant successivement si
U > p1 , puis si U > p1 + p2 , etc. Dès lors, dans la mesure du possible, on aura tout intérêt
à ranger les pi de façon décroissante pour gagner du temps.
4. Supposons qu’on veuille simuler le résultat d’un dé équilibré : la méthode précédente s’ap-
plique, mais on aura plus vite fait de considérer X = ⌈6U ⌉, où ⌈·⌉ désigne la partie entière
par excès, ce qui en R donne X=ceiling(6*runif(1)).

Bien entendu, la méthode d’inversion requiert la connaissance et le calcul rapide de F −1 (u). Ceci
n’est pas toujours envisageable : il suffit de penser à la loi normale centrée réduite, de fonction de
répartition Z x
1 t2
Φ(x) = √ e− 2 dt
−∞ 2π
et dont l’inverse n’admet pas d’expression analytique simple.
Dans ce cas, on peut toujours utiliser une approximation tabulée de la fonction quantile. C’est peu
ou prou ce qui est fait sous R pour la loi normale. Dans d’autres cas, la méthode de rejet, détaillée
en section suivante, peut représenter une alternative judicieuse.

1.3 Méthode de rejet


Le contexte est le suivant : on veut simuler une variable aléatoire X de densité f , mais f est trop
compliquée pour que ceci puisse se faire directement. On dispose par contre d’une densité auxiliaire
g telle que :
(a) on sait simuler Y de densité g ;
(b) il existe une constante m telle que, pour presque tout x, f (x) ≤ mg(x).

Considérons alors deux suites indépendantes de variables aléatoires :


(a) (Yn )n≥1 i.i.d. de densité g ;
(b) (Un )n≥1 i.i.d. de loi uniforme.

Concrètement, Y correspond à une proposition et U à un tirage pile ou face pour décider si on


accepte ou non cette proposition. Nous noterons r la fonction rapport d’acceptation pour le pile
ou face, à savoir : r(y) = f (y)/(mg(y)) si g(y) > 0, r(y) = 0 sinon. Par ailleurs, f et g étant des
densités, la constante m intervenant dans la majoration est bien entendu supérieure à 1 :
Z Z Z
1= f (x)dx ≤ mg(x)dx = m g(x)dx = m.
R R R

Ceci étant acquis, le résultat suivant montre comment simuler suivant la densité f voulue.

Proposition 2 (Algorithme de rejet)


Soit N = inf{n ≥ 1, Un ≤ r(Yn )} le premier instant où le tirage est accepté et X = YN la valeur
de la proposition à cet instant. Alors X a pour densité f . Par ailleurs, N suit une loi géométrique
de paramètre 1/m.

Remarque. La variable N étant géométrique de paramètre 1/m, elle a pour moyenne m. Concrè-
tement, il faut donc faire en moyenne m essais pour obtenir une seule simulation selon la loi cible
f . Dès lors, il s’agira de choisir le couple (g, m) de sorte que m soit aussi proche de 1 que possible.
En d’autres termes, on a tout intérêt à choisir une densité g qui ressemble le plus possible à f .

Arnaud Guyader Simulations Monte-Carlo


1.3. Méthode de rejet 5

Preuve. Notons F la fonction de répartition associée à la densité f . On a alors

P(X ≤ x, N = n) = P(U1 > r(Y1 ), . . . , Un−1 > r(Yn−1 ), Un ≤ r(Yn ), Yn ≤ x).

Puisque les n tirages sont i.i.d., ceci s’écrit encore

P(X ≤ x, N = n) = (P(U1 > r(Y1 ))n−1 P(Un ≤ r(Yn ), Yn ≤ x).

Pour le premier terme, les variables Y1 et U1 étant indépendantes, leur loi jointe est le produit des
marginales, ce qui donne par Fubini
Z Z 1 
P(U1 > r(Y1 )) = E[1U1 >r(Y1 ) ] = 1u>r(y) du g(y)dy,
R 0

d’où, g et f étant des densités,


Z Z
1
P (U1 > r(Y1 )) = (1 − r(y))g(y)dy = 1 − r(y)g(y)dy = 1 − .
R R m
Par ailleurs, un raisonnement comparable sur le second terme donne
Z Z 1 
P(Un ≤ r(Yn ), Yn ≤ x) = E[1Un ≤r(Yn ) 1Yn ≤x ] = 1u≤r(y) du 1y≤x g(y)dy,
R 0

c’est-à-dire
Z Z x Z x
1 F (y)
P(Un ≤ r(Yn ), Yn ≤ x) = 1y≤x r(y)g(y)dy = r(y)g(y)dy = f (y)dy = .
R −∞ m −∞ m

Au total, on a obtenu
 n−1
1 F (x)
P(X ≤ x, N = n) = 1− × .
m m
Tout est prêt, il ne reste plus qu’à marginaliser ce résultat. D’une part, par continuité monotone
croissante,
   
1 n−1 F (x) 1 1 n−1
P(N = n) = lim P(X ≤ x, N = n) = lim 1 − × = 1−
x→∞ x→∞ m m m m

et N suit effectivement une loi géométrique de paramètre 1/m. D’autre part, par sigma-additivité,

X ∞  
F (x) X 1 n−1
P(X ≤ x) = P(X ≤ x, N = n) = 1− = F (x),
n=1
m n=1 m

ce qui prouve que X a bien la loi voulue.




Exemple jouet. On veut simuler X de densité f (x) = 3x2 sur [0, 1]. Puisque f (x) ≤ 3, on peut
choisir pour g la loi uniforme sur [0, 1] et prendre m = 3, ce qui donne pour le rapport d’acceptation

f (x)
r(x) = = x2 .
mg(x)

L’algorithme est alors le suivant : on simule un couple (Y1 , U1 ) de variables uniformes indépen-
dantes : si U1 ≤ Y12 , on pose X = Y1 , sinon on recommence. Le nombre moyen d’essais avant
d’obtenir une réalisation de X est donc égal à 3. Cet exemple est “jouet” en ce sens que, dans ce

Simulations Monte-Carlo Arnaud Guyader


6 Chapitre 1. Génération de variables aléatoires

cas particulier, il vaut mieux appliquer la méthode d’inversion : un calcul immédiat montre en effet
que si U est uniforme sur [0, 1], la variable X = U 1/3 a pour densité f .
La preuve de la Proposition 2 se déroule tout aussi paisiblement si au lieu de calculer la probabilité
P(X ≤ x, N = n), on étudie P(X ∈ A, N = n) pour A borélien quelconque de R. L’intérêt est que
cette version s’adapte directement en dimension supérieure. Autrement dit, la méthode de rejet
reste valable si f et g sont des densités sur Rd . Voyons un cas particulier d’application.
Exemple : simulation d’une loi conditionnelle. Soit B un ensemble (borélien) contenu dans
le carré [0, 1] × [0, 1] de R2 . Supposons qu’on veuille simuler des points uniformément dans B mais
que, pour tout point x du plan, on ne dispose que d’une fonction boîte noire nous disant si, oui
ou non, x est dans B (ce n’est rien d’autre que l’indicatrice de B). L’algorithme de simulation est
alors naturel : il suffit de générer des points Yn uniformément dans [0, 1] × [0, 1] jusqu’à l’instant N
où l’on tombe dans B. Par le résultat précédent, la variable X est alors uniforme sur B. En effet,
dans ce contexte, en notant λ(B) la mesure de Lebesgue de B (i.e. sa surface) et C = [0, 1] × [0, 1],
on a, avec des notations évidentes,

1B (x, y) 1
f (x, y) = et g(x, y) = 1C (x, y) =⇒ m = et r(x, y) = 1B (x, y).
λ(B) λ(B)

Le point remarquable de cet exemple est que la constante m est inconnue !


Généralisation. l’idée sous-jacente à l’exemple précédent est généralisable : supposons que f (x) =
cf0 (x) où c est une constante de normalisation inconnue, situation récurrente en statistique bayé-
sienne et en physique statistique. Par contre, f0 (x) est calculable et il existe une densité g0
facilement simulable vérifiant f0 (x) ≤ g0 (x) pour presque tout x. Alors il suffit de prendre
m = c : la méthode de rejet s’applique et ne nécessite nullement la connaissance de c puisque
r(x) = f (x)/(mg(x)) = f0 (x)/g0 (x). Ceci est un grand classique de certaines méthodes Monte-
Carlo et on le recroisera par exemple dans l’algorithme de Metropolis-Hastings.

1.4 Vecteurs aléatoires


Puisqu’il n’existe pas de méthode universelle pour simuler une variable aléatoire de loi donnée,
il en va de même pour les vecteurs aléatoires. Nous nous contentons donc de donner ici quelques
pistes.

1.4.1 Conditionnement
Supposons que l’on veuille simuler un couple aléatoire (X, Y ). Si les deux coordonnées sont indé-
pendantes, on est ramené à ce qui précède puisqu’il suffit de simuler X et Y indépendamment.
Si tel n’est pas le cas, on peut éventuellement s’en sortir si, par exemple, X est facilement simulable
et si la loi de Y sachant X l’est aussi : il suffit de simuler x selon L(X) puis y selon la loi
conditionnelle L(Y |X = x). Dans le cas de variables à densité, ceci est tout simplement basé sur
le fait que f (x, y) = f (x) × f (y|x).
Exemple. On considère la densité

f (x, y) = xe−xy 10<x<1 1y>0 .

Il est facile de voir que X suit une loi uniforme sur [0, 1] et que, sachant X = x, Y suit une loi
exponentielle de paramètre x. La simulation du couple (X, Y ) est donc triviale.

Arnaud Guyader Simulations Monte-Carlo


1.4. Vecteurs aléatoires 7

1.4.2 Changement de variables


La formule de changement de variables dans les intégrales doubles permet de déterminer la densité
d’un couple aléatoire (U, V ) à partir de celle d’un couple aléatoire (X, Y ) lorsque ceux-ci sont en
bijection.

Théorème 1 (Changement de variables)


Soit (U, V ) un couple aléatoire de densité fU,V . Soit ϕ : R2 → R2 un C 1 -difféomorphisme tel que
(x, y) = ϕ(u, v). Alors le couple aléatoire (X, Y ) admet pour densité

fX,Y (x, y) = fU,V (ϕ−1 (x, y)) × | det Jϕ−1 (x, y)|

si le point (x, y) est dans l’image de ϕ, 0 sinon.

Rappelons que Jϕ−1 (x, y) désigne la matrice jacobienne de l’application inverse de ϕ au point (x, y)
et que, par analogie avec la formule vue au lycée (f −1 )′ (x) = 1/f ′ (f −1 (x)), on a
 ∂x ∂x 
1 ∂u ∂v
det Jϕ−1 (x, y) = avec formellement Jϕ = ∂y ∂y .
det Jϕ (ϕ−1 (x, y)) ∂u ∂v

Une application classique en Monte-Carlo est donnée par l’algorithme suivant.


Exemple : algorithme de Box-Muller. Soit (U, V ) un couple de variables i.i.d. de loi uniforme
sur [0, 1]. Alors les variables X et Y définies par
 √
X = √ −2 log U × cos(2πV )
Y = −2 log U × sin(2πV )

sont i.i.d. gaussiennes centrées réduites. Puisqu’on a vu précédemment que −2 log U suit une loi
exponentielle de paramètre 1/2, une autre façon d’énoncer ce résultat est la suivante : si le point
(X, Y ) est tiré aléatoirement suivant une gaussienne centrée réduite, ses coordonnées polaires (R, θ)
sont un couple de variables indépendantes avec R2 ∼ E(1/2) et θ ∼ U[0,2π] .
3

3
2

2
1

1
z

Y
0

0
−3 −2 −1

−3 −2 −1

y x

−3 −1 1 2 3 −4 −2 0 2
X

Figure 1.1 – Densité, lignes de niveaux et échantillon de la loi normale standard.

Remarque. La méthode de Box-Muller semble parfaite pour générer des variables gaussiennes. En
fait, elle n’est pas utilisée en pratique en raison de l’appel à des fonctions coûteuses en temps de cal-
cul (logarithme, cosinus et sinus). Comme mentionnée précédemment, la génération de gaussiennes
est souvent plutôt basée sur une méthode d’inversion approchée de la fonction de répartition Φ.

Simulations Monte-Carlo Arnaud Guyader


8 Chapitre 1. Génération de variables aléatoires

1.4.3 Vecteurs gaussiens


Rappelons que si X = [X1 , . . . , Xd ]′ est un vecteur aléatoire dont les composantes admettent toutes
des moments d’ordre 2, l’espérance du vecteur X est définie par E[X] = [E[X1 ], . . . , E[Xd ]]′ et sa
matrice de covariance (ou de dispersion) Γ est la matrice d × d symétrique semi-définie positive de
terme générique

Γi,j = Cov(Xi , Xj ) = E[(Xi − E[Xi ])(Xj − E[Xj ])] = E[Xi Xj ] − E[Xi ]E[Xj ].

Par ailleurs, si A est une matrice d0 × d et b un vecteur de taille d0 , tous deux déterministes,
le vecteur aléatoire Y = AX + b admet pour espérance E[Y ] = AE[X] + b et pour matrice de
covariance ΓY = AΓA′ .
D’autre part, un vecteur X = [X1 , · · · , Xd ]′ est dit gaussien si toute combinaison linéaire de ses
variables est gaussienne, c’est-à-dire si pour tout d-uplet de coefficients (α1 , . . . , αd ), la variable
α1 X1 + · · · + αd Xd est gaussienne.
Du point de vue de la simulation, les vecteurs gaussiens ont un double intérêt : d’une part, ils sont
complètement caractérisés par moyenne et dispersion, d’autre part ils sont stables par transforma-
tion affine. C’est ce que résume le résultat suivant.

Proposition 3 (Transformation affine d’un vecteur gaussien)


Soit X ∼ N (m, Γ) un vecteur gaussien de dimension d, A une matrice d0 × d et b un vecteur de
taille d0 , tous deux déterministes, alors le vecteur aléatoire Y = AX + b est gaussien, avec plus
précisément :
Y ∼ N (Am + b, AΓA′ ).

Supposons maintenant qu’on veuille simuler un vecteur aléatoire gaussien X ∼ N (m, Γ) dans Rd ,
m et Γ étant donnés. Soit R une racine carrée de Γ, c’est-à-dire une matrice d×d vérifiant Γ = RR′ .
La matrice Γ étant semi-définie positive, elle se diagonalise en base orthonormée, c’est-à-dire sous
la forme Γ = P ∆P ′ avec P ′ = P −1 et Γ = diag(λ1 , . . . , λd ), les valeurs propres λi étant toutes
positives ou nulles. Il suffit donc de prendre
√ √ p p
R=P ∆ avec ∆ = diag( λ1 , . . . , λd ). (1.3)

Si Γ est définie positive, on peut aller plus vite via la méthode de Choleski, qui fournit une matrice
R triangulaire inférieure vérifiant cette propriété. Bref, une racine carrée étant obtenue, il suffit de
partir d’un vecteur gaussien centré réduit, donc facile à simuler, pour arriver à nos fins. En effet,
en vertu de la proposition précédente,

X0 ∼ N (0, Id ) =⇒ X = RX0 + m ∼ N (m, Γ),

et l’affaire est dans le sac.


Exemple. Sous R, le calcul d’une racine carrée est effectué comme expliqué en (1.3) et la génération
de vecteurs gaussiens se fait très simplement par l’appel préalable à la librairie MASS :

> library(MASS)
> mvrnorm(1000,m,Gamma)

génère 1000 vecteurs


  gaussiens  de moyenne
 m et de matrice de dispersion Γ. Ceci est illustré figure
2 1 1
1.2 pour m = et Γ = . Voir aussi l’exercice 1.12.
1 1 4

Arnaud Guyader Simulations Monte-Carlo


1.4. Vecteurs aléatoires 9

4
0
−4

−2 −1 0 1 2 3 4 5

Figure 1.2 – Echantillon de 1000 points suivant la loi N (m, Γ).

1.4.4 Copules
Tout ce qui suit est exposé en dimension 2, mais la généralisation en dimension supérieure se fait
sans problème. Pour des compléments sur toute cette section, on pourra se reporter à [13]. Pour
un couple aléatoire (X, Y ), l’idée des copules est de séparer la dépendance entre les variables X et
Y de leurs lois marginales. Commençons par en donner une définition analytique.

Définition 2 (Copule)
Une copule est une fonction C : [0, 1]2 → [0, 1] vérifiant :
— pour tout 0 ≤ u, v ≤ 1, on a C(u, 0) = C(0, v) = 0 ;
— pour tout 0 ≤ u, v ≤ 1, on a C(u, 1) = u et C(1, v) = v ;
— 2-croissance : si 0 ≤ u1 ≤ u2 ≤ 1 et 0 ≤ v1 ≤ v2 ≤ 1, alors

C(u2 , v2 ) − C(u1 , v2 ) − C(u2 , v1 ) + C(u1 , v1 ) ≥ 0.

On rappelle que la fonction de répartition d’un couple (X, Y ) est définie par :

∀(x, y) ∈ R × R F (x, y) = P(X ≤ x, Y ≤ y).

La définition d’une copule est liée à la fonction de répartition d’un couple dont les marginales sont
uniformes.

Proposition 4 (Copule et fonction de répartition)


Une fonction C : [0, 1]2 → [0, 1] est une copule si et seulement si C est la fonction de répartition
d’un couple (U, V ) tel que U et V suivent chacune une loi uniforme sur [0, 1], autrement dit :

C(u, v) = P(U ≤ u, V ≤ v),

avec U ∼ U[0,1] et V ∼ U[0,1] .

Exemples : dans tout ce qui suit, on considère 0 ≤ u, v ≤ 1. Voir l’exercice 1.17 pour les repré-
sentations.
— copule comonotone : si U ∼ U[0,1] alors V = U ∼ U[0,1] et C(u, v) = min(u, v).
— copule anti-comonotone : si U ∼ U[0,1] alors V = 1−U ∼ U[0,1] et C(u, v) = max(u+v−1, 0).

Simulations Monte-Carlo Arnaud Guyader


10 Chapitre 1. Génération de variables aléatoires

0.8
z

0.4
u v

0.0
0.0 0.4 0.8

Figure 1.3 – Copule indépendante c(u, v) = uv et lignes de niveaux.

— copule indépendante : si U ∼ U[0,1] et V ∼ U[0,1] , avec U et V indépendantes, alors C(u, v) =


uv (voir figure 1.3).
Le fait qu’une copule permette de séparer la loi jointe des lois marginales est illustré par le résultat
suivant.

Théorème 2 (Théorème de Sklar (1959))


Soit (X, Y ) un couple aléatoire de fonction de répartition F , avec X de fonction de répartition FX
et Y de fonction de répartition FY . Alors il existe une copule C telle que

∀(x, y) ∈ R × R F (x, y) = C(FX (x), FY (y)).

De plus, si FX et FY sont continues, la copule C est unique et définie par :

∀ 0 ≤ u, v ≤ 1 C(u, v) = F (FX−1 (u), FY−1 (v)),

où FX−1 et FY−1 sont les inverses généralisées de X et Y .

Exemple : copule gaussienne. Si (X, Y ) est un couple gaussien centré tel que Var(X) =
Var(Y ) = 1 et Cov(X, Y ) = ρ ∈] − 1, 1[, alors la copule gaussienne de paramètre ρ est définie
par
Z Φ−1 (u) Z Φ−1 (v)  2 
1 x − 2ρxy + y 2
C(u, v) = p exp − dxdy,
−∞ −∞ 2π 1 − ρ2 2(1 − ρ2 )
où Φ−1 est la réciproque de Φ, fonction de répartition de la loi normale centrée réduite (voir figure
1.4).
Une famille classique est celle des copules archimédiennes. Si X est une variable aléatoire positive,
la fonction
ϕ(λ) = E[e−λX ]
est appelée transformée de Laplace de X. Elle est dérivable sur ]0, ∞[ avec ϕ(λ) = −E[Xe−λX ]. Dès
lors, si X est strictement positive, ϕ est strictement décroissante et établit une bijection de [0, ∞[
dans ]0, 1]. On note ϕ−1 sa fonction réciproque, avec les conventions ϕ(∞) = 0 et ϕ−1 (0) = ∞.

Arnaud Guyader Simulations Monte-Carlo


1.4. Vecteurs aléatoires 11

0.8
z

0.4
u v

0.0
0.0 0.4 0.8

Figure 1.4 – Copule gaussienne de paramètre ρ = 3/4 et lignes de niveaux.

Proposition 5 (Copule archimédienne)


Soit X une variable aléatoire strictement positive, de transformée de Laplace ϕ. La fonction C :
[0, 1]2 → [0, 1] définie par

∀ 0 ≤ u, v ≤ 1 C(u, v) = ϕ(ϕ−1 (u) + ϕ−1 (v))

est une copule, dite copule archimédienne associée à la loi de X. Si U1 et U2 sont uniformes sur
[0, 1] et indépendantes, et si X a pour transformée de Laplace ϕ, alors le couple (U, V ) défini par
U = ϕ(− X1 log U1 ) et V = ϕ(− X1 log U2 ) a des marges uniformes et pour copule C.

Preuve. Le couple (U, V ) est bien à valeurs dans [0, 1] × [0, 1]. Pour 0 ≤ u, v ≤ 1, on a
 
1 1
P(U ≤ u, V ≤ v) = P ϕ(− log U1 ) ≤ u, ϕ(− log U2 ) ≤ v .
X X

La décroissance de ϕ−1 et la positivité de X donnent alors


 −1 −1

P(U ≤ u, V ≤ v) = P U1 ≤ e−ϕ (u)X , U2 ≤ e−ϕ (v)X .

Il suffit de conditionner par rapport à X :


h    i h i
−1 −1 −1 −1
P(U ≤ u, V ≤ v) = E P U1 ≤ e−ϕ (u)X X P U2 ≤ e−ϕ (v)X X = E e−(ϕ (u)+ϕ (v))X ,

et par définition de la transformée de Laplace :

P(U ≤ u, V ≤ v) = ϕ(ϕ−1 (u) + ϕ−1 (v)) = C(u, v).

Dès lors, puisque ϕ−1 (1) = 0, on a pour 0 ≤ u ≤ 1,

P(U ≤ u) = P(U ≤ u, V ≤ 1) = ϕ(ϕ−1 (u) + ϕ−1 (1)) = ϕ(ϕ−1 (u)) = u.

Ceci assure que U suit une loi uniforme, tout comme V . Ainsi C(u, v) définit bien une copule.


Simulations Monte-Carlo Arnaud Guyader


12 Chapitre 1. Génération de variables aléatoires

Exemple : copule de Clayton. Si X ∼ E(1), alors ϕ(λ) = 1/(1 + λ) donc ϕ−1 (u) = (1 − u)/u
et la copule associée à la loi exponentielle, dite copule de Clayton, est
1
C(u, v) = 1 1 .
u + v −1

La Proposition 5 donne un façon très simple de simuler une telle copule.


Simulation. D’après le Théorème de Sklar, un couple aléatoire (X, Y ) est complètement caracté-
risé par la donnée de sa copule et de ses lois marginales. Considérons donc C, FX et FY données
et supposons qu’on veuille simuler une réalisation de ce couple. D’après ce qui précède, il “suffit”
de :
1. simuler (U, V ) de lois marginales uniformes et de copule C ;
2. calculer X = FX−1 (U ) et Y = FY−1 (V ).

1.5 Exercices
Exercice 1.1 (Loi de Cauchy)
On rappelle que X suit une loi de Cauchy standard si elle a pour densité

1
f (x) =
π(1 + x2 )
Grâce à la méthode d’inversion, donner un moyen simple de simuler une telle loi.

Exercice 1.2 (Loi de Pareto)


Soient xm et α deux réels strictement positifs. Déterminer la densité de la variable
xm
X= ,
U 1/α
où U suit une loi uniforme sur [0, 1]. On dit que X suit une loi de Pareto de paramètres (xm , α).

Exercice 1.3 (Conditionnement et inversion)


On considère le couple (X, Y ) de densité

f (x, y) = yxy−1 e−y 1y>0 10<x<1 .

1. Quelle est la loi de Y ?


2. En déduire la loi de X sachant Y = y, puis P(X ≤ x|Y = y).
3. Proposer une méthode de simulation du couple (X, Y ).

Exercice 1.4 (Conditionnement)


On considère le couple (X, Y ) de densité

1 2 √
f (x, y) = √ e−y x/2 e− x 1x>0 .

1. Quelle est la loi de Y sachant X = x ?

2. Quelle est la loi de X ?
3. En déduire une méthode de simulation du couple (X, Y ).

Exercice 1.5 (Maximum)


Soit X et Y deux variables indépendantes de fonctions de répartition FX et FY .

Arnaud Guyader Simulations Monte-Carlo


1.5. Exercices 13

1. Quelle est la fonction de répartition de la variable T = max(X, Y ) ?


2. En déduire une façon de générer une variable aléatoire de fonction de répartition

F (t) = min(t, 1) 1 − e−t 1t>0 .

3. Tracer la densité de cette variable.


Exercice 1.6 (Rejet optimisé)
On veut simuler une loi normale N (0, 1) en utilisant comme proposition une loi de Laplace de
paramètre λ > 0, c’est-à-dire de densité
λ −λ|x|
g(x) = e .
2
Déterminer la valeur de λ qui permet de minimiser la probabilité de rejet. Vérifier que cette dernière
vaut environ 0,24.

Exercice 1.7 (Rejet discret)


Soit λ ∈]0, 1[ fixé.
1. Utiliser la méthode de rejet pour simuler une variable X de Poisson de paramètre λ à partir
d’une variable Y de loi

∀n ∈ N P(Y = n) = (1 − λ)λn .

2. Comment simuler simplement Y ?


3. Quelle est la probabilité de rejet ?

Exercice 1.8 (Loi uniforme sur le disque)


Proposer une méthode de rejet pour simuler une variable uniforme sur le disque unité sans utiliser
de fonctions trigonométriques.

Exercice 1.9 (Rejet et conditionnement)


Soit X une variable aléatoire de fonction de répartition F supposée inversible.
1. Comment simuler la loi de X conditionnellement à X > a à l’aide d’une méthode de rejet ?
Que se passe-t-il lorsque a devient grand ?
2. Soit U une variable de loi uniforme sur [0, 1] et T définie par

T = F −1 (F (a) + (1 − F (a))U ).

Déterminer la fonction de répartition de T et en déduire une méthode de simulation de X


conditionnellement à X > a. Comparer à la méthode de la question précédente.
3. Soit a > 0 fixé. On suppose que l’on cherche à simuler X de loi gaussienne centrée réduite
conditionnellement à X > a. Proposer une méthode de rejet basée sur la loi exponentielle
translatée de densité
gλ (x) = λe−λ(x−a) 1x>a .
Comment choisir le paramètre λ ?

Exercice 1.10 (Durée d’une simulation)


1. On veut générer n = 1000 variables exponentielles de paramètre 1. Utiliser la méthode
d’inversion vue en cours, tracer l’histogramme et superposer la densité théorique.
2. Même question avec les fonctions dédiées rexp et dexp sous R.
3. Interpréter les commandes suivantes :

Simulations Monte-Carlo Arnaud Guyader


14 Chapitre 1. Génération de variables aléatoires

> t0=proc.time()
> runif(1000000)
> proc.time()-t0
Comparer les durées respectives des méthodes des questions précédentes pour n grand.

Exercice 1.11 (Lien géométrique/exponentielle)


Soit 0 < p < 1 et X une variable aléatoire suivant une loi géométrique G(p).
1. Rappeler la loi de X et son espérance.
2. Soit (Bn )n≥1 une suite de variables i.i.d. selon une loi de Bernoulli B(p). Comment obtenir
une loi géométrique à partir de celles-ci ?
3. Proposer un moyen de simuler B1 à partir d’une variable uniforme U1 sur [0, 1]. En déduire
une simulation de X à partir de lois uniformes pour p = 1/3. Retrouver par simulation
l’espérance de la loi géométrique. Que se passe-t-il lorsque p est proche de 0 ?
4. Soit λ > 0 et T une variable aléatoire suivant une loi exponentielle E(λ). Soit X = ⌈T ⌉ la
partie entière par excès de T (i.e. ⌈0.4⌉ = 1 et ⌈2⌉ = 2). Quelles valeurs peut prendre X ?
Avec quelles probabilités ? En déduire un nouveau moyen de générer une loi géométrique
G(p). Comparer la vitesse de cette méthode à celle de la question 3 ainsi qu’à celle de rgeom.

Exercice 1.12 (Nul n’est censé ignorer la loi normale)


1. Utiliser la méthode vue en exercice 1.6 pour simuler une loi normale centrée réduite à partir
d’une loi de Laplace. Estimer le temps nécessaire pour simuler un million de gaussiennes
avec cette méthode.
2. Comparer la méthode précédente à celle de Box-Muller.
3. Comparer à celle implémentée sous R via rnorm.
4. Simuler n = 1000 réalisations d’une loi normale multivariée N (m, Γ) avec
   
2 1 1
m= et Γ= .
1 1 4

Retrouver approximativement m et Γ à partir de cet échantillon.

Exercice 1.13 (Méfiez-vous des mélanges !)


On considère une variable X de densité

1 (x+3)2 2 (x−3)2
f (x) = √ e− 8 + √ e− 2 .
6 2π 3 2π
1. Représenter la fonction f .
2. En voyant f comme un mélange de lois, proposer une méthode de simulation de X.
3. Représenter sur un même graphique un histogramme de réalisations de X et la densité f .

Exercice 1.14 (Comparaison de méthodes)


Soit X une variable de fonction de répartition F telle que F (x) = 0 si x ≤ 0, F (x) = 1 si x ≥ 1,
et pour tout x ∈ [0, 1] :
1
F (x) = (x + x2 ). (1.4)
2
1. Comment simuler X par la méthode d’inversion ? Implémenter cette méthode pour simuler
n = 10000 réalisations de X. Sur un même graphe, représenter la vraie densité f sur [0, 1]
et un estimateur de la densité obtenu à partir de cet échantillon.

Arnaud Guyader Simulations Monte-Carlo


1.5. Exercices 15

2. Majorer la densité de X et en déduire une façon de simuler X par la méthode de rejet.


Implémenter cette méthode pour simuler n = 10000 réalisations de X.
3. Soit f une densité qui se décompose sous la forme f (x) = pf1 (x) + (1 − p)f2 (x), où p ∈]0, 1[
est connu, et f1 et f2 sont deux densités selon lesquelles on sait simuler.
(a) Expliquer comment simuler une variable aléatoire X ayant pour densité f .
(b) En déduire une façon de simuler une variable X ayant la fonction de répartition donnée
par (1.5). Implémenter cette méthode pour simuler n = 10000 réalisations de X.
4. Des trois méthodes précédentes, laquelle choisiriez-vous si vous devez simuler un très grand
nombre de variables suivant la loi de X ?
Exercice 1.15 (Loi géométrique conditionnelle)
Soit p ∈]0, 1[ fixé et X une variable aléatoire suivant une loi géométrique de paramètre p. On se
fixe de plus un entier m ∈ N∗ et on s’intéresse à la loi de X conditionnellement à X > m, notée
L(X|X > m).
1. Proposer une méthode de rejet pour simuler une réalisation de Y ∼ L(X|X > m). Quelle
est la probabilité de rejet ? Quel est l’inconvénient de cette méthode ?
2. Donner la loi de Z = X + m, son espérance et sa variance. En déduire une nouvelle méthode
de simulation suivant la loi L(X|X > m).
3. On veut retrouver I = E[X|X > m] par simulation. On fixe p = 1/6 et m = 12. Utiliser la
question 2 pour tracer un estimateur Iˆn en fonction de n, pour n allant par exemple de 1 à
1000, les intervalles de confiance à 95% et la droite horizontale y = I (en rouge).
4. Par rapport à la méthode de la question 1, toujours pour p = 1/6 et m = 12, par quel
facteur en moyenne a-t-on divisé le temps de calcul ?

Exercice 1.16 (Loi Gamma)


On veut générer une variable X suivant une loi Gamma Γ(3/2, 1), c’est-à-dire de densité

2
f (x) = √ x1/2 e−x 1x>0 .
π

1. On utilise une technique de rejet avec comme loi de proposition une exponentielle E(2/3)
de densité notée g. Déterminer m = supx>0 f (x)/g(x). Quelle est le nombre moyen de
simulations de la loi exponentielle pour aboutir à une réalisation de la loi Gamma ?
2. Représenter sur un même graphique un histogramme de réalisations de X (obtenues par
cette méthode de rejet) et la densité f .
3. Intuitivement, qu’est-ce qui a guidé le choix du paramètre 2/3 comme paramètre de l’ex-
ponentielle ? On peut justifier cette intuition : considérer comme proposition la densité gλ
d’une exponentielle E(λ) et déterminer la valeur optimale de λ en terme de probabilité de
rejet.

Exercice 1.17 (Représentation et simulation de copules)


Rappelons que pour visualiser une surface z = f (x, y) sur [0, 1] × [0, 1], une méthode consiste à
implémenter la fonction f , discrétiser x et y, appliquer z=outer(x,y,f) si f est vectorisable puis,
via le package rgl, la commande rgl.surface(x,y,z). On peut aussi utiliser persp(x,y,z) ou
contour(x,y,z).
1. Représenter les surfaces associées aux copules comonotone C(u, v) = min(u, v), anti-comonotone
C(u, v) = max(u + v − 1, 0), indépendante C(u, v) = uv, de Clayton, et gaussienne de para-
mètre ρ = 1/2. Pour cette dernière, on pourra faire appel à la fonction pmvnorm du package
mvtnorm.

Simulations Monte-Carlo Arnaud Guyader


16 Chapitre 1. Génération de variables aléatoires

2. On veut simuler deux nuages de 1000 points dont chaque marge suit une loi gaussienne
centrée réduite. Sur la même fenêtre graphique, représenter à gauche un tel échantillon
pour la copule gaussienne de paramètre ρ = 1/2, et à droite pour la copule de Clayton.
3. On veut simuler deux nuages de 1000 points dont chaque marge suit une loi de Laplace. Sur
la même fenêtre graphique, représenter à gauche un tel échantillon pour la copule gaussienne
de paramètre ρ = 1/2, et à droite pour la copule indépendante.

Exercice 1.18 (Mouvement brownien, pont brownien)


Un mouvement brownien ou processus de Wiener (Wt )t≥0 peut être caractérisé par : W0 = 0, les
trajectoires de t 7→ Wt sont presque sûrement continues, Wt est à incréments indépendants avec,
pour tout 0 ≤ s ≤ t, Wt − Ws ∼ N (0, t − s).
1. On veut simuler de façon approchée un mouvement brownien entre les dates t = 0 et
t = 1. Simuler n = 100 variables gaussiennes et en déduire des réalisations de Wt pour
t ∈ {1/100, . . . , 99/100, 1} (on pourra utiliser la fonction cumsum). Représenter la trajectoire
avec en abscisse le temps et en ordonnée Wt , les points (t, Wt ) étant reliés par des segments.
Idem avec n = 104 .
2. En dimension 2, un processus (Wt )t≥0 = (Wtx , Wty )t≥0 est un mouvement brownien si
(Wtx )t≥0 et (Wty )t≥0 sont deux mouvements browniens indépendants. Simuler et représenter
une trajectoire (Wt )0≤t≤1 à partir de n = 100 points. Idem avec n = 104 points. Marquer
l’origine d’un point rouge.
3. On revient en dimension 1 et on considère un mouvement brownien (Wt )t≥0 . Le processus
(Bt )t≥0 défini par Bt = Wt − tW1 est appelé pont brownien. Utiliser la question 1 pour
représenter des trajectoires d’un pont brownien.
4. Soit (Un )n≥1 une suite de variables i.i.d. uniformes sur [0, 1], (Fn )n≥1 la suite des fonctions de
répartition empirique et kFn − F k∞ la distance du sup entre Fn et la fonction de répartition
F de la loi uniforme. Le théorème de Kolmogorov-Smirnov dit que, en notant (Bt )t≥0 un
pont brownien,
√ L
nkFn − F k∞ −−−→ sup |Bt |.
n→∞ 0≤t≤1

La loi de droite est connue sous le nom de loi de Kolmogorov-Smirnov.


(a) Pour n = 100, à l’aide de l’argument type=”s”, représenter la fonction

n n
1X Xj
Fn (x) = 1]−∞,x](Ui ) = 1 (x),
n n [U(j,n) ,U(j+1,n) [
i=1 j=1

où U(1,n) < · · · < U(n,n) est le n-ème échantillon ordonné et U(n+1,n) = +∞. En déduire

la représentation de n(Fn (x) − F (x)) sur [0, 1] pour n = 100 et pour n = 104 .
(b) Fixons n = 100. En tenant compte du fait que
  
j − 1 j
kFn − F k∞
= max max U(j,n) − , U − ,
1≤j≤n n (j,n) n

construire un échantillon de taille 1000 selon la loi nkFn − F k∞ . Sur un même gra-
phique, représenter un estimateur de la densité de cet échantillon et un estimateur de
la densité d’un échantillon de taille 1000 de la loi de sup0≤t≤1 |Bt |.

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 17

1.6 Corrigés
Exercice 1.1 (Loi de Cauchy)
On applique la méthode d’inversion en commençant par calculer la fonction de répartition de X,
ce qui donne pour tout réel x
Z x
dx 1 1
F (x) = 2
= + arctan x.
−∞ π(1 + x ) 2 π
Celle-ci s’inversant sans problème, on voit que pour générer X, il suffit de commencer par générer
U suivant une loi uniforme sur [0, 1] et de prendre
  
−1 1
X = F (U ) = Q(u) = tan π U − .
2
Au passage, ceci donne une interprétation géométrique de la loi de Cauchy : c’est la tangente d’un
angle tiré uniformément entre −π/2 et π/2.

6
0.6

2
Q(u)
F(x)

−2
0.2

−6

−4 −2 0 2 4 0.2 0.4 0.6 0.8


x u

Figure 1.5 – Fonction de répartition d’une loi de Cauchy et son inverse généralisée.

Exercice 1.2 (Loi de Pareto)


La variable X prend des valeurs supérieures à xm et pour tout x ≥ xm , sa fonction de répartition
vaut   x α   x α
m m
F (x) = P(X ≤ x) = P U ≥ =1− .
x x
Il ne reste plus qu’à dériver pour en déduire la densité de X :
xαm
f (x) = α 1x≥xm .
xα+1
Cette loi est à la base du principe des 80-20 connu en sciences sociales. De même que la loi de
Cauchy, elle fait partie des lois à queues épaisses : vitesse polynomiale de décroissance vers 0 à
l’infini, et non exponentielle.
Exercice 1.3 (Conditionnement et inversion)
On considère le couple (X, Y ) de densité

f (x, y) = yxy−1 e−y 1y>0 10<x<1 .

Simulations Monte-Carlo Arnaud Guyader


18 Chapitre 1. Génération de variables aléatoires

1. La densité de Y s’obtient en marginalisant par rapport à x, ce qui donne ici


Z 1
f (y) = f (x, y)dx = e−y 1y>0 ,
0

et Y suit donc une loi exponentielle de paramètre 1.


2. La densité conditionnelle de X sachant Y = y vaut donc pour tout y > 0 fixé

f (x|y) = yxy−1 10<x<1 ,

d’où il vient pour la fonction de répartition conditionnelle, pour tout x entre 0 et 1 :


Z x
P(X ≤ x|Y = y) = f (x|y)dx = xy .
0

3. La variable y étant fixée, on peut inverser cette fonction de répartition conditionnelle et


appliquer la méthode d’inversion. Puisque

u = xy ⇐⇒ x = u1/y ,

on en déduit que pour simuler une réalisation du couple (X, Y ), il suffit de commencer
par générer Y suivant une loi exponentielle de paramètre 1 (vu en cours) puis à générer U
suivant une loi uniforme sur [0, 1] et enfin à poser X = U 1/Y .

Exercice 1.4 (Conditionnement)


On considère le couple (X, Y ) de densité
1 2

f (x, y) = √ e−y x/2 e− x 1x>0 .

1. Pour déterminer la loi de Y sachant X = x, on commence par calculer la densité de X. On
reconnaît une gaussienne centrée en faisant apparaître ce qu’il faut pour caler la variance :
Z +∞ Z +∞ √
1 −√ x x 2 1 √
f (x) = f (x, y)dy = √ e 1x>0 √ e−y x/2 dx = √ e− x 1x>0 .
−∞ 2 x −∞ 2π 2 x
Il s’ensuit que pour tout x > 0,

x 2
f (y|x) = √ e−y x/2 =⇒ L(Y |X = x) = N (0, 1/x).


2. Calculons par exemple la fonction de répartition de la variable X, avec pour tout r > 0,
√ Z r2 Z r2 √
2 1
F (r) = P( X ≤ r) = P(X ≤ r ) = f (x)dx = √ e− x dx = 1 − e−r ,
0 0 2 x

et X suit une loi exponentielle de paramètre 1.
3. Pour simuler le couple (X, Y ) : on simule E ∼ E(1), puis on considère X = E 2 et on simule
Y ∼ N (0, 1/X).

Exercice 1.5 (Maximum)


Soit X et Y deux variables indépendantes de fonctions de répartition FX et FY .
1. La fonction de répartition de la variable T = max(X, Y ) se déduit facilement de celles de
X et Y en tenant compte de l’indépendance des variables X et Y :

FT (t) = P(T ≤ t) = P(X ≤ t, Y ≤ t) = P(X ≤ t)P(Y ≤ t) = FX (t)FY (t).

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 19

2. Si X ∼ U[0,1] , Y ∼ E(1) et T = max(X, Y ), alors on a exactement



FT (t) = F (t) = min(t, 1) 1 − e−t 1t>0 .

Il suffit donc de générer une uniforme, une exponentielle et de prendre le maximum des
deux résultats obtenus pour obtenir une réalisation de T .
3. La dérivation donne 
 0 si t ≤ 0
f (t) = 1 + (t − 1)e−t si 0 ≤ t < 1
 −t
e si t ≥ 1

qui admet une discontinuité en t = 1 (voir figure 1.6).


0.8

0.8
F(t)

f(t)
0.4

0.4
0.0

0.0

0.0 0.5 1.0 1.5 2.0 0.0 0.5 1.0 1.5 2.0
t t

Figure 1.6 – Fonction de répartition et densité du max d’une uniforme et d’une exponentielle.

Exercice 1.6 (Rejet optimisé)


En notant f la densité de la loi normale N (0, 1), commençons par noter que pour une méthode de
rejet basée sur le couple (g, m) vérifiant pour tout x,

f (x) ≤ mg(x),

la probabilité de rejet est la proba qu’une loi géométrique de paramètre 1/m soit strictement
supérieure à 1, c’est-à-dire 1 − 1/m. Minimiser la probabilité de rejet revient donc à minimiser m.
Autrement dit, on cherche le couple de paramètres (λ, m) tel que f ≤ mg avec m minimal. Pour
ceci, notons que par symétrie,

1 2 λ 1 2 λ
∀x ∈ R, √ e−x /2 ≤ m e−λ|x| ⇐⇒ ∀x ≥ 0, √ e−x /2 ≤ m e−λx
2π 2 2π 2

ceci étant encore équivalent à


r r
2 1 λx−x2 /2 2 1 λ2 /2
m ≥ sup e = e = ϕ(λ).
x≥0 π λ π λ

Simulations Monte-Carlo Arnaud Guyader


20 Chapitre 1. Génération de variables aléatoires

Il reste à minimiser la fonction ϕ sur (0, +∞), ce qui est équivalent à minimiser son logarithme,
ce qui donne λ = 1. Il suffit ensuite de prendre
r r
2e 1 π
m = ϕ(1) = =⇒ 1 − =1− ≈ 0.24.
π m 2e
Remarques :
1. Pour appliquer cet algorithme de rejet, il faut donc commencer par simuler Y suivant une
loi de Laplace de paramètre 1. Il y a plusieurs possibilités : la méthode générique consiste
à appliquer la méthode d’inversion. Partant de la fonction de répartition
 
1 y 1 −y
F (y) = e 1y<0 + 1 − e 1y≥0 ,
2 2
on en déduit son inverse

F −1 (u) = log(2u)10<u<1/2 − log(2(1 − u))11/2≤u<1 .

Il suffit donc de tirer U ∼ U[0,1] puis de poser Y = F −1 (U ).


On peut aussi voir la loi de Laplace comme un mélange équiprobable d’une exponentielle
positive et d’une exponentielle négative. Ainsi, une méthode de simulation est de commencer
par tirer une Rademacher R, c’est-à-dire R = ±1 de façon équiprobable, soit

R = −1U ≤1/2 + 1U ≥1/2 avec U ∼ U[0,1] .

On tire par ailleurs une loi E ∼ E(1), pour obtenir Y = R × E qui suit bien une loi de
Laplace de paramètre 1.
Quoi qu’il en soit, après simplifications, la fonction rapport d’acceptation est alors définie
par
f (y) 1 2
r(y) = = e− 2 (|y|−1) .
mg(y)
Soit enfin V ∼ U[0,1] , alors si V ≤ r(y), la variable X = y suite une loi normale centrée
réduite. Le résultat précédent dit qu’en moyenne, environ 3 fois sur 4, la proposition y est
acceptée.
2. On peut gagner un peu de temps dans la simulation par Y = R×E puisque la loi de Laplace
et la loi normale sont symétriques : on tire d’abord Y0 = y0 suivant une loi exponentielle,
on regarde si la proposition est acceptée via le même rapport que ci-dessus, c’est-à-dire
f (y0 ) 1 2 1 2
r(y0 ) = = e− 2 (|y0 |−1) = e− 2 (y0 −1) ,
mg(y0 )
et, pour V ∼ U[0,1] , alors si V ≤ r(y0 ), on tire une Rademacher R et on pose Y = R × y0 .
Voir l’exercice 1.12 pour l’implémentation.

Exercice 1.7 (Rejet discret)


Soit λ ∈]0, 1[ fixé.
1. La méthode de rejet pour des variables discrètes fonctionne de la même façon que pour
des variables continues : il suffit pour s’en convaincre de voir les densités f (x) et g(x) par
rapport à la mesure de Lebesgue sur R comme des densités pn et qn par rapport à la mesure
de comptage sur N. Il s’agit donc de trouver une constante m telle que, pour tout entier
naturel n,
P(X = n) e−λ e−λ
m≥ ⇐⇒ m ≥ ⇐⇒ m ≥ .
P(Y = n) (1 − λ)n! (1 − λ)

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 21

On choisira donc m = e−λ /(1 − λ). On procède alors comme suit : on simule Y = n
suivant la loi donnée, on tire une loi uniforme U = u sur [0, 1] et on compare u au rapport
d’acceptation :
P(X = n) 1
rn = = .
mP(Y = n) n!
2. La loi de Y fait penser à une loi géométrique de paramètre (1 − λ). En l’occurrence, si
Y0 ∼ G(1 − λ), alors Y = Y0 − 1 suit la loi voulue.
3. Comme dans l’exercice précédent, la probabilité de rejet vaut
1
1− = 1 − (1 − λ)eλ ,
m
qui est d’autant plus petite que λ est proche de 0.

Exercice 1.8 (Loi uniforme sur le disque)


Ceci est un cas particulier de l’exemple vu en cours : il suffit de simuler (U1 , U2 ) un couple i.i.d.
selon la loi uniforme sur [0, 1] pour en déduire un point (X, Y ) = (2(U1 − 1/2), 2(U2 − 1/2))
distribué uniformément dans le carré unité. Il ne reste plus qu’à tester si X 2 + Y 2 ≶ 1 pour voir
s’il se situe dans le disque unité. La probabilité d’acceptation correspond naturellement au rapport
des surfaces et vaut π/4, de l’ordre de 3/4.

Exercice 1.9 (Rejet et conditionnement)


Soit X une variable aléatoire de fonction de répartition F supposée inversible.
1. Pour simuler la loi de X conditionnellement à X > a à l’aide d’une méthode de rejet, il suffit
de simuler Y1 suivant la loi de X, puis de poser X = Y1 si Y1 > a, et de recommencer avec
une nouvelle variable Y2 sinon, et ainsi de suite jusqu’à obtenir YN > a. Avec les notations
du cours, il s’ensuit que la variable aléatoire N suit une loi géométrique de paramètre
1/m = P(X > a). Le nombre d’essais moyen pour obtenir une réalisation de L(X|X > a)
est donc égal à 1/P(X > a), quantité qui tend vers 0 quand a tend vers l’infini. Cette
méthode est donc à proscrire lorsque a se situe dans la queue de la distribution de X.
2. Soit U une variable de loi uniforme sur [0, 1] et T définie par

T = F −1 (F (a) + (1 − F (a))U ).

Puisque F (a) + (1 − F (a))U ≥ F (a), la variable T est supérieure à la valeur a. Plus


précisément, sa fonction de répartition FT vaut, pour tout t > a,

FT (t) = P(T ≤ t) = P(F −1 (F (a) + (1 − F (a))U ) ≤ t) = P(F (a) + (1 − F (a))U ≤ F (t)),

ce qui conduit à
 
F (t) − F (a) F (t) − F (a) P(a < X ≤ t)
FT (t) = P U ≤ = = = P(X ≤ t|X > a),
1 − F (a) 1 − F (a) P(X > a)

c’est-à-dire que T ∼ L(X|X > a). Ceci permet de simuler la loi de X conditionnellement à
X > a très simplement

U ∼ U[0,1] =⇒ T = F −1 (F (a) + (1 − F (a))U ) ∼ L(X|X > a)

Cette méthode est bien plus efficace que la méthode de rejet précédente, puisqu’on ne
rejette rien et qu’elle fonctionne quel que soit a. Elle nécessite cependant la connaissance
et l’inversion de F , contrairement à la méthode de rejet, qui n’exigeait que la capacité à
simuler suivant la loi de X.

Simulations Monte-Carlo Arnaud Guyader


22 Chapitre 1. Génération de variables aléatoires

Elle fonctionne par exemple très bien pour une loi exponentielle, auquel cas on vérifie que
ceci revient simplement à appliquer une translation de a sur une loi exponentielle (absence
de mémoire). Par ailleurs, elle se généralise à la simulation de la loi de X conditionnée à
a < X ≤ b puisqu’on vérifie de la même façon que

T = F −1 (F (a) + (F (b) − F (a))U ) ∼ L(X|a < X ≤ b).

3. D’après ce qui vient d’être dit, la simulation suivant la densité

gλ (x) = λe−λ(x−a) 1x>a

de l’exponentielle translatée est très simple puisqu’il suffit de simuler suivant une exponen-
tielle de paramètre 1 et d’ajouter a au résultat. Pour le choix optimal du paramètre λ, la
méthode étant la même que dans l’exercice 1.6, nous ne rentrerons pas dans les détails. En
notant Z +∞
1 − x2
Q(a) = e 2 dx,
a 2π
il nous faut donc trouver le couple (m, λ) optimal tel que
√ 1 x2
2πQ(a)m ≥ sup eλ(x−a)− 2 = sup ϕλ (x).
x≥a λ x≥a

Puisque m doit être minimal, on le choisira donc tel que


√ 1 x2
2πQ(a)m = inf sup eλ(x−a)− 2 = inf sup ϕλ (x).
λ>0 x≥a λ λ>0 x≥a

Il faut distinguer deux cas :

1 − a2 1 − a2
0 < λ ≤ a =⇒ sup ϕλ (x) = ϕλ (a) = e 2 =⇒ inf sup ϕλ (x) = e 2
x≥a λ 0<λ≤a x≥a a

et
1 λ(λ−a)− λ2
λ ≥ a =⇒ sup ϕλ (x) = ϕλ (λ) = e 2 =⇒ inf sup ϕλ (x) = ϕλ0 (λ0 ),
x≥a λ λ≥a x≥a

avec √
a+ a2 + 4 1 a2
λ0 = =⇒ ϕλ0 (λ0 ) < e− 2 = ϕa (a).
2 a
Noter que le calcul de λ0 se fait sans problème à partir de a. Ainsi, en posant

1 x2
f (x) = √ e− 2 1x≥a
2πQ(a)

la densité de la restriction de la gaussienne au-dessus de a, on déduit

1 f (x) 1 λ0 (x−a)− x2
m0 = √ ϕλ0 (λ0 ) =⇒ r0 (x) = = e 2 ≤ 1 ∀x ≥ a,
2πQ(a) m0 gλ0 (x) λ0

et la méthode de rejet est ainsi optimisée.

Exercice 1.10 (Durée d’une simulation)


1. On spécifie les bornes de la représentation graphique ainsi que les classes de l’histogramme.

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 23

n=1000
ech=-log(runif(n))
xmax=ceiling(max(ech))
sub=seq(0,xmax,by=0.1)
hist(ech,breaks=sub, prob=T)
x=seq(0,xmax,by=0.1)
lines(x,exp(-x),col=’red’)
2. Même principe :
n=1000
ech=rexp(n)
xmax=ceiling(max(ch))
sub=seq(0,xmax,by=0.1)
hist(ech,breaks=sub, prob=T)
x=seq(0,xmax,by=0.1)
lines(x,dexp(x),col=’red’)
3. Les commandes (exécutées en un bloc !) :
t0=proc.time()
runif(1000000)
proc.time()-t0
donnent le temps nécessaire (troisième colonne : écoulé) pour générer un million de variables
exponentielles avec la méthode d’inversion. Le générateur de R va un peu plus vite :
t0=proc.time()
E=rexp(1000000)
proc.time()-t0
Exercice 1.11 (Lien géométrique/exponentielle)
Soit 0 < p < 1 et X une variable aléatoire suivant une loi géométrique G(p).
1. La variable X est donc à valeurs dans N∗ et
∀n ∈ N∗ , P(X = n) = p(1 − p)n−1 .
Son espérance vaut E[X] = 1/p.
2. La variable X correspond au nombre de lancers nécessaires pour qu’une pièce ayant une
probabilité d’apparition de Pile égale à p à chaque lancer tombe effectivement sur Pile.
Traduction mathématique : si X = inf{n ∈ N∗ , Bn = 1}, alors X ∼ G(p).
3. C’est un cas particulier trivial de la méthode d’inversion : il suffit de considérer B1 = 1U1 ≤p .
On en déduit une simulation de X à partir de lois uniformes pour p = 1/3.
p=1/3
X=0
k=1
while(X==0){if(runif(1)>p){k=k+1}else{X=k}}
On peut ainsi retrouver par simulation l’espérance de la loi géométrique :
p=1/3
n=1000
ech=rep(0,n)
for(i in (1:n)){
k=1
while (ech[i]==0){if(runif(1)>p){k=k+1}else{ech[i]=k}}}
mean(ech)

Simulations Monte-Carlo Arnaud Guyader


24 Chapitre 1. Génération de variables aléatoires

Lorsque p est proche de 0, il faut bien sûr attendre très longtemps, un temps de l’ordre de
1/p puisque E[X] = 1/p.
4. Soit λ > 0, T une variable aléatoire suivant une loi exponentielle E(λ). La variable X = ⌈T ⌉
est à valeurs dans N∗ , avec pour tout n ∈ N∗ ,
   n−1
P(X = n) = P(n − 1 < T ≤ n) = e−λ(n−1) − e−λn = 1 − e−λ × e−λ ,

autrement dit X ∼ G(1− exp(−λ)). Par conséquent, si T ∼ E(− log(1− p)), alors X ∼ G(p).
Puisqu’il est très facile de simuler une loi exponentielle, ceci donne une nouvelle façon de
générer une loi géométrique :
p=1/3
l=-log(1-p)
X=ceiling(rexp(1,rate=l))
Dans tous les cas, cette méthode va bien entendu plus vite que celle de la question 3,
a fortiori lorsque p est proche de 0. Plus étonnant, elle va presque deux fois vite que le
générateur par défaut rgeom 2 :
n=10^7
p=1/3
l=-log(1-p)
t0=proc.time()
ech=ceiling(rexp(n,rate=l))
proc.time()-t0
p=1/3
t0=proc.time()
ech=rgeom(n,prob=p)+1
proc.time()-t0
Pour une explication sur la raison de cette sous-optimalité du générateur de R, on pourra
se reporter au billet dédié sur le blog de Djalil Chafaï 3 .

Exercice 1.12 (Nul n’est censé ignorer la loi normale)


1. On applique donc la technique de rejet vue en exo 1.6 :
n=10^6
t0=proc.time()
R=2*round(runif(n))-1 # tirage des n Rademacher
ech=rep(0,n)
for(i in (1:n)){
while (ech[i]==0){
y=rexp(1)
if(runif(1)<exp(-(y-1)^2/2)){ech[i]=R[i]*y}}}
proc.time()-t0
On voit que cette méthode est assez lente, encore un peu on s’endormait.
2. Par la méthode de Box-Muller, l’obtention d’un million de gaussiennes est par contre quasi
instantanée :
2. noter que R considère la loi géométrique à valeurs dans N, et non dans N∗ , mais ceci ne change à peu près
rien sur la durée de la simulation.
3. http://djalil.chafai.net/blog/2014/11/15/about-random-generators-of-geometric-distribution/

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 25

n=10^6
t0=proc.time()
R=sqrt(-2*log(runif(n/2)))
theta=2*pi*runif(n/2)
ech=c(R*cos(theta),R*sin(theta))
proc.time()-t0

3. La méthode implémentée sous R via rnorm est encore un peu plus rapide :
n=10^6
t0=proc.time()
ech=rnorm(n)
proc.time()-t0

4. On utilise la fonction mvrnorm du package MASS :


n=1000
m=c(2,1)
gamma=matrix(c(1,1,1,4),nrow=2)
library(MASS)
ech=mvrnorm(n,m,gamma)
On estime alors m et Γ sans difficultés à partir de cet échantillon :
apply(ech,2,mean)
cov(ech)

Exercice 1.13 (Méfiez-vous des mélanges !)


On considère une variable X de densité

1 (x+3)2 2 (x−3)2
f (x) = √ e− 8 + √ e− 2 .
6 2π 3 2π
1. La représentation de f est immédiate et illustre le fait que la variable X est bimodale :
x=seq(-10,10,by=0.01)
y=exp(-(x+3)^2/8)/(6*sqrt(2*pi))+exp(-(x-3)^2/2)*2/(3*sqrt(2*pi))
plot(x,y,type=’l’)

2. Soit B une variable aléatoire prenant les valeurs -1 et +1 avec les probabilités respectives
1/3 et 2/3. Soit Xn ∼ N (−3, 4) et Xp ∼ N (3, 1) deux variables gaussiennes indépendantes
entre elles et indépendantes de B. Soit alors

X = 1B=−1 × Xn + 1B=+1 × Xp ,

autrement dit : on commence par tirer B et suivant le résultat obtenu, on tire l’une des deux
gaussiennes. C’est ce qu’on appelle un mélange de lois. Montrons que la variable X ainsi
construite a bien pour densité f . On peut passer par sa fonction de répartition et procéder
par conditionnement par rapport à la valeur prise par B :

FX (x) = P(X ≤ x) = P(X ≤ x|B = −1) × P(B = −1) + P(X ≤ x|B = +1) × P(B = +1),

d’où il vient, par indépendance des variables,


1 2 1 2
FX (x) = P(Xn ≤ x) + P(Xp ≤ x) = Fn (x) + Fp (x),
3 3 3 3

Simulations Monte-Carlo Arnaud Guyader


26 Chapitre 1. Génération de variables aléatoires

où Fn et Fp correspondent aux cdf de Xn et Xp , c’est-à-dire à des cdf de gaussiennes,


lesquelles se dérivent aisément et donnent les densités gaussiennes fn et fp , d’où

1 2
fX (x) = FX′ (x) = fn (x) + fp (x) = f (x).
3 3
On en déduit le code suivant pour simuler selon la densité f (voir aussi figure 1.7) :
u=runif(1)
x=(u<1/3)*rnorm(1,mean=-3,sd=2)+(u>1/3)*rnorm(1,mean=3,sd=1)

3. Et pour tout un échantillon :


n=10^4
u=runif(n)
ech=(u<1/3)*rnorm(n,mean=-3,sd=2)+(u>1/3)*rnorm(n,mean=3,sd=1)
hist(ech,nclass=30, prob=T)
x=seq(-10,10,by=0.01)
y=exp(-(x+3)^2/8)/(6*sqrt(2*pi))+exp(-(x-3)^2/2)*2/(3*sqrt(2*pi))
lines(x,y,col=’red’)
0.20
0.10
0.00

−10 −5 0 5

Figure 1.7 – Histogramme, estimateur de la densité (noir) et densité (rouge) d’un mélange de
gaussiennes.

Exercice 1.14 (Comparaison de méthodes)


Soit X une variable de fonction de répartition F telle que F (x) = 0 si x ≤ 0, F (x) = 1 si x ≥ 1,
et pour tout x ∈ [0, 1] :

1
F (x) = (x + x2 ). (1.5)
2
1. Il suffit de simuler U selon une loi uniforme sur [0, 1] et de considérer

−1 −1 + 1 + 8U
X = F (U ) = .
2
Ceci donne tout simplement :

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 27

n=10^4
u=runif(n)
ech=(-1+sqrt(1+8*u))/2
x=seq(0,1,by=0.01)
plot(x,0.5+x,type="l",col="red",xlab="",ylab="")
lines(density(ech))
2. Puisque  
1 3
f (x) = + x 1[0,1] (x) ≤ × 1[0,1] (x),
2 2
on peut choisir pour g la loi uniforme sur [0, 1] et prendre m = 3/2, ce qui donne pour le
rapport d’acceptation  
f (x) 1 2
r(x) = = + x 1[0,1] (x).
mg(x) 3 3
L’algorithme est alors le suivant :
n=10^4
x=rep(0,n)
for (i in 1:n){
while (x[i]==0){
y=runif(1)
u=runif(1)
if(u<1/3+2/3*y){x[i] = y}}}
3. Soit f une densité qui se décompose sous la forme f (x) = pf1 (x) + (1 − p)f2 (x), où p ∈]0, 1[
est connu, et f1 et f2 sont deux densités selon lesquelles on sait simuler.
(a) C’est un mélange de lois. On commence par tirer U uniforme sur [0, 1] : si U ≤ p, on
tire X selon f1 ; si U ≥ p, on tire X selon f2 .
(b) Dans notre cas, il suffit de voir que p = 1/2, f1 (x) = 1[0,1] (x) et f2 (x) = 2x1[0,1] (x).
La densité de f1 est celle d’une uniforme sur [0, 1], donc aucun problème. Pour simuler

selon f2 , puisque F2 (x) = x2 pour 0 ≤ x ≤ 1, la méthode d’inversion assure que U a
la densité f2 . Au total, ceci s’écrit :
n=10^4
u=runif(n)
v=runif(n)
ech=v*(u<1/2)+sqrt(v)*(u>1/2)
x=seq(0,1,by=0.01)
plot(x,0.5+x,type="l",col="red",xlab="",ylab="")
lines(density(ech))

4. Clairement, la méthode de rejet n’est pas efficace. Entre les deux autres méthodes, celle
par inversion semble préférable puisqu’elle nécessite de générer deux fois moins de variables
uniformes. On peut le vérifier en comparant les durées respectives. Pour la méthode d’in-
version :
t0=proc.time()
n=10^6
u=runif(n)
ech=(-1+sqrt(1+8*u))/2
x=seq(0,1,by=0.01)
proc.time()-t0

Simulations Monte-Carlo Arnaud Guyader


28 Chapitre 1. Génération de variables aléatoires

Pour la méthode de mélange :


t0=proc.time()
n=10^6
u=runif(n)
v=runif(n)
ech=v*(u<1/2)+sqrt(v)*(u>1/2)
proc.time()-t0

Exercice 1.15 (Loi géométrique conditionnelle)


Soit p ∈]0, 1[ fixé et X une variable aléatoire suivant une loi géométrique de paramètre p. On se
fixe de plus un entier m ∈ N∗ et on s’intéresse à la loi de X conditionnellement à X > m, notée
L(X|X > m).
1. On simule des variables aléatoires Xn ∼ G(p) jusqu’au premier instant (aléatoire) N tel que
XN > m, on pose alors Y = XN . La probabilité de rejet est
m
X
P(X ≤ m) = p(1 − p)k−1 = 1 − (1 − p)m .
k=1

Lorsque m est grand, cette probabilité est proche de 1. Typiquement, puisque E[X] = 1/p,
cette méthode devient très inefficace lorsque m ≫ 1/p.
2. La variable Z = m + X est à valeurs dans {m + 1, m + 2, . . .} avec, pour tout k ≥ 1,

p(1 − p)m+k−1 P(X = m + k)


P(Z = m + k) = P(X = k) = p(1 − p)k−1 = m
= ,
(1 − p) P(X > m)

d’où finalement
P(Z = m + k) = P(X = m + k|X > m).
C’est la propriété d’absence de mémoire de la loi géométrique, claire si l’on pense par
exemple aux lancers successifs d’un dé. Les moments de Z se déduisent des moments de X,
soit
1 q
E[Z] = m + E[X] = m + et Var(Z) = Var(X) = 2 .
p p
Pour simuler suivant L(X|X > m), il suffit donc de simuler X ∼ G(p) et de considérer
Z = m + X.
3. On veut retrouver I = E[X|X > m] par simulation. On fixe p = 1/6 et m = 12.
n=1000
p=1/6
m=12
I=m+1/p
sigma=sqrt(1-p)/p
alpha=0.05
q=qnorm(1-alpha/2)
X=1+rgeom(n,p)
Z=m+X
Ihat=cumsum(Z)/(1:n)
r=q*sigma/sqrt(1:n)
Ihatmin=Ihat-r
Ihatmax=Ihat+r
plot((1:n),Ihat,type=’l’)

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 29

lines((1:n),Ihatmin,type=’l’,col=’green’)
lines((1:n),Ihatmax,type=’l’,col=’green’)
abline(h=I,col=’red’)
4. La probabilité de rejet est P(X ≤ 12) = 1 − (1 − 1/6)12 ≈ 0.9, donc il faut simuler en
moyenne 10 variables géométriques pour aboutir à une réalisation selon la loi L(X|X > m).
En moyenne, on a donc divisé le temps de calcul par 10.
Exercice 1.16 (Loi Gamma)
On veut générer une variable X suivant une loi Gamma Γ(3/2, 1), c’est-à-dire de densité
2
f (x) = √ x1/2 e−x 1x>0 .
π
1. Après calculs,
f (3/2) 33/2
m= =√ .
g(3/2) 2πe
Le nombre moyen de simulations de la loi exponentielle pour aboutir à une réalisation de
la loi Gamma est m ≈ 1.26.
2. Représentation :
n=10^4
m=3^(3/2)/sqrt(2*pi*exp(1))
X=rep(0,n)
for (k in (1:n)){
while(X[k]==0){
y=rexp(1,rate=2/3)
r=dgamma(y,shape=3/2,rate=1)/(m*dexp(y,rate=2/3))
X[k]=(runif(1)<r)*y}}
xmax=ceiling(max(X))
sub=seq(0,xmax,by=0.1)
hist(X,breaks=sub, prob=T)
x=seq(0,xmax,by=0.2)
lines(x,dgamma(x,shape=3/2,rate=1),col=’red’)
3. La moyenne d’une loi Γ(3/2, 1) est 3/2, qui est aussi la moyenne d’une loi exponentielle de
paramètre 2/3. Pour tout x > 0, soit
f (x) 2
mλ = sup = sup √ x1/2 e−(1−λ)x .
x>0 gλ (x) x>0 πλ
Si λ ≥ 1, alors mλ = +∞, donc hors de question. Pour 0 < λ < 1, soit
1 −1/2 −(1−λ)x
ϕ(x) = x1/2 e−(1−λ)x =⇒ ϕ′ (x) = x e (1 − 2(1 − λ)x),
2
d’où √
f (1/(2(1 − λ)) 2
mλ = =√ √ .
gλ (1/(2(1 − λ)) πeλ 1 − λ
La probabilité de rejet étant à 1 − 1/mλ , minimiser celle-ci revient à minimiser mλ ,
√ égale −1
c’est-à-dire à minimiser (λ 1 − λ) , c’est-à-dire à maximiser
√ √ λ 2 − 3λ
ψ(λ) = λ 1 − λ =⇒ ψ ′ (λ) = 1 − λ − √ = √ ,
2 1−λ 2 1−λ
et le maximum est bien atteint en λ = 2/3.

Simulations Monte-Carlo Arnaud Guyader


30 Chapitre 1. Génération de variables aléatoires

Exercice 1.17 (Représentation et simulation de copules)


1. On commence par créer une grille de valeurs pour abscisses et ordonnées :
u=seq(0.01,1,by=0.01)
v=seq(0.01,1,by=0.01)
On construit ensuite les fonctions pour les différentes copules :
cmono=function(u,v){pmin(u,v)}
canti=function(u,v){pmax(u+v-1,0)}
cinde=function(u,v){u*v}
cclayton=function(u,v){1/(1/u+1/v-1)}
library(mvtnorm)
cgauss=function(u,v){pmvnorm(lower=c(-Inf,-Inf),upper=c(qnorm(u),qnorm(v)),
mean=c(0,0),corr=matrix(c(1,1/2,1/2,1),nrow=2))}
Pour les quatre premières, la suite est alors identique. Par exemple, pour la copule como-
notone :
z1=outer(u,v,cmono)
library(rgl)
rgl.surface(u,v,z1)
persp(u,v,z1,theta=30)
contour(u,v,z1)
Pour la copule gaussienne, on peut procéder comme suit :
z5=matrix(0,nrow=length(u),ncol=length(v))
for(i in 1:length(u)){for(j in 1:length(v)){z5[i,j]=cgauss(u[i],v[j])}}
library(rgl)
rgl.surface(u,v,z5)
persp(u,v,z5,theta=30)
contour(u,v,z5)

2. Lorsque chaque marge suit une loi gaussienne centrée réduite et que la copule est gaussienne,
on a tout simplement affaire à un couple gaussien.
n=1000
m=c(0,0)
gamma=matrix(c(1,1/2,1/2,1),nrow=2)
library(MASS)
ech=mvrnorm(n,m,gamma)
par(mfrow=c(1,2))
plot(ech,pch=3,xlab="",ylab="")
Pour la copule de Clayton, on applique la méthode vue en cours.
X=rexp(n)
U1=runif(n)
U2=runif(n)
U=1/(1-log(U1)/X)
V=1/(1-log(U2)/X)
plot(qnorm(U),qnorm(V),pch=3,xlab="",ylab="")

3. Pour des marges suivant une loi de Laplace et une copule gaussienne de paramètre ρ = 1/2,
on commence par simuler un couple variables gaussiennes de copule voulue :

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 31

n=1000
m=c(0,0)
gamma=matrix(c(1,.5,.5,1),nrow=2)
ech=mvrnorm(n,m,gamma)
Si X ∼ N (0, 1), alors Φ(X) ∼ U[0,1] , donc il est très facile de se ramener à des lois uniformes
pour les marges :
Ux=pnorm(ech[,1])
Uy=pnorm(ech[,2])
Puis à des lois de Laplace via la méthode d’inversion :
X=log(2*Ux)*(Ux<1/2)-log(2*(1-Ux))*(Ux>1/2)
Y=log(2*Uy)*(Uy<1/2)-log(2*(1-Uy))*(Uy>1/2)
Ce qui donne finalement :
par(mfrow=c(1,2))
plot(X,Y,pch=3,xlab="",ylab="")
Pour la copule indépendante, il suffit de générer des couples de variables de Laplace indé-
pendantes :
Ux=runif(n)
Uy=runif(n)
X=log(2*Ux)*(Ux<1/2)-log(2*(1-Ux))*(Ux>1/2)
Y=log(2*Uy)*(Uy<1/2)-log(2*(1-Uy))*(Uy>1/2)
plot(X,Y,pch=3,xlab="",ylab="")

Exercice 1.18 (Mouvement brownien, pont brownien)


Un mouvement brownien ou processus de Wiener (Wt )t≥0 peut être caractérisé par : W0 = 0, les
trajectoires de t 7→ Wt sont presque sûrement continues, Wt est à incréments indépendants avec,
pour tout 0 ≤ s ≤ t, Wt − Ws ∼ N (0, t − s).
0.5
W
−0.5

0.0 0.2 0.4 0.6 0.8 1.0


t

Figure 1.8 – Trajectoire d’un mouvement brownien en dimension 1.

1. Il suffit de simuler n = 100 variables gaussiennes i.i.d. centrées et de variance 1/n, puis
d’effectuer la somme cumulée :

Simulations Monte-Carlo Arnaud Guyader


32 Chapitre 1. Génération de variables aléatoires

n=100
N=rnorm(n,mean=0,sd=1/sqrt(n))
W=cumsum(N)
W=c(0,W)
t=seq(0,1,by=1/n)
plot(t,W,type="l")
Idem avec n = 104 (voir figure 1.8).
0.2
−0.2
Wy
−0.6

−1.5 −1.0 −0.5 0.0


Wx

Figure 1.9 – Trajectoire d’un mouvement brownien en dimension 2.

2. En dimension 2, la simulation n’est pas plus compliquée (voir figure 1.9) :


n=10^4
Nx=rnorm(n,mean=0,sd=1/sqrt(n))
Ny=rnorm(n,mean=0,sd=1/sqrt(n))
Wx=c(0,cumsum(Nx))
Wy=c(0,cumsum(Ny))
plot(Wx,Wy,type="l",xlab="",ylab="")
points(0,0,col="red")
3. La simulation du pont brownien se déduit de celle du mouvement brownien (voir figure
1.10) :
n=100
N=rnorm(n,mean=0,sd=1/sqrt(n))
W=cumsum(N)
W=c(0,W)
t=seq(0,1,by=1/n)
B=W-t*W[n+1]
plot(t,B,type="l")
4. On veut illustrer le théorème de Kolmogorov-Smirnov.
(a) La représentation de Fn est élémentaire :
n=100
U=runif(n)
Uord=sort(U)

Arnaud Guyader Simulations Monte-Carlo


1.6. Corrigés 33

−0.5
B
−1.5

0.0 0.2 0.4 0.6 0.8 1.0


t

Figure 1.10 – Trajectoire d’un pont brownien.

Fn=seq(1/n,1,by=1/n)
plot(Uord,Fn,type="s",xlab="",ylab="")

Pour celle de n(Fn − F ), il faut gérer les sauts (voir figure 1.11).
1.5
1.0
0.5
0.0

0.0 0.2 0.4 0.6 0.8 1.0


Figure 1.11 – Une trajectoire de la fonction x 7→ n(Fn (x) − F (x)).

eps=10^(-16)
Uordmoins=Uord-eps
Uaux=sort(c(Uord,Uordmoins))
Fn=seq(1/n,1,by=1/n)
Fnmoins=seq(0,1-1/n,by=1/n)
Fnaux=sort(c(Fn,Fnmoins))
plot(Uaux,sqrt(n)*(Fnaux-Uaux),type="l",col="blue",xlab="",ylab="")

(b) Construisons un échantillon de taille 500 selon la loi nkFn − F k∞ (voir figure 1.12 en
noir) :

Simulations Monte-Carlo Arnaud Guyader


34 Chapitre 1. Génération de variables aléatoires

n=100
simu=500
Dn=rep(0,simu)
for(i in 1:simu){
U=runif(n)
Uord=sort(U)
for(j in 1:n){Dn[i]=max(Dn[i],abs(Uord[j]-(j-1)/n),abs(Uord[j]-j/n))}}
Kn=sqrt(n)*Dn
plot(density(Kn))
0.0 0.5 1.0 1.5

0.5 1.0 1.5 2.0


Figure 1.12 – Estimateurs de la densité pour un échantillon tiré selon la loi de nkFn − F k∞
(noir) et un échantillon tiré selon la loi de sup0≤t≤1 |Bt | (bleu).

Pour la loi de sup0≤t≤1 |Bt |, on peut procéder comme suit (voir figure 1.12 en bleu) :

dt=10^(-2)
supB=rep(0,simu)
for(i in 1:simu){
N=rnorm(1/dt,mean=0,sd=sqrt(dt))
W=cumsum(N)
t=seq(dt,1,by=dt)
supB[i]=max(abs(W-t*W[1/dt]))}
lines(density(supB),col="blue")

Arnaud Guyader Simulations Monte-Carlo


Chapitre 2

Intégration Monte-Carlo

Introduction
Une application classique des méthodes Monte-Carlo est le calcul de quantités du type
Z
I = E[ϕ(X)] = ϕ(x)f (x)dx, (2.1)

où ϕ : Rd → R est une fonction donnée et X un vecteur aléatoire de densité f suivant laquelle on


sait simuler (cf. Chapitre 1). Dans ce contexte, l’estimateur Monte-Carlo de base est défini par
n
1X
Iˆn = ϕ(Xi ), (2.2)
n
i=1

où les Xi sont générées de façon i.i.d. selon f . Outre les propriétés de cet estimateur, ce chapitre ex-
plique comment on peut éventuellement améliorer sa précision grâce à des techniques de réduction
de variance.

2.1 Exemples et propriétés


2.1.1 Convergence et intervalles de confiance
Il est clair que l’estimateur Iˆn est sans biais, c’est-à-dire que E[Iˆn ] = I. Mieux, la loi forte des
grands nombres assure qu’il est convergent.
Proposition 6 (Loi des grands nombres)
Si E|ϕ(X)| < ∞, alors
n
1X p.s.
Iˆn = ϕ(Xi ) −−−→ I.
n n→∞
i=1

Revenons sur un exemple élémentaire du chapitre précédent.


Exemple : estimation de π. Supposons que (X, Y ) suive la loi uniforme sur le carré C =
[0, 1] × [0, 1] et que ϕ(x, y) = 1x2 +y2 ≤1 . En notant D = {(x, y) ∈ R2+ , x2 + y 2 ≤ 1} le quart de
disque unité, on a donc ZZ
π
I= 1D (x, y)dxdy = λ(D) = .
C 4
Simuler des points (Xi , Yi ) uniformément dans C est très facile et la propriété précédente assure
donc que
n
1X p.s. π p.s.
Iˆn = 1D (Xi , Yi ) −−−→ ⇐⇒ 4 × Iˆn −−−→ π.
n n→∞ 4 n→∞
i=1

35
36 Chapitre 2. Intégration Monte-Carlo

On dispose donc d’un estimateur Monte-Carlo 1 pour la constante π. Encore faut-il connaître sa
précision : c’est tout l’intérêt du théorème central limite.

Proposition
  7 (Théorème central limite)
2
Si E ϕ(X) < ∞, alors
√ L
n (Iˆn − I) −−−→ N (0, σ 2 ),
n→∞
avec Z
2 2 2
σ = Var(ϕ(X)) = E[ϕ (X)] − E[ϕ(X)] = ϕ2 (x)f (x)dx − I 2 .

Ainsi, lorsque n est grand, notre estimateur suit à peu près une loi normale : avec un abus de
notation flagrant, on a Iˆn ≈ N (I, σ 2 /n), c’est-à-dire que Iˆn tend vers I avec une vitesse en

O(1/ n). Plus précisément, le TCL doit permettre de construire des intervalles de confiance.
Cependant, en général, l’écart-type σ est lui aussi inconnu, il va donc falloir l’estimer. Qu’à cela
ne tienne, la méthode Monte-Carlo en fournit justement un estimateur à peu de frais puisque basé
sur le même échantillon (X1 , . . . , Xn ), à savoir
n
1X 2 p.s.
σ̂n2 = ϕ (Xi ) − Iˆn2 −−−→ σ 2 (2.3)
n n→∞
i=1

par la loi des grands nombres pour le premier terme et la Proposition 6 pour le second. Le lemme
de Slutsky implique donc que
√ Iˆn − I L
n −−−→ N (0, 1).
σ̂n n→∞
Exemple : estimation de π. Dans ce cas, la variance vaut tout simplement
π π
σ2 = I − I 2 = 1− ,
4 4

laquelle est donc estimée par σ̂n2 = Iˆn − Iˆn2 , et d’après ce qui vient d’être dit

√ Iˆn − I L
n q −−−→ N (0, 1).
n→∞
Iˆn − Iˆn2

On en déduit bien entendu des intervalles de confiance asymptotiques pour I.

Proposition 8 (Intervalles de confiance)


Soit α ∈ (0, 1) fixé. Un intervalle de confiance de niveau asymptotique 1 − α pour I est
 
ˆ −1 σ̂n ˆ −1 σ̂n
In − Φ (1 − α/2) √ ; In + Φ (1 − α/2) √ ,
n n

où Φ−1 (1 − α/2) désigne le quantile d’ordre 1 − α/2 de la loi normale centrée réduite.

Typiquement α = 0.05 donne Φ−1 (1 − α/2) = q0.975 = 1.96 ≈ 2, qui permet de construire un
intervalle de confiance à 95% pour I. Un point de précision en passant : prendre 1.96 plutôt que 2

pour le quantile de la loi normale est tout à fait illusoire si le terme σ̂n / n n’est pas déjà lui-même
de l’ordre de 0.01 (i.e., pour un écart-type unité, un échantillon de taille au moins 10 000).
1. tout à fait inutile en pratique, puisqu’il existe des formules analytiques bien plus efficaces pour approcher π.

Arnaud Guyader Simulations Monte-Carlo


2.1. Exemples et propriétés 37

4.0
3.5
3.0
2.5

0 200 400 600 800 1000

Figure 2.1 – Estimateur Monte-Carlo de π et intervalles de confiance asymptotiques.

2.1.2 Quelques mots sur l’intégration numérique


Supposons pour simplifier que, dans l’intégrale définie par (3.1), f soit la densité uniforme sur le
pavé C = [0, 1]d , c’est-à-dire que Z
I= ϕ(x)dx.
[0,1]d
Si la fonction ϕ est suffisamment régulière, des méthodes déterministes d’intégration numérique
permettent également d’approcher cette intégrale.
Commençons par la dimension d = 1 et rappelons quelques résultats classiques :
— Dans ce cas, si ϕ est de classe C 1 , la méthode des rectangles sur la subdivision régulière
{1/n, . . . , (n − 1)/n, 1} a une précision en O(1/n). Plus précisément, si on convient de noter
M1 = supx∈[0,1] |ϕ′ (x)| et Rn l’approximation obtenue, alors
M1
|Rn − I| ≤ .
2n
— Si ϕ est de classe C 2 , la méthode des trapèzes sur la même subdivision a une précision
en O(1/n2 ). Plus précisément, si on note M2 = supx∈[0,1] |ϕ′′ (x)| et Tn l’approximation
obtenue, alors
M2
|Tn − I| ≤ .
12n2
— La méthode de Simpson consiste à approcher f sur chaque segment [k/n, (k + 1)/n] par un
arc de parabole qui coïncide avec f aux deux extrémités et au milieu de ce segment. Si ϕ
est de classe C 4 , cette méthode a une précision en O(1/n4 ). Plus précisément, si on note
M4 = supx∈[0,1] |ϕ(4) (x)| et Sn l’approximation obtenue, alors
M4
|Sn − I| ≤ .
2880n4
— De façon générale, si ϕ est de classe C s , une méthode adaptée à cette régularité (de type
Newton-Cotes) permettra d’obtenir une erreur en O(1/ns ). Si l’on compare à l’erreur en

O(1/ n) de la méthode Monte-Carlo, il est donc clair que les méthodes déterministes sont
préférables dès que f est C 1 .

Simulations Monte-Carlo Arnaud Guyader


38 Chapitre 2. Intégration Monte-Carlo

Passons maintenant au cas d = 2 et focalisons-nous sur la plus simple des méthodes déterministes,
à savoir celle des “rectangles” : on somme donc cette fois des volumes de pavés. Pour comparer ce
qui est comparable, il faut considérer que les deux méthodes font le même nombre n d’appels à la
fonction ϕ 2 . La subdivision {1/n, . . . , (n − 1)/n, 1} de la dimension 1 est donc remplacée par le
√ √ √
maillage de n points Ak,ℓ = (k/ n, ℓ/ n), avec 1 ≤ k, ℓ ≤ n. La précision de la méthode s’en

ressent puisqu’elle est alors logiquement en O(1/ n).
De façon générale, si ϕ est de classe C s sur [0, 1]d , alors une méthode déterministe adaptée à
cette régularité et faisant n appels à la fonction ϕ permettra d’atteindre une vitesse en O(n−s/d ).
Cette vitesse qui s’effondre avec d est symptomatique du fléau de la dimension. A contrario, la

méthode Monte-Carlo, avec une vitesse en 1/ n, est insensible à la dimension et peut donc s’avérer
plus avantageuse dès que l’on travaille en dimension grande ou sur une fonction irrégulière. En
fin de chapitre, nous dirons un mot des méthodes quasi Monte-Carlo, lesquelles représentent un
intermédiaire entre les méthodes déterministes et les méthodes Monte-Carlo.

2.1.3 Le paradigme bayésien


De façon générale, les méthodes Monte-Carlo sont d’usage constant en statistique bayésienne. En
particulier, celle-ci requiert régulièrement le calcul d’intégrales du type (3.1). Expliquons pourquoi
en quelques mots.
Le cadre typique est celui où la loi de la variable X dépend d’un paramètre θ. Dans l’approche
fréquentiste, θ est inconnu mais supposé avoir une valeur fixée et les observations (x1 , . . . , xn )
permettent de l’estimer par une méthode donnée, par exemple au maximum de vraisemblance.
L’approche bayésienne est différente : elle consiste à considérer que θ est lui-même aléatoire et suit
une loi (dite a priori) donnée, les observations (x1 , . . . , xn ) permettant d’affiner cette loi via sa
mise à jour au vu des observations.
Plus formellement, notons π la densité de la loi a priori de θ (ou prior) et f (x|θ) la densité
conditionnelle de x sachant θ (ou vraisemblance). Par la règle de Bayes, la densité a posteriori de
θ sachant x (ou posterior) s’écrit alors tout simplement
f (x|θ)π(θ)
π(θ|x) = Z ∝ f (x|θ)π(θ).
f (x|t)π(t)dt

Ceci fait, on pourra s’intéresser à une valeur moyenne par rapport à cette loi a posteriori, laquelle
s’écrira donc
Z
Z ϕ(θ)f (x|θ)π(θ)dθ
E[ϕ(θ)|x] = ϕ(θ)π(θ|x)dθ = Z . (2.4)
f (x|t)π(t)dt

Il convient de garder en tête que le paramètre θ est en général multidimensionnel. Par conséquent,
le calcul de l’intégrale (2.4) est, sauf cas particulier, impossible analytiquement et difficile par
intégration numérique déterministe.
Supposons cependant que l’on sache simuler suivant la loi a priori π(θ) et, pour tout θ, évaluer
la quantité ϕ(θ)f (x|θ). On retombe alors exactement dans le cadre d’application des méthodes
Monte-Carlo d’intégration, puisqu’il suffit de générer des réalisations i.i.d. (θ1 , . . . , θn ) selon π(θ)
pour en déduire que
n Z
1X p.s.
ϕ(θi )f (x|θi ) −−−→ ϕ(θ)f (x|θ)π(θ)dθ.
n n→∞
i=1

2. Un appel pouvant être coûteux dès lors que ϕ est compliquée, ce critère fait sens.

Arnaud Guyader Simulations Monte-Carlo


2.2. Réduction de variance 39

L’estimation du dénominateur de (2.4) correspond au cas particulier où ϕ = 1 et se traite donc de


la même façon. Au total, l’estimateur Monte-Carlo de I = E[ϕ(θ)|x] s’écrit
Pn
ϕ(θ )f (x|θi )
Pn i
Iˆn = i=1 .
i=1 f (x|θi )

En particulier, l’estimateur de Bayes


Z
θ̂(x) = θ π(θ|x)dθ,

qui correspond à la moyenne a posteriori de θ, admet pour estimateur Monte-Carlo


Pn
i=1 θi f (x|θi )
θ̂n (x) = P n .
i=1 f (x|θi )

Voir l’exercice 2.15 pour un exemple d’application.

2.2 Réduction de variance


Nous restons dans le cadre de la section précédente, à savoir l’estimation de l’intégrale I = E[ϕ(X)].

Son estimation Iˆn par la méthode Monte-Carlo standard aboutit à une erreur en σ/ n. Dès que
la dimension de X est grande ou ϕ irrégulière, les méthodes déterministes ou quasi-Monte-Carlo

ne sont plus concurrentielles et la vitesse en 1/ n apparaît donc incompressible. L’idée est alors
de gagner sur le facteur σ, ce qui est précisément l’objet des méthodes de réduction de variance.

Une remarque élémentaire au préalable : pour une précision ε voulue sur le résultat, donc en σ/ n
par Monte-Carlo classique, une méthode de réduction de variance permettant de diviser la variance
σ 2 par 2 permet de diviser le nombre n de simulations nécessaires par 2 pour atteindre la même
précision. Si la nouvelle méthode n’est pas plus coûteuse en temps de calcul, c’est donc la durée
de la simulation qui est ainsi divisée par deux. Si la nouvelle méthode requiert beaucoup plus
de calculs, il faut en toute rigueur en tenir compte, par exemple en définissant l’efficacité d’une
technique par
1
Efficacité = ,
Complexité × Variance
et en comparant les efficacités des différentes méthodes entre elles.

2.2.1 Echantillonnage préférentiel


On souhaite estimer Z
I = E[ϕ(X)] = ϕ(x)f (x)dx.

Si la fonction ϕ prend ses plus grandes valeurs là où la densité f est très faible, i.e. là où X a très
peu de chances de tomber, et réciproquement, l’estimateur Monte-Carlo classique
n
1X
Iˆn = ϕ(Xi )
n
i=1

est très mauvais puisqu’à moins de prendre n très grand, il va estimer environ 0 même si I vaut 1.
Exemples :

Simulations Monte-Carlo Arnaud Guyader


40 Chapitre 2. Intégration Monte-Carlo

1. Evénements rares : la variable X suivant une loi normale centrée réduite, on veut estimer
la probabilité Z
1 x2
P(X > 6) = E[1X>6 ] = 1x>6 √ e− 2 dx.
R 2π
La commande 1-pnorm(6) montre qu’elle est de l’ordre de 10−9 . Ceci signifie qu’à moins
de prendre n de l’ordre d’au moins un millard, on a toutes les chances d’obtenir Iˆn = 0.
2. Plus siouxe : soit m un réel, X ∼ N (m, 1) et ϕ(x) = exp(−mx + m2 /2). Pour tout m, on
a donc Z Z
1 x2
I = E[ϕ(X)] = ϕ(x)f (x)dx = √ e− 2 dx = 1.
R R 2π
Or 95% des Xi tombent dans l’intervalle [m − 2, m + 2] tandis que ϕ(m) = exp(−m2 /2)
tend très vite vers 0 quand m augmente. Ainsi, dès lors que m est grand, on obtient Iˆn
proche de 0, ce qui n’est pas une très bonne approximation de la valeur cherchée I = 1...

L’idée de l’échantillonnage préférentiel, ou échantillonnage pondéré, ou importance sampling, est


de tirer des points non pas suivant la densité f de X mais selon une densité auxiliaire g réalisant
un compromis entre les régions de l’espace où ϕ est grande et où la densité f est élevée, quitte à
rétablir le tir ensuite en tenant compte du fait que la loi de simulation g n’est pas la loi initiale f .
Mathématiquement, il s’agit simplement d’une réécriture de I sous la forme
Z Z Z
f (y)
I = E[ϕ(X)] = ϕ(x)f (x)dx = ϕ(y)g(y)dy = w(y)ϕ(y)g(y)dy = E[w(Y )ϕ(Y )],
g(y)

où Y a pour densité g et w(y) = f (y)/g(y) correspond à la pondération (ou rapport de vraisem-


blance) dû au changement de loi. Pour que celui-ci soit bien défini, il faut s’assurer qu’on ne divise
pas par 0, c’est-à-dire que g(y) = 0 implique f (y)ϕ(y) = 0. On peut alors voir w(y) comme la
dérivée de Radon-Nikodym de la loi de X par rapport à celle de Y . Ceci supposé, si l’on sait :
(a) simuler suivant la densité g,
(b) calculer le rapport de vraisemblance w(y) = f (y)/g(y) pour tout y,
l’estimateur par échantillonnage préférentiel prend la forme
n
1X
I˜n = w(Yi )ϕ(Yi ),
n
i=1

où les Yi sont i.i.d. de densité g. Mutatis mutandis, les résultats vus pour Iˆn s’appliquent à nouveau
ici.

Proposition 9 (Echantillonnage préférentiel)


Si E|w(Y )ϕ(Y )| < ∞, alors l’estimateur I˜n est sans biais et convergent, c’est-à-dire que E[I˜n ] = I
et
n
1X p.s.
I˜n = w(Yi )ϕ(Yi ) −−−→ E[w(Y )ϕ(Y )] = I.
n n→∞
i=1

Si de plus E[w2 (Y )ϕ2 (Y )] < ∞, alors


√ L
n (I˜n − I) −−−→ N (0, s2 ),
n→∞

avec Z
s2 = Var(w(Y )ϕ(Y )) = w2 (y)ϕ2 (y)g(y)dy − I 2 = E[w(X)ϕ2 (X)] − I 2 .

Arnaud Guyader Simulations Monte-Carlo


2.2. Réduction de variance 41

Remarque. Comme précédemment, la variance s2 est naturellement estimée par


n
1X 2
s̃2n = w (Yi )ϕ2 (Yi ) − I˜n2
n
i=1

pour en déduire des intervalles de confiance asymptotiques.


La variance s2 de I˜n est à comparer à la variance σ 2 = E[ϕ2 (X)]−I 2 de Iˆn . Il “suffit” donc de choisir
la pondération w, c’est-à-dire la densité instrumentale g, de sorte que le terme E[w(X)ϕ2 (X)] soit
le plus petit possible. La bonne nouvelle, c’est que ce problème a une solution explicite, la mauvaise
c’est qu’elle est tout à fait hors d’atteinte...

Lemme 1 (Loi d’échantillonnage optimale)


Pour toute densité g telle que E[w2 (Y )ϕ2 (Y )] < ∞, on a
Z 2 Z 2
2 2 2
s = Var(w(Y )ϕ(Y )) ≥ E[|ϕ(X)|] − I = |ϕ(x)|f (x)dx − ϕ(x)f (x)dx ,

la borne inférieure étant atteinte pour la densité g ⋆ définie par

|ϕ(y)|f (y)
g⋆ (y) = Z .
|ϕ(y)|f (y)dy

Si ϕ est de signe constant, la variance obtenue avec g⋆ est nulle, ce qui signifie qu’un seul tirage
selon g ⋆ suffit ! En effet, si Y ∼ g⋆ , alors
Z
˜ f (Y )
I1 = w(Y )ϕ(Y ) = ⋆ ϕ(Y ) = ϕ(x)f (x)dx = I.
g (Y )

Même si la proposition précédente présente surtout un intérêt théorique, on retrouve l’idée selon
laquelle la densité auxiliaire g doit réaliser un compromis entre la fonction à intégrer ϕ et la densité
f : autant que possible, g doit mettre du poids là où le produit |ϕ(x)|f (x) est le plus élevé.

2.2.2 Conditionnement
 
On cherche toujours à estimer I = E[ϕ(X)] en supposant E ϕ2 (X) < ∞. L’idée force dans cette
section a été vue en cours de probabilités, à savoir : le conditionnement ne change pas la moyenne,
mais réduit l’incertitude. Appliqué à notre contexte, ceci signifie que pour toute autre variable
aléatoire Y , on a d’une part
E[E[ϕ(X)|Y ]] = E[ϕ(X)] = I,
et d’autre part

σ 2 = Var(ϕ(X)) = Var(E[ϕ(X)|Y ]) + E[Var(ϕ(X)|Y )] ≥ Var(E[ϕ(X)|Y ]).

Soit donc Y une variable auxiliaire de densité g dont on sait simuler des réalisations et telle que,
pour tout y, on peut calculer ψ(y) = E[ϕ(X)|Y = y]. On considère l’estimateur
n n
1X 1X
I˜n = ψ(Yi ) = E[ϕ(X)|Yi ].
n n
i=1 i=1

Ses propriétés découlent de ce qui vient d’être dit.

Simulations Monte-Carlo Arnaud Guyader


42 Chapitre 2. Intégration Monte-Carlo

Proposition 10 (Estimation par conditionnement)


Si E|ϕ(X)| < ∞, alors l’estimateur I˜n est sans biais et convergent, c’est-à-dire que E[I˜n ] = I et

n
1X p.s.
I˜n = ψ(Yi ) −−−→ E[ψ(Y )] = E[E[ϕ(X)|Y ]] = I.
n n→∞
i=1

Si de plus E[ϕ2 (X)] < ∞, alors


√ L
n (I˜n − I) −−−→ N (0, s2 ),
n→∞

avec
s2 = Var(E[ϕ(X)|Y ]) = Var(ψ(Y )) = E[ψ 2 (Y )] − I 2 .

Remarques :
1. A nouveau, la variance s2 est estimée de façon immédiate par
n
1X 2
s̃2n = ψ (Yi ) − I˜n2
n
i=1

et les intervalles de confiance asymptotiques en découlent.


2. Ainsi tout conditionnement réduit la variance par rapport au Monte-Carlo classique. Néan-
moins, puisque s2 = Var(E[ϕ(X)|Y ]), il faut choisir la variable Y aussi corrélée que possible
à ϕ(X).

Exemple : surface du quart de disque unité. On revient à l’exemple vu en Section 2.1.1 où


I = π/4 est estimée par
n
ˆ 1X
In = 1D (Xi , Yi ).
n
i=1

Les variables X et Y étant uniformes et indépendantes, on a


p p
E[1D (X, Y )|X = x] = P(x2 + Y 2 ≤ 1) = P(Y ≤ 1 − x2 ) = 1 − x2 = ψ(x),

ce qui conduit à l’estimateur


n q
1X
I˜n = 1 − Xi2 .
n
i=1

Sa variance se calcule facilement :


Z 1
s2 = E[ψ 2 (X)] − I 2 = (1 − x2 )dx − (π/4)2 = 2/3 − (π/4)2 ≈ 0.05.
0

La variance de Iˆn étant de σ 2 = π/4(1 − π/4) ≈ 0.17, on gagne un facteur 2 en écart-type,


c’est-à-dire qu’on a un estimateur deux fois plus précis.

2.2.3 Stratification
Le principe est le même qu’en sondages : s’il existe une variable auxiliaire Y permettant de par-
titionner l’espace d’états X = X1 ∪ · · · ∪ XJ en J strates sur chacune desquelles la variable X est
“assez homogène”, on a tout intérêt à tirer parti de cette information.

Arnaud Guyader Simulations Monte-Carlo


2.2. Réduction de variance 43

Formellement, supposons que l’on connaisse les probabilités pj = P(X ∈ Xj ) et que l’on sache
simuler selon les lois conditionnelles L(X|X ∈ Xj ). Par conditionnement, on peut écrire
J
X J
X
I = E[ϕ(X)] = E[ϕ(X)|X ∈ Xj ]P(X ∈ Xj ) = pj E[ϕ(X)|X ∈ Xj ].
j=1 j=1

L’idée est alors d’estimer séparément chacune des moyennes conditionnelles E[ϕ(X)|X ∈ Xj ] grâce
à nj simulations. Soit donc (n1 , . . . , nJ ) un J-uplet tel que n1 + · · · + nJ = n et, pour tout j,
(X1,j , . . . , Xnj ,j ) des réalisations i.i.d. de la loi L(X|X ∈ Xj ). L’estimateur par stratification a la
forme !
J nj
X 1 X
I˜n = pj ϕ(Xi,j )
nj
j=1 i=1

et possède les propriétés suivantes.

Proposition 11 (Estimation par conditionnement)


Si E|ϕ(X)| < ∞, alors l’estimateur I˜n est sans biais et, si tous les nj tendent vers l’infini, il est
convergent, c’est-à-dire que
J nj !
X 1 X p.s.
I˜n = pj ϕ(Xi,j ) −−−−−−−−−→ I.
nj (n1 ,...,nJ )→∞
j=1 i=1

Si de plus E[ϕ2 (X)] < ∞, alors sa variance vaut


J
X J
X
p2j p2j 2
s2n = Var(I˜n ) = Var(ϕ(X)|X ∈ Xj ) = σ ,
nj nj j
j=1 j=1

avec  
σj2 = Var(ϕ(X)|X ∈ Xj ) = E ϕ2 (X)|X ∈ Xj − E [ϕ(X)|X ∈ Xj ]2 .

Les estimateurs naturels de σj2 et s2n sont donc respectivement


nj nj !2 J
2 1 X 2 1 X 2
X p2j 2
σ̃j = ϕ (Xi,j ) − ϕ(Xi,j ) =⇒ s̃n = σ̃ .
nj nj nj j
i=1 i=1 j=1

Si l’on convient de noter mj = E[ϕ(X)|X ∈ Xj ] les moyennes par classe, la formule de décompo-
sition en variances intra et inter-classe nous assure que
J
X J
X
Var(ϕ(X)) = pj σj2 + pj (I − mj )2 .
j=1 j=1

Par ailleurs, si on effectue une allocation proportionnelle en prenant nj = pj × n (abstraction faite


des arrondis), il vient pour l’estimateur par stratification
J
1X Var(ϕ(X))
s2n = pj σj2 ≤ ,
n n
j=1

la variance inter-strate ayant disparu par rapport au Monte-Carlo standard. Théoriquement, on


peut faire encore mieux grâce à l’allocation dite optimale : l’optimisation sous contrainte
J
X p2j 2
inf σ avec n1 + · · · + nJ = n
n1 ,...,nJ nj j
j=1

Simulations Monte-Carlo Arnaud Guyader


44 Chapitre 2. Intégration Monte-Carlo

admet en effet la solution


!  2
J J
p 1 σ1 p J σJ X p2j 2 1 X
(n⋆1 , . . . , n⋆J ) = PJ n, . . . , PJ n =⇒ σ = p j σj  .
j=1 pj σj j=1 pj σj
nj j n
j=1 j=1

Cette allocation est impossible a priori puisqu’on ne connaît pas les σj . On sait cependant les
estimer par les σ̃j déjà croisés, donc on peut envisager une méthode en deux temps : on commence
par les estimer grâce à une première simulation, tandis qu’une seconde simulation effectue une
allocation quasi-optimale avec
!
⋆ ⋆ p1 σ̃1 pJ σ̃J
(ñ1 , . . . , ñJ ) = PJ n . . . , PJ n .
j=1 pj σ̃j j=1 pj σ̃j

Indépendamment de l’allocation choisie, les termes de variance intra-classe σj2 rappellent qu’on a
tout intérêt à choisir des strates Xj sur lesquelles la variable X est aussi homogène que possible.
Remarque. Notons Y la variable aléatoire discrète valant j si X ∈ Xj . L’approche par stratifica-
tion est liée à la méthode de conditionnement puisque dans les deux cas l’estimation est basée sur
le calcul d’espérance par conditionnement :
 Z
 E[ϕ(X)|Y = y]g(y)dy
E[ϕ(X)] = E[E[ϕ(X)|Y ]] = P
 J
E[ϕ(X)|Y = j]pj=1 j

Elles sont en fait duales : dans un cas on simule la variable auxiliaire Y et on connaît l’espé-
rance conditionnelle sachant celle-ci, dans l’autre on connaît la loi de Y et on estime l’espérance
conditionnelle sachant celle-ci.

2.2.4 Variables antithétiques


Nous ne présentons pas cette méthode dans le cadre le plus général, mais plutôt par l’intermédiaire
d’une application classique. Rappelons que l’estimateur Monte-Carlo standard de I = E[ϕ(X)]
s’écrit
n n
ˆ 1X 1X
In = ϕ(Xi ) = ϕ(F −1 (Ui )),
n n
i=1 i=1

où F −1 , supposée connue, désigne comme au Chapitre 1 l’inverse généralisée de la fonction de


répartition F de X. Les variables Ui sont quant à elles i.i.d. selon la loi uniforme sur [0, 1]. Si les
variables Xi sont simulées par la méthode d’inversion, c’est en fait sous cette dernière forme que
l’estimateur est implémenté.
Puisque les variables (1 − Ui ) sont elles-mêmes i.i.d. selon la loi uniforme, l’estimateur
n
1 X ϕ(F −1 (Ui )) + ϕ(F −1 (1 − Ui ))
I˜n =
n 2
i=1

est lui aussi sans biais et convergent. Il est cependant deux fois plus coûteux si l’évaluation
ϕ(F −1 (u)) n’est pas immédiate. Quid de sa variance ? Celle de Iˆn a déjà été vue et vaut Var(ϕ(X))/n.
Pour I˜n , on a

1 Var(ϕ(F −1 (U ))) + Cov(ϕ(F −1 (U ), ϕ(F −1 (1 − U )))


Var(I˜n ) = × .
n 2

Arnaud Guyader Simulations Monte-Carlo


2.3. Méthodes Quasi-Monte-Carlo 45

Or Var(ϕ(F −1 (U ))) = Var(ϕ(X)) et l’inégalité de Cauchy-Schwarz impose que


p p
Cov(ϕ(F −1 (U ), ϕ(F −1 (1 − U ))) ≤ Var(ϕ(F −1 (U ))) × Var(ϕ(F −1 (1 − U ))) = Var(ϕ(X)),

si bien que l’on a toujours, en notant ρ(X, Y ) = Cov(X, Y )/(σ(X)σ(Y )) le coefficient de corrélation
linéaire,
Var(I˜n ) 1 + ρ(ϕ(F −1 (U ), ϕ(F −1 (1 − U )))
= ≤ 1,
Var(Iˆn ) 2

c’est-à-dire que I˜n est préférable à Iˆn . Si de plus ϕ est monotone, alors l’inégalité de covariance de
Tchebychev permet de montrer que

Var(I˜n ) 1
Cov(ϕ(F −1 (U ), ϕ(F −1 (1 − U ))) ≤ 0 =⇒ ≤ .
ˆ
Var(In ) 2

Ainsi le surcoût algorithmique est au moins compensé par la réduction de variance.


Exemple jouet. Supposons que X ∼ U[0,1] et ϕ(x) = x2 . On obtient dans ce cas une division de
la variance par 16.

2.3 Méthodes Quasi-Monte-Carlo


Revenons au problème d’intégration par rapport à la loi uniforme, autrement dit l’estimation de
Z
I= ϕ(x)dx.
[0,1]d

Si d = 1, pour une méthode Monte-Carlo classique, c’est-à-dire lorsque (Xn )n≥1 est une suite de
variables i.i.d. uniformes sur [0, 1], l’estimateur
n
1X
Iˆn = ϕ(Xi )
n
i=1

a une erreur moyenne en O(1/ n), celle-ci étant mesurée par l’écart-type. Pour n fixé, puisque
cette moyenne est mesurée par rapport à l’ensemble des séquences possibles {X1 , . . . , Xn } i.i.d.

uniformes sur [0, 1], cela signifie qu’il en existe pour lesquelles l’erreur est plus petite que 1/ n.
Par exemple, à n fixé et si ϕ est de classe C 1 , alors pour la séquence {1/n, . . . , (n − 1)/n, 1}, la
méthode des rectangles donne

1 Xn kϕ′ k

|Rn − I| = ϕ(i/n) − I ≤ ,
n 2n
i=1

donc une vitesse bien meilleure. Néanmoins, avec cette méthode, l’estimateur à (n + 1) points
requiert le calcul des ϕ(i/(n + 1)), c’est-à-dire qu’on ne peut se servir ni de la valeur de Rn ni des
valeurs ϕ(i/n) déjà calculées. A contrario, pour une méthode Monte-Carlo, la relation entre Iˆn et
Iˆn+1 est élémentaire puisque
n ˆ 1
Iˆn+1 = In + ϕ(Xn+1 ).
n+1 n+1
L’idée des méthodes Quasi-Monte-Carlo est de trouver un compromis entre ces deux techniques.
Commençons par introduire la notion de discrépance, ou plutôt une notion de discrépance.

Simulations Monte-Carlo Arnaud Guyader


46 Chapitre 2. Intégration Monte-Carlo

Définition 3 (Discrépance à l’origine)


Soit (ξn )n≥1 une suite de [0, 1]d . La discrépance (à l’origine) de (ξn )n≥1 est la suite (Dn⋆ (ξ))n≥1
définie par n
1 X

Dn (ξ) = sup |λn (B) − λ(B)| = sup 1B (ξi ) − λ(B) ,
B∈R ⋆ B∈R ⋆ n
i=1

où R⋆ = {B = [0, u1 ] × · · · × [0, ud ], 0 ≤ uj ≤ 1 ∀j} est l’ensemble des pavés contenus dans [0, 1]d
avec un sommet en l’origine, λ(B) = u1 × · · · × ud est la mesure de Lebesgue d’un tel pavé tandis
que λn (B) est sa mesure empirique pour la suite (ξn )n≥1 , i.e. la proportion des n premiers points
de cette suite appartenant à B.

En dimension d = 1, on a ainsi
n
1 X

Dn⋆ (ξ) = sup 1[0,u] (ξi ) − u .
0≤u≤1 n i=1

Autrement dit, la discrépance à l’origine mesure la distance en norme sup entre la fonction de
répartition empirique et celle de la loi uniforme.
Exemples :
1. Suites de van der Corput : en dimension d = 1, on se fixe un nombre entier, par exemple 2,
et on part de la suite des entiers naturels que l’on traduit en base 2 :

1 = (1), 2 = (10), 3 = (11), 4 = (100), 5 = (101), 6 = (110), 7 = (111), 8 = (1000), . . .

puis on applique la transformation “miroir” suivante :


B
X B
X
b xb
n= xb 2 =⇒ ξn = ,
2b+1
b=0 b=0

ce qui donne, en décomposition binaire :

ξ1 = (0.1), ξ2 = (0.01), ξ3 = (0.11), ξ4 = (0.001), ξ5 = (0.101), ξ6 = (0.011), ξ7 = (0.111), . . .

d’où, retraduit en décomposition décimale, la suite de van der Corput de base 2 :


 
1 1 3 1 5 3 7 1 9 5 13 3 11 7 15 1
(ξn )n≥1 = , , , , , , , , , , , , , , , ,... .
2 4 4 8 8 8 8 16 16 16 16 16 16 16 16 32
On peut montrer que Dn⋆ (ξ) = O(log n/n).
2. Suites de Halton : elles correspondent à la généralisation des suites de van der Corput en
dimension d supérieure à 1. On considère d nombres premiers entre eux b1 , . . . , bd et on
construit les d suites de van der Corput ξ (1) , . . . , ξ (d) de bases respectives b1 , . . . , bd . La
suite de Halton associée est alors
 
ξ = (ξn )n≥1 = ξn(1) , . . . , ξn(d) .
n≥1

Par exemple, en dimension 2, en prenant b1 = 2 et b2 = 3, les premiers termes de la suite


de Halton associée sont (voir aussi figure 2.2)
                
1 1 1 2 3 1 1 4 5 7 3 2 7 5 1 8
ξ= , , , , , , , , , , , , , , , ,...
2 3 4 3 4 9 8 9 8 9 8 9 8 9 16 9

Pour une suite de Halton en dimension d, on peut montrer que Dn⋆ (ξ) = O((log n)d /n).

Arnaud Guyader Simulations Monte-Carlo


2.3. Méthodes Quasi-Monte-Carlo 47

++ + ++ + ++ + + +++ + + + + ++ + + + +++ + + + ++ +++ + ++ + + ++


+ +++ + + + ++ + + + +++++ + ++ + + +++++ +
++ ++ + ++ + ++ ++++++ + ++ ++++ + ++
++ +++ + + ++++ + + ++ ++++ ++++ + + + + ++ + + +++ +
+ +
+ ++ + + +++ ++ +++ ++++

0.8
0.8
++ + ++ + + + ++ ++ + ++ ++ + ++ ++ +++ ++ ++ ++ + + ++ ++
+++ + ++++ + ++ +++ ++ + ++ + + + + ++ ++ +++ +
+ + + ++ ++ +++ ++++ + + + ++ + ++ + + + +
++ + +++
+ + + +++ ++
+++
++ +++ +++ + ++ +++ +++++ + +++++ +
+ + ++ ++ ++ + + +++ + ++ + ++ + + ++
+ + +
+ + + + ++ + + ++ +++++ + + + ++ ++ ++++++ ++ ++ ++ + ++ + + ++ + +++++ +
+ ++ + +++++++ ++++++ +++ +++ + + +++
+ + ++ + ++ + + + + ++ + + ++ + +
++ +
+ + +
+ +
++ ++++
+ ++ + ++
+++ + + ++ +++ + ++
+ +
+ +++ + + ++ ++ ++ ++ + ++ + + ++++ +++ +
+
+ + + + + + + + ++ +
+
+ + + +++
+ + +
++ + ++ + +
++ + +
+
+ + ++ ++ ++ ++ + + ++ ++++ ++ + ++ +++ + + + + +
++

0.4
0.4
+ + ++ + + +
++ + + ++ ++ + + +
+ + + + + + ++ + + + +
++
++ + + +++ +++ + ++ ++ + + ++ + +++ ++ + + +
+ + ++ ++ ++ + ++ ++ ++ + + ++ +++ ++ +
+++++ + + + + ++ + ++ + +++
++ + + ++ + + + + + ++ +
++ + + +++ + ++++++ +
+ ++
+ + + + +++ ++ ++ ++ + + ++ +++ + +
++
+ + ++ ++ + + + +
++++ ++
++ + ++ +++ ++ + + +++ ++ + + + ++ ++ + ++ + +++ +
+ + + +
++ + + ++ ++ ++++ ++++ ++ +++ +++ +
++
+ + ++ +++ + ++ ++ ++++ ++ +++ + ++ ++ ++ ++
+ + ++ + + + ++++ + ++ + + ++ + ++ + + + + + ++ + +
+ + + ++ ++ + ++++ ++ + + +++ +
+ ++ +++++ + ++ + + + ++ + + ++ ++ + +++ +++++ +++ ++
+ +++ ++ +++ + + + +++ + ++ + + + ++ ++++ + + +
0.0

0.0
+ + + + + ++ + ++ + + ++ ++
+ + + +++ + ++ +++++++ + + + + + +++ + + + +

0.0 0.4 0.8 0.0 0.4 0.8

Figure 2.2 – Echantillons de n = 500 points d’une suite uniforme et d’une suite de Halton.

Avant de voir en quoi la notion de discrépance permet de contrôler l’erreur d’estimation, il faut
introduire une notion de variation de la fonction à intégrer. Pour simplifier les choses, nous nous
focaliserons sur les fonctions ϕ suffisamment régulières.

Définition 4 (Variation de Hardy-Krause)


La variation au sens de Hardy-Krause d’une fonction ϕ : [0, 1]d → R de classe C d est

d
X X Z ∂j ϕ
V (ϕ) = (x(i1 , . . . , ij )) dxi1 . . . dxij ,

j=1 i1 <···<ij [0,1]j ∂xi1 . . . ∂xij

avec x(i1 , . . . , ij ) le point de Rd dont toutes les coordonnées valent 1 sauf celles de rangs (i1 , . . . , ij )
qui valent respectivement (xi1 , . . . , xij ).

Ainsi, lorsque d = 1, on a tout simplement


Z 1
V (ϕ) = |ϕ′ (x)|dx = kϕ′ k1 .
0

Pour d = 2, ça se complique un peu :


Z 1 Z 1 ZZ 2
∂ϕ ∂ϕ ∂ ϕ
V (ϕ) = (x , 1) dx + (1, x ) dx + (x , x )
1 2 dx1 dx2 .
∂x1 1 1 ∂x2 2 2
0 0 [0,1]2 ∂x1 ∂x2

Il est clair qu’en dimension supérieure, estimer la variation de Hardy-Krause devient vite inextri-
cable : somme de (2d − 1) termes, dérivées partielles... Néanmoins, cette notion intervient de façon
cruciale pour majorer la qualité d’un estimateur basé sur une séquence (ξn )n≥1 .

Théorème 3 (Inégalité de Koksma-Hlawka)


Pour toute fonction ϕ : [0, 1]d → R et toute suite (ξn )n≥1 de [0, 1]d , on a
Z
1 X n

ϕ(ξi ) − ϕ(x)dx ≤ V (ϕ) × Dn⋆ (ξ),
n [0,1] d
i=1

où V (ϕ) est la variation de ϕ au sens de Hardy-Krause et Dn⋆ (ξ) la discrépance de ξ à l’ordre n.

Simulations Monte-Carlo Arnaud Guyader


48 Chapitre 2. Intégration Monte-Carlo

L’intérêt de ce résultat est de séparer l’erreur d’estimation en deux termes : l’un faisant intervenir
la régularité de ϕ, l’autre les propriétés de (ξn )n≥1 en terme de discrépance. Puisqu’a priori on n’a
aucune latitude sur ϕ, l’idée est de prendre (ξn )n≥1 de discrépance minimale.
En dimension 1, il est prouvé qu’on ne peut faire mieux qu’une discrépance en O(log n/n). En
dimension supérieure, ce problème est encore ouvert à l’heure actuelle : on sait prouver que la
discrépance ne peut être plus petite que O((log n)d/2 /n), mais la conjecture est que la meilleure
borne possible est en fait en O((log n)d /n). Ceci explique la définition suivante.

Définition 5 (Suites à discrépance faible et méthodes Quasi-Monte-Carlo)


Une suite (ξn )n≥1 de [0, 1]d vérifiant Dn⋆ (ξ) = O((log n)d /n) est dite à discrépance faible et une
méthode d’approximation basée sur ce type de suite est dite Quasi-Monte-Carlo.

Exemples. Outre les suites de Halton détaillées ci-dessus, on peut citer les suites de Faure, de
Sobol et de Niederreiter comme exemples de suites à discrépance faible.
Si l’on revient au problème d’intégration
Z
I= ϕ(x)dx,
[0,1]d

et que l’on se donne une suite (ξn )n≥1 à discrépance faible, par exemple une suite de Halton basée
sur les d premiers nombres premiers, alors l’estimateur
n
1X
Iˆn = ϕ(ξi )
n
i=1

est un estimateur Quasi-Monte-Carlo de l’intégrale I, dont l’erreur (déterministe) est donc en


O((log n)d /n). Rappelons qu’une méthode Monte-Carlo classique présente une erreur (moyenne)

en O(1/ n) et qu’une méthode de de type quadrature a une erreur (déterministe) en O(n−s/d ).
Dès lors, les méthodes Quasi-Monte-Carlo sont typiquement compétitives en dimension “intermé-
diaire” et pour des fonctions suffisamment régulières. C’est du reste leur cadre d’application en
mathématiques financières.
Reférences. Sur toute cette section, on trouvera compléments et exemples en Chapitre 7 de [18]
ainsi qu’en Chapitre 3 de [14].

2.4 Exercices
Exercice 2.1 (Estimation de π)
On revient sur la méthode vue en cours de simulation uniforme dans le quart de disque unité.
1. En déduire un estimateur π̂n de π, ainsi qu’un intervalle de confiance asymptotique à 95%.
2. Sur un même graphique, représenter π̂n et les intervalles de confiance en fonction de n pour
n allant de 1 à 1000. Ajouter à ce graphique la droite horizontale y = π.
3. Comment choisir n pour obtenir une précision au centième sur π (avec 95% de chances) ?
4. Retrouver ce résultat par simulation.

Exercice 2.2 (Estimation de la constante d’Euler)


On considère sur R la fonction de répartition F (x) = exp(− exp(−x)). Si X a pour fonction de
répartition F , on peut montrer que E[X] = γ ≈ 0.577, constante d’Euler.
1. Par la méthode d’inversion, proposer une méthode pour simuler une variable X de fonction
de répartition F .

Arnaud Guyader Simulations Monte-Carlo


2.4. Exercices 49

2. Implémenter la méthode précédente pour simuler un échantillon X1 , . . . , Xn de taille n =


104 . En déduire un estimateur γ̂n de γ ainsi qu’un intervalle de confiance asymptotique à
95%.
3. Sur un même graphique, pour n allant de 1 à 1000, représenter γ̂n et les intervalles de
confiance asymptotiques à 95% en fonction de n. Ajouter à ce graphique le droite horizontale
y = γ en rouge.
4. Si X a pour fonction de répartition F , quelle est sa densité f ? Soit g(x) = 12 exp(−|x|) la
densité d’une variable de Laplace : représenter la fonction x 7→ f (x)/g(x) pour x variant de
-10 à 10. Au vu de ce graphique, que vaut m = supx∈R f (x)/g(x) ? Le démontrer.
5. Rappeler comment simuler Y selon une loi de Laplace. A partir de la question précédente,
implémenter une méthode de rejet pour simuler X de densité f .
6. Des deux méthodes précédentes (inversion et rejet), laquelle choisiriez-vous pour simuler
X?
Exercice 2.3 (Bayes in memoriam )
Une boule de billard est lancée au hasard uniforme sur une ligne de longueur 1, sa position étant
notée θ. Ceci fait, une seconde boule est lancée de la même façon N fois de suite sur cette ligne et
x est le nombre de fois où elle arrive à gauche de la première.
1. Avec les notations du cours, préciser la loi a priori π(θ), la vraisemblance f (x|θ) et la loi
a posteriori π(θ|x). En déduire, en fonction de x et N , la moyenne a posteriori de θ (ou
espérance de θ sachant x). Idem pour la variance a posteriori.
2. Pour N = 10 et x = 7, retrouver ces résultats par simulation.
3. Dans le cas général (i.e. on ne suppose plus N = 10 et x = 7), comparer la variance a
posteriori de θ à sa variance a priori.
4. La moyenne a posteriori de θ correspond-elle à l’estimateur au maximum de vraisemblance ?
5. Que dire du mode a posteriori ?

Exercice 2.4 (Modèle bayésien gaussien)


Les réels τ et σ étant fixés non nuls, on suppose que θ suit une loi normale N (0, τ 2 ) et que, sachant
θ, X suit une loi normale N (θ, σ 2 ).
1. Montrer que la densité a posteriori π(θ|x) est celle d’une loi normale dont on précisera
moyenne et variance en fonction de x, τ et σ.
2. Comparer la variance a posteriori à la variance a priori.
3. La moyenne a posteriori de θ correspond-elle à l’estimateur au maximum de vraisemblance ?
4. Que dire du mode a posteriori ?

Exercice 2.5 (Estimation d’événement rare)


On veut retrouver par simulation la valeur de p = P(X ≥ 6) avec X ∼ N (0, 1).
1. Déterminer p grâce à la fonction pnorm de R.
2. Rappeler l’estimateur Monte-Carlo standard basé sur n variables gaussiennes simulées via
la fonction rnorm. Estimer p avec n le plus grand possible.
3. Si T suit une loi exponentielle de paramètre 1, donner la densité de l’exponentielle décalée
Y = 6 + T . En déduire un estimateur d’échantillonnage préférentiel pour p, le représenter
en fonction de n, ainsi que les intervalles de confiance à 95%.

Exercice 2.6 (Here comes trouble)


On veut retrouver par simulation la valeur de p = P(X ≥ 10) avec X qui suit une loi de Pareto de
paramètres (1, 3), c’est-à-dire de densité f (x) = 3x−4 1x≥1 .

Simulations Monte-Carlo Arnaud Guyader


50 Chapitre 2. Intégration Monte-Carlo

1. Déterminer la valeur de p.
2. Illustrer comme en exercice précédent la convergence de l’estimateur Monte-Carlo standard.
3. Utiliser une loi exponentielle translatée pour estimer p, représenter la convergence et expli-
quer ce qui se passe.

Exercice 2.7 (Somme d’exponentielles et conditionnement)


Soit X et Y deux variables indépendantes suivant respectivement des lois exponentielles de para-
mètres 1 et 2. On veut estimer p = P(X + Y > 5).
1. Pour un Monte-Carlo classique, représenter l’estimateur de la variance en fonction de n.
2. Soit S = X + Y la somme des deux variables. Préciser E[1S>5 |Y = y] et en déduire une
méthode par conditionnement pour estimer p. Représenter le gain en variance par rapport
à la question précédente.
3. Déterminer la densité de S et retrouver p.

Exercice 2.8 (Décembre 2016)


On suppose que Y ∼ N (1, 1) et que, sachant Y = y, X suit une loi normale de moyenne y et de
variance 4. On veut estimer I = P(X > 1).
1. En écrivant X comme la somme de deux variables gaussiennes indépendantes, montrer que
I = 1/2.
2. Proposer un estimateur Monte-Carlo Iˆn de I ainsi qu’un intervalle de confiance asymp-
totique à 95%. Sur un même graphique, pour n allant de 1 à 1000, représenter Iˆn et les
intervalles de confiance asymptotiques à 95% en fonction de n. Ajouter à ce graphique la
droite horizontale y = 1/2 en rouge.
3. Proposer un estimateur I˜n de I par la méthode de conditionnement (rappel : si Y ∼
N (m, s2 ), alors pnorm(q,mean=m,sd=s) correspond à P(Y ≤ q)). Sans faire de calculs,
est-il meilleur que Iˆn ?

Exercice 2.9 (Vecteur gaussien et exponential tilting)


Dans cet exercice, on pourra utiliser le package mvtnorm. On veut estimer p = P((X, Y ) ∈ R) où
(X, Y ) est un vecteur gaussien centré de matrice de covariance
 
4 −1
Γ= ,
−1 4

et Ra = {(x, y), x ≥ a, y ≥ a}, avec successivement a = 1, a = 3, a = 10.


1. Pour chaque a, estimer p par Monte-Carlo classique.
2. Déterminer le point (x0 , y0 ) de Ra où la densité de la loi normale N (0, Γ) est maximale.
3. Proposer une méthode d’Importance Sampling basée sur la densité N ((x0 , y0 ), Γ) et com-
parer aux résultats de la première question.
4. Reprendre la question précédente avec des densités instrumentales de la forme N ((x0 , y0 ), δΓ)
pour différentes valeurs de δ.

Exercice 2.10 (Stratification et supercanonical rate)


On étudie ici une méthode d’accélération de la convergence se basant sur un principe de stratifi-
cation. On commence par l’illustrer sur un exemple jouet, à savoir l’estimation de
Z 1
I = E[cos X] = cos xdx. (2.5)
0

1. Rappeler l’estimateur Monte-Carlo classique Iˆn de I.

Arnaud Guyader Simulations Monte-Carlo


2.4. Exercices 51

2. Grâce à une représentation log-log, c’est-à-dire avec log n en abscisse et le log de l’écart-type

empirique en ordonnée, retrouver le fait que la convergence est en 1/ n.
3. L’entier n étant fixé, on considère les n strates Xj = [xj−1 , xj ] = [(j − 1)/n, j/n] et on
simule un seul point Uj par strate. Avec les notations du cours, préciser les probabilités
pj ainsi que, pour tout j, la loi L(X|X ∈ Xj ). En déduire l’estimateur stratifié I˜n de I et
déterminer sa vitesse de convergence grâce à une représentation log-log.
4. En (2.5), on généralise cosinus en une fonction ϕ dérivable telle que M1 = kϕ′ k∞ < ∞.
(a) Via les accroissements finis, montrer que si Uj ∼ U[xj−1 ,xj ] , alors Var(ϕ(Uj )) ≤ M12 /n2 .
(b) En déduire que l’écart-type de I˜n est en n−3/2 . On parle de “supercanonical rate” par
référence à la vitesse canonique en n−1/2 d’une méthode Monte-Carlo classique.
Exercice 2.11 (Preuve par couplage de l’inégalité de covariance de Tchebychev)
Soit X une variable aléatoire, ϕ une fonction croissante et ψ une fonction décroissante telles que
ϕ(X) et ψ(X) soient de carré intégrable.
1. Soit X ′ une variable de même loi que X et indépendante de celle-ci. Montrer que

Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = E[(ϕ(X) − ϕ(X ′ ))(ψ(X) − ψ(X ′ )] ≤ 0.

2. Montrer par ailleurs que : Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = 2 Cov(ϕ(X), ψ(X)), et en
déduire l’inégalité de covariance de Tchebychev, à savoir que : Cov(ϕ(X), ψ(X)) ≤ 0.
3. En déduire le principe des variables antithétiques en Monte-Carlo, à savoir que si ϕ est
monotone et h décroissante telle que h(X) ait même loi que X alors, sous réserve d’existence
des variances,  
ϕ(X) + ϕ(h(X)) 1
Var ≤ Var(ϕ(X)).
2 2
4. Exemple jouet : proposer une méthode de variable antithétique pour estimer E[exp X]
lorsque X ∼ N (0, 1) et illustrer la réduction de variance obtenue par rapport à une méthode
Monte-Carlo classique.
5. On peut généraliser l’inégalité de Tchebychev comme suit : soit ϕ(x, y) croissante en chaque
variable, ψ(x, y) décroissante en chaque variable, et (X, Y ) deux variables indépendantes,
alors sous réserve d’existence des variances, on a Cov(ϕ(X, Y ), ψ(X, Y )) ≤ 0. En déduire
une méthode de variables antithétiques pour estimer la valeur de p de l’Exercice 2.7 et la
comparer à la méthode par conditionnement.
Exercice 2.12 (Variables antithétiques) Z 1
On s’intéresse à l’estimation de l’intégrale I = eu du.
0
1. Rappeler la formule de l’estimateur Monte-Carlo standard Iˆn . Rappeler le Théorème Central
Limite auquel il obéit et calculer la variance σ 2 qu’il fait intervenir. Donner un estimateur
σ̂n2 de σ 2 .
2. Illustrer la convergence de σ̂n2 vers σ 2 .
3. Donner un estimateur I˜n de I à base de variables antithétiques. Quelle est sa variance
théorique s2 ? Par rapport au Monte-Carlo standard, par combien (environ) a-t-on divisé le
temps de calcul pour atteindre la même précision ?
4. Soit c une constante et Xc = exp(U ) + c(U − 1/2), où U ∼ U[0,1] . Quelle est la moyenne de
la variable Xc ? Exprimer la variance de Xc en fonction de c et des variances et covariance
de U et exp(U ). En déduire la valeur c⋆ de c rendant cette variance minimale et préciser
Var(Xc⋆ ). Comparer à s2 .

Simulations Monte-Carlo Arnaud Guyader


52 Chapitre 2. Intégration Monte-Carlo

Exercice 2.13 (Marche aléatoire avec dérive et échantillonnage préférentiel)


Soit (Xn )n≥1 une suite de variables gaussiennes indépendantes N (−m, 1) avec m > 0, et Sn =
X1 + · · · + Xn . Les réels a < 0 et b > 0 étant fixés, on considère le temps d’arrêt N = min{n :
Sn < a ou Sn > b} et on s’intéresse à la probabilité p = P(SN > b) que la marche aléatoire (Sn )
sorte de l’intervalle [a, b] par le haut.
1. Pour m = 1, a = −50 et b = 5, simuler et représenter une trajectoire (Sn )1≤n≤N .
2. Proposer un estimateur p̂k de p basé sur k simulations successives de trajectoires. L’implé-
menter pour m = 1, a = −50 et b = 5. Combien trouvez-vous pour p̂k après k = 1000
simulations ?
3. Plutôt que de simuler X suivant la densité f d’une loi N (−m, 1), on simule X ′ suivant la
densité g d’une loi N (m, 1). Que vaut le rapport de vraisemblance f (x′ )/g(x′ ) ? En déduire
le rapport de vraisemblance fN (x′1 , . . . , x′N )/gN (x′1 , . . . , x′N ) pour une trajectoire entière
(Sn′ )1≤n≤N ainsi construite.
4. Déduire de la question précédente un nouvel estimateur p̃k de p basé sur k simulations
successives, et illustrer sa convergence en fonction de k pour m = 1, a = −50 et b = 5.
5. Déduire de la forme de p̃k que p ≤ exp(−2mb). Ceci est-il en accord avec le résultat obtenu
à la question 2 ?
Exercice 2.14 (Méthodes numériques, Monte-Carlo et Quasi-Monte-Carlo)
Soient k et d deux entiers naturels non nuls. On veut estimer par plusieurs méthodes l’intégrale
 
Z Z Yd
I(k, d) = f (x)dx =  kπ 
2 sin(kπxj ) dx1 . . . dxd .
[0,1]d [0,1]d j=1

1. Calculer à la main la valeur exacte de I(k, d).


2. Importer le package cubature et retrouver cette valeur grâce à la fonction adaptIntegrate
pour d = 10 (observer la différence entre k = 1 et k = 2).
d Iˆn )
3. Implémenter l’estimateur Monte-Carlo classique Iˆn de I(k, d) ainsi qu’un estimateur Var(
ˆ
de sa variance. Calculer à la main la valeur exacte de Var(In ). Pour k = 1 et d = 10, tracer
d Iˆn ) en fonction de n.
sur un même graphique, en échelle log-log, Var(Iˆn ) et Var(
4. Sur un même graphique, représenter à gauche 500 points distribués selon une loi uniforme
dans le carré [0, 1] × [0, 1], et à droite 500 points d’une suite de Halton.
5. Toujours à l’aide d’une suite de Halton, implémenter l’estimateur Quasi-Monte-Carlo I˜n de
I(k, d). Sur un même graphique, pour k = 1, représenter I, Iˆn et I˜n en fonction de n. Faire
varier d.
Exercice 2.15 (Bayes, Cauchy et Gauss)
Dans un cadre bayésien, on considère que la loi a priori sur θ est une loi de Cauchy standard et
que, sachant θ, les variables Xi sont i.i.d. selon une loi normale de moyenne θ et de variance 1.
1. Donner la formule de la loi a posteriori π(θ|x) = π(θ|x1 , . . . , xN ) et de la moyenne a poste-
riori θ̂(x).
2. Pour θ0 = 3 et N = 10, générer X1 , . . . , XN selon une loi normale de moyenne θ et de
variance 1 pour obtenir une réalisation x = (x1 , . . . , xN ).
3. En déduire un estimateur Monte-Carlo θ̂n (x) de l’estimateur de Bayes (moyenne a poste-
riori). Comment évolue cet estimateur avec N ?
4. Dans un cadre général, supposons qu’on veuille simuler selon la loi a posteriori π(θ|x). Si
on adopte une méthode de rejet avec comme loi instrumentale la loi a priori π(θ), montrer
que la constante optimale m est liée à l’estimateur du maximum de vraisemblance θ̂mv .

Arnaud Guyader Simulations Monte-Carlo


2.4. Exercices 53

5. Si on revient au cas particulier précédent avec θ0 = 3, N = 10 et x = (x1 , . . . , xN ),


en déduire une méthode de rejet pour simuler selon la loi a posteriori. Représenter un
échantillon de taille n = 100 selon cette loi a posteriori via un histogramme ou via la
fonction density. Idem avec N = 100.

Exercice 2.16 (Estimation d’une p-value)


On considère un vecteur gaussien en dimension 2, X = [X1 , X2 ]′ ∼ N ([θ1 , θ2 ]′ , I2 ), où I2 est la
matrice identité en dimension 2. On veut tester H0 : θ1 = θ2 = 0 contre H1 : ∃j ∈ {1, 2}, θj 6= 0.
Pour ce faire, on considère la statistique de test T (X) = max(|X1 |, |X2 |).
1. On notera G la fonction de répartition de la loi N (0, 1) et F celle de la variable aléatoire
T (X) sous H0 . Pour tout t ≥ 0, exprimer F (t) en fonction de G(t). Soit α ∈]0, 1[ le risque
de première espèce. En déduire q = qα tel que, sous H0 , P(T (X) > q) = α, et un test de
niveau α pour décider entre H0 et H1 .
2. Soit x = [x1 , x2 ]′ une réalisation de X. On rappelle que la p-value associée est la probabilité
que, sous H0 , α0 (x) = P(T (X) ≥ T (x)). Déduire de la question précédente cette p-value en
fonction de T (x). Que vaut-elle pour x = [1, 2]′ ?
3. Toujours pour x = [1, 2]′ , retrouver approximativement cette p-value en simulant un grand
nombre de vecteurs aléatoires gaussiens i.i.d. de loi N ([0, 0]′ , I2 ).
4. On suppose maintenant que
     
X1 θ1 1 2
X= ∼N , ,
X2 θ2 2 5

et on veut toujours tester H0 : θ1 = θ2 = 0 contre H1 : ∃j ∈ {1, 2}, θj 6= 0, avec la même


statistique de test T (X) = max(|X1 |, |X2 |). La formule théorique de la p-value n’est plus
aussi simple et on ne cherchera pas à l’expliciter. Par contre, la méthode Monte-Carlo se
généralise sans problème. Toujours pour x = [1, 2]′ , déterminer (approximativement) cette
p-value en simulant un grand nombre de vecteurs aléatoires gaussiens.

Exercice 2.17 (Test du rapport de vraisemblance)


Soit X ∼ B(N, θ). On veut tester H0 : θ = θ0 contre H1 : θ 6= θ0 . Le test du rapport de
vraisemblance consiste à calculer la statistique de test

θ0X (1 − θ0 )N −X
T (X) = −2 log ,
θ̂ X (1 − θ̂)N −X

où θ̂ est l’estimateur du maximum de vraisemblance et avec la convention usuelle 00 = 1.


1. Exprimer θ̂ en fonction de X et N . Dans la suite, on considère θ0 = 1/2.
2. Soit x une observation selon la loi B(N, 1/2). La p-value du test est définie par

α0 (x) = P(T (X) ≥ T (x)),

avec X ∼ B(N, 1/2). Comment estimer α0 (x) par une méthode Monte-Carlo ? Implémenter
cette méthode pour N = 10.
3. On peut montrer que, sous H0 , T (X) tend en loi vers une χ21 lorsque N tend vers l’infini.
Pour N = 104 , retrouver le résultat de la simulation de la question précédente à partir de
la fonction pchisq.
4. Grâce à un développement limité en θ0 autour de θ̂, justifier la convergence vers une loi χ21
de la question précédente.

Simulations Monte-Carlo Arnaud Guyader


54 Chapitre 2. Intégration Monte-Carlo

2.5 Corrigés
Exercice 2.1 (Estimation de π)
On revient sur la méthode vue en cours de simulation uniforme dans le quart de disque unité.
1. Estimateur et intervalle de confiance asymptotique à 95% s’obtiennent comme suit :
n=1000
alpha=0.05
q=qnorm(1-alpha/2)
U=runif(n)
V=runif(n)
pihat=4*mean((U^2+V^2<1))
sdhat=sqrt(4*pihat-pihat^2)
pihatmin=pihat-q*sdhat/sqrt(n)
pihatmax=pihat+q*sdhat/sqrt(n)
2. Aucune difficulté supplémentaire :
n=1000
U=runif(n)
V=runif(n)
T=(U^2+V^2<1)
pihat=4*cumsum(T)/(1:n)
sdhat=sqrt(4*pihat-pihat^2)
alpha=0.05
q=qnorm(1-alpha/2)
pihatmin=pihat-q*sdhat/sqrt((1:n))
pihatmax=pihat+q*sdhat/sqrt((1:n))
plot((1:n),pihat,type=’l’)
lines((1:n),pihatmin,type=’l’,col=’green’)
lines((1:n),pihatmax,type=’l’,col=’green’)
abline(h=pi,col=’red’)
3. A 95%, on a une précision au centième si |π̂n −π| < 0.01, c’est-à-dire en prenant q = 1.96 ≈ 2,

σ̂n
q × √ < 0.01 ⇐⇒ n > 4 · 104 σ̂n2
n

or σ̂n2 ≈ 4π − π 2 , donc il faut prendre n > 105 .


4. Par simulation, on utilise l’estimation σ̂n déduite de l’échantillon et on incrémente n de
1000 en 1000 :
alpha=0.05
q=qnorm(1-alpha/2)
n=1000
r=Inf
while(r>0.01){
U=runif(n)
V=runif(n)
pihat=4*mean((U^2+V^2<1))
sdhat=sqrt(4*pihat-pihat^2)
r=q*sdhat/sqrt(n)
n=n+1000}

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 55

Exercice 2.2 (Estimation de la constante d’Euler)


On considère sur R la fonction de répartition F (x) = exp(− exp(−x)). Si X a pour fonction de
répartition F , on peut montrer que E[X] = γ ≈ 0.577, constante d’Euler.
1. Pour tout u ∈]0, 1[, on a F −1 (u) = − log(− log u). Il suffit donc de simuler U ∼ U[0,1] puis
de poser X = − log(− log U ).
2. On applique ceci pour simuler un échantillon i.i.d. X1 , . . . , Xn et en déduire l’estimateur
n
1X p.s.
γ̂n = Xi −−−→ γ.
n n→∞
i=1

Par le TCL, on sait que


√ L
n(γ̂n − γ) −−−→ N (0, σ 2 ),
n→∞

avec σ 2 = E[X 2 ] − (E[X])2 = Var(X) que l’on estime grâce au même échantillon par

n n
!2 n
1X 2 1X 1X 2
σ̂n2 = Xi − Xi = Xi − γ̂n2 .
n n n
i=1 i=1 i=1

Un intervalle de confiance asymptotique à 95% en découle :


 
2σ̂n 2σ̂n
γ̂n − √ , γ̂n + √ .
n n

Ceci donne :
n=10^4
X=-log(-log(runif(n)))
gammahat=sum(X)/n
sdhat=sqrt(sum(X*X)/n-gammahat^2)
alpha=0.05
q=qnorm(1-alpha/2)
IC=c(gammahat-q*sdhat/sqrt(n),gammahat+q*sdhat/sqrt(n))
3. De la même façon :
n=10^3
X=-log(-log(runif(n)))
gammahat=cumsum(X)/(1:n)
sdhat=sqrt(cumsum(X*X)/(1:n)-gammahat^2)
alpha=0.05
q=qnorm(1-alpha/2)
ICmoins=gammahat-q*sdhat/sqrt(1:n)
ICplus=gammahat+q*sdhat/sqrt(1:n)
plot(1:n,gammahat,type="l",xlab="",ylab="")
lines(1:n,ICmoins,type="l",col="green")
lines(1:n,ICplus,type="l",col="green")
abline(h=0.577,col="red")
4. Si X a pour fonction de répartition F , sa densité est définie sur R par

f (x) = exp(−x − exp(−x)).

Pour la représentation de f /g :

Simulations Monte-Carlo Arnaud Guyader


56 Chapitre 2. Intégration Monte-Carlo

1.0
0.6
0.2

0 200 400 600 800 1000

Figure 2.3 – Vraie valeur de γ, estimateur γ̂n et courbes de confiance.


2.0
1.0
0.0

−10 −5 0 5 10

Figure 2.4 – Représentation de f /g.

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 57

x=seq(-10,10,.01)
y=2*exp(abs(x)-x-exp(-x))
plot(x,y,type="l",col="blue",xlab="",ylab="")
Graphiquement, il semble que supx∈R f (x)/g(x) = 2. Démontrons-le. Pour tout x ≥ 0,

f (x) f (x)
= 2F (x) =⇒ sup = 2.
g(x) x≥0 g(x)

Pour x < 0, posons t = −x > 0 : puisque l’exponentielle est croissante,


 
f (x)
sup = sup 2 exp(2t − exp t) = 2 exp sup(2t − exp t) ,
x<0 g(x) t>0 t>0

or une rapide étude de fonction montre que


f (x) 8 f (x)
sup(2t − exp t) = 2 log 2 − 2 =⇒ sup = 2 ≈ 1.08 < 2 =⇒ sup = 2.
t>0 x<0 g(x) e x∈R g(x)

5. Pour simuler Y selon une loi de Laplace, il suffit de simuler indépendamment R selon une
loi de Rademacher et T selon une loi exponentielle, puis de poser Y = R × T . La méthode
de rejet s’écrit comme suit :
X=0
while(X==0){
R=2*rbinom(1,1,1/2)-1 # R suit une loi de Rademacher
T=rexp(1)
Y=R*T # Y suit une loi de Laplace
if(runif(1)<exp(-Y-exp(-Y))/(exp(-abs(Y)))){X=Y}}
6. Puisque m = 2, la méthode de rejet conduit à rejeter en moyenne un Y sur deux, tandis que
la méthode d’inversion ne pâtit pas de cette perte de temps : on optera donc sans hésiter
pour cette dernière.

Exercice 2.3 (Bayes in memoriam)


Une boule de billard est lancée au hasard uniforme sur une ligne de longueur 1, sa position étant
notée θ. Ceci fait, une seconde boule est lancée de la même façon N fois de suite sur cette ligne et
x est le nombre de fois où elle arrive à gauche de la première.
1. Avec les notations du cours, la densité a priori π(θ) est celle de la loi uniforme sur [0, 1], la
vraisemblance f (x|θ) correspond à une loi binomiale B(N, θ), et la loi a posteriori π(θ|x)
est donc par la règle de Bayes :
N x
θ (1 − θ)N −x θ x (1 − θ)N −x
π(θ|x) = Z 1 x  1[0,1] (θ) = Z 1 1[0,1] (θ).
N x N −x x N −x
t (1 − t) dt t (1 − t) dt
0 x 0

La loi a posteriori est donc une loi Bêta B(x + 1, N − x + 1). L’espérance d’une loi Bêta
B(α, β) étant égale à α/(α + β), La moyenne a posteriori vaut donc
x+1
E[θ|x] = .
N +2
Quant à la variance a posteriori, on déduit à nouveau des propriétés de la loi Bêta qu’elle
vaut
αβ (x + 1)(N − x + 1)
Var(θ|x) = 2
= .
(α + β) (α + β + 1) (N + 2)2 (N + 3)

Simulations Monte-Carlo Arnaud Guyader


58 Chapitre 2. Intégration Monte-Carlo

2. La moyenne a posteriori s’écrit


Z 1
Z 1 θ x+1 (1 − θ)N −x dθ
0
E[θ|x] = θπ(θ|x)dθ = Z 1 .
0 x N −x
t (1 − t) dt
0

Pour l’estimation Monte-Carlo, il suffit donc de simuler (θi )1≤i≤n i.i.d. selon la loi uniforme
sur [0, 1] :
n n
1 X x+1 X
θi (1 − θi )N −x θix+1 (1 − θi )N −x
n
E[θ|x] ≈ i=1n = i=1n .
1 X X
x N −x x N −x
θi (1 − θi ) θi (1 − θi )
n
i=1 i=1

Même principe pour la variance. Pour N = 10 et x = 7, par la question précédente, on a


E[θ|x] = 2/3 et Var(θ|x) = 2/117 ≈ 0.017, ce qui se retrouve comme suit :
N=10
x=7
n=1000
theta=runif(n)
Epost=sum(theta^(x+1)*(1-theta)^(N-x))/sum(theta^x*(1-theta)^(N-x))
Vpost=sum(theta^(x+2)*(1-theta)^(N-x))/sum(theta^x*(1-theta)^(N-x))-Epost^2

3. La variance a priori de θ est celle d’une loi uniforme sur [0, 1], c’est-à-dire 1/12, tandis que
sa variance a posteriori vaut

(x + 1)(N − x + 1)
Var(θ|x) = .
(N + 2)2 (N + 3)

Or la fonction x 7→ (x + 1)(N − x + 1) est maximale en x = N/2, ce qui donne

(N/2 + 1)(N − N/2 + 1) 1 1


Var(θ|x) ≤ 2
= ≤ = Var(θ).
(N + 2) (N + 3) 4(N + 3) 12

La variance a posteriori est donc inférieure à la variance a priori quelle que soit la valeur
de x. Noter que, dans le cas général, la formule de décomposition de la variance nous dit
juste que ceci est vrai en moyenne sur x :

Var(θ) = E[Var(θ|x)] + Var(E[θ|x]) =⇒ E[Var(θ|x)] ≤ Var(θ).

4. Par l’approche fréquentiste, la vraisemblance de θ est


   
N x N −x N
L(x; θ) = f (x|θ) = θ (1−θ) =⇒ log L(x; θ) = log +x log θ+(N −x) log(1−θ).
x x

L’estimateur du maximum de vraisemblance est la valeur θ̂ qui maximise celle-ci en θ :

∂ x N −x x
log L(x; θ) = − =⇒ θ̂ = ,
∂θ θ 1−θ N
qui est donc différent de la moyenne a posteriori E[θ|x] = (x + 1)/(N + 2), cette différence
s’atténuant avec N .

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 59

5. Pour tous paramètres α et β strictement plus grands que 1, le mode a posteriori d’une loi
Bêta B(α, β) est (α − 1)/(α + β − 2), ce qui donne ici x/N . Dans ce cas particulier (loi a
priori non informative), le mode a posteriori correspond donc à l’estimateur du maximum
de vraisemblance.
Exercice 2.4 (Modèle bayésien gaussien)
Les réels τ et σ étant fixés non nuls, on suppose que θ suit une loi normale N (0, τ 2 ) et que, sachant
θ, X suit une loi normale N (θ, σ 2 ).
1. On a donc
π(θ)f (x|θ)
π(θ|x) = ∝ π(θ)f (x|θ),
f (x)
où le symbole ∝ signifie “proportionnel à” et cache une constante indépendante de θ. Tou-
jours en faisant abstraction des constantes de normalisation indépendantes de θ, on en
déduit 2
2 2 +τ 2 )
θ2 (x−θ)2 θ2 τ 2x
  
− 12 + θ −2xθ − (σ θ−
π(θ|x) ∝ e− 2τ 2 e− 2σ 2 ∝e τ2 σ2 ∝e 2σ 2 τ 2 σ 2 +τ 2 .
Autrement dit, sachant x, θ suit une loi normale N (τ 2 x/(σ 2 + τ 2 ), (σ 2 τ 2 )/(σ 2 + τ 2 )).
2. La variance a posteriori
σ2 τ 2 τ2
Var(θ|x) = = τ2
≤ τ 2 = Var(θ),
σ2 + τ 2 1 + σ2
est donc inférieure à la variance a priori, et ce quelle que soit la valeur de x. A nouveau,
ceci n’est pas vrai dans le cas général (où l’on sait juste que E[Var(θ|x)] ≤ Var(θ)), mais
nous sommes ici dans le cas bien particulier de conditionnement d’un vecteur gaussien.
3. La moyenne a posteriori de θ vaut d’après les calculs précédents
τ 2x
E[θ|x] = .
σ2 + τ 2
La vraisemblance s’écrivant
1 (x−θ)2
L(x; θ) = f (x|θ) = √ e− 2σ 2 ,
2πσ 2
le maximum a posteriori est tout simplement θ̂ = x, lequel ne correspond donc pas à la
moyenne a posteriori. Notons cependant que ces deux estimateurs sont d’autant plus proches
que τ est grand par rapport à σ, c’est-à-dire que l’incertitude sur x est faible par rapport à
celle sur θ.
4. Le mode a posteriori correspond à la moyenne a posteriori, c’est-à-dire τ 2 x/(σ 2 + τ 2 ).
Exercice 2.5 (Estimation d’événement rare)
On veut retrouver par simulation la valeur de p = P(X ≥ 6) avec X ∼ N (0, 1).
1. La commande
p=1-pnorm(6)
montre qu’il y a moins d’une chance sur un milliard qu’une gaussienne centrée réduite
dépasse la valeur 6.
2. L’estimateur Monte-Carlo standard est
n
1X
p̂ = 1Xi ≥6 ,
n
i=1

où les Xi sont i.i.d. suivant une loi normale N (0, 1). D’après ce qui précède, il faudrait
prendre n de l’ordre d’un milliard, ce qui prend beaucoup trop de temps. Si on prend n plus
petit, par exemple

Simulations Monte-Carlo Arnaud Guyader


60 Chapitre 2. Intégration Monte-Carlo

n=10^8
x=rnorm(n)
phat=mean(x>6)
on trouve logiquement un estimateur égal à 0 neuf fois sur dix... Bref, même sur un exemple
aussi simple, on voit que l’estimation d’un événement rare est infaisable par une méthode
Monte-Carlo standard.
3. Si T suit une loi exponentielle de paramètre 1, et Y = 6 + T , alors Y est à valeurs dans
[6, +∞) avec pour tout y ≥ 6,

FY (y) = P(Y ≤ y) = P(T ≤ y − 6) = 1 − e−(y−6) =⇒ fY (y) = e−(y−6) 1y≥6 ,

c’est-à-dire que Y suit une loi exponentielle translatée. On en déduit un estimateur par
échantillonnage préférentiel où les Yi sont simulées selon fY (ce qui est très facile) :
n=10^3
alpha=0.05
q=qnorm(1-alpha/2)
y=6+rexp(n)
w=exp(y-6-y^2/2)/sqrt(2*pi)
ptilde=cumsum(w)/(1:n)
sdtilde=sqrt(cumsum(w^2)/(1:n)-ptilde^2)
r=q*sdtilde/sqrt((1:n))
ptildemin=ptilde-r
ptildemax=ptilde+r
plot((1:n),ptilde,type=’l’)
lines((1:n),ptildemin,type=’l’,col=’green’)
lines((1:n),ptildemax,type=’l’,col=’green’)
abline(h=p,col=’red’)
Pour n = 1000 comme ici, le résultat est instantané et la précision relative est très bonne
puisqu’on constate sur les simulations qu’elle est de l’ordre de 10%.

Exercice 2.6 (Here comes trouble)


On veut retrouver par simulation la valeur de p = P(X ≥ 10) avec X qui suit une loi de Pareto de
paramètres (1, 3), c’est-à-dire de densité f (x) = 3x−4 1x≥1 .
1. La valeur de p est immédiate par intégration de la densité : p = 1/1000. Après avoir installé
le package actuar, on peut la retrouver grâce à la fonction ppareto1 :
library(actuar)
p=1-ppareto1(10,shape=3,min=1)
2. L’estimateur Monte-Carlo standard est basé sur une suite i.i.d. de variables Xi suivant la
loi de Pareto, lesquelles peuvent s’obtenir par la méthode d’inversion vue en Exercice 1.2 ou
à nouveau via le package actuar. Puisque p = 1/1000, il faut prendre n suffisamment grand
pour obtenir une estimation à peu près correcte de cette probabilité.
library(actuar)
p=1-ppareto1(10,shape=3,min=1)
n=10^5
alpha=0.05
q=pnorm(1-alpha/2)
x=rpareto1(n,shape=3,min=1) # ou bien x=runif(n)^(-1/3)
phat=cumsum((x>10))/(1:n)

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 61

sdhat=sqrt(phat*(1-phat))
r=q*sdhat/sqrt((1:n))
phatmin=phat-r
phatmax=phat+r
plot((1:n),phat,type=’l’)
lines((1:n),phatmin,type=’l’,col=’green’)
lines((1:n),phatmax,type=’l’,col=’green’)
abline(h=p,col=’red’)
3. Puisqu’on ne s’intéresse qu’à des réalisations des Xi au-delà de 10, on peut tenter un échan-
tillonnage préférentiel à base d’exponentielles translatées comme dans l’exercice précédent,
ce qui s’écrit ici :
n=10^3
alpha=0.05
q=qnorm(1-alpha/2)
y=10+rexp(n)
w=exp(y-10)*3*y^-4
ptilde=cumsum(w)/(1:n)
sdtilde=sqrt(cumsum(w^2)/(1:n)-ptilde^2)
r=q*sdtilde/sqrt((1:n))
ptildemin=ptilde-r
ptildemax=ptilde+r
plot((1:n),ptilde,type=’l’)
lines((1:n),ptildemin,type=’l’,col=’green’)
lines((1:n),ptildemax,type=’l’,col=’green’)
abline(h=p,col=’red’)
9e−04
6e−04

0 200 400 600 800 1000

Figure 2.5 – Estimation de la queue d’une variable de Pareto par échantillonnage préférentiel.

On voit que l’estimateur est complètement instable (voir figure 2.5) : ceci est dû au fait que
l’hypothèse E[w2 (Y )ϕ2 (Y )] < ∞ de la Proposition 9 n’est pas vérifiée dans ce contexte :
Z ∞ 2 Z ∞
2 2 3y −4 −(y−10)
E[w (Y )ϕ (Y )] = e dy = 9y −8 ey−10 dy = ∞.
10 e−(y−10) 10

Dit simplement, la loi exponentielle est à queue de distribution plus légère que la loi de
Pareto, ce qui explique les sauts dans l’estimateur par échantillonnage préférentiel : dès
que Yi prend une “grande valeur”, le rapport w(Yi ) = 3Yi−4 exp(Yi − 10) explose. Morale
de l’histoire : pour la méthode d’importance sampling, il ne faut pas prendre comme loi

Simulations Monte-Carlo Arnaud Guyader


62 Chapitre 2. Intégration Monte-Carlo

instrumentale (i.e. celle de Y ) une loi à queue plus légère que la loi d’origine (i.e. celle de
X) !

Exercice 2.7 (Somme d’exponentielles et conditionnement)


Soit X et Y deux variables indépendantes suivant respectivement des lois exponentielles de para-
mètres 1 et 2. On veut estimer p = P(X + Y > 5).
1. Pour un Monte-Carlo classique, on représente en fonction de n l’estimateur de la formule
(2.3), à savoir
n n
!2
2 1X 2 1X
σn = ϕ (Xi ) − ϕ(Xi ) ,
n n
i=1 i=1
lequel tend presque sûrement vers la variance asympototique
Z
σ = Var(ϕ(X)) = E[ϕ (X)] − E[ϕ(X)] = ϕ2 (x)f (x)dx − I 2 .
2 2 2

Notons au préalable que la probabilité cherchée peut se calculer facilement (cf. infra) et on
obtient

p = P(X + Y > 5) = 2e−5 − e−10 ≈ 0.013 =⇒ σ 2 = p(1 − p) ≈ 0.013

En tout état de cause, la probabilité visée étant de l’ordre de 1/100, il faut prendre n assez
grand.
n=10^4
s=rexp(n,rate=1)+rexp(n,rate=2)
phat=cumsum((s>5))/(1:n)
vhat=phat*(1-phat)
plot((1:n),vhat,type=’l’)
2. Soit S = X + Y la somme des deux variables. Puisque X et Y sont indépendantes, sachant
Y = y, la variable S = X + y suit une loi exponentielle de paramètre 1 décalée de y,
c’est-à-dire de densité
f (s|y) = e−(s−y) 1s≥y .
Il vient donc

E[1S>5 |Y = y] = P(S > 5|Y = y) = 1y>5 + P(X > 5 − y)1y<5 = 1y>5 + e−(5−y) 1y<5 .

La probabilité p peut s’estimer par conditionnement. On simule des Yi i.i.d. selon une loi
exponentielle de paramètre 2 et on considère l’estimateur :
n n
1X 1X 
p̃n = E[ϕ(S)|Yi ] = 1Yi >5 + eYi −5 1Yi <5 .
n n
i=1 i=1

Ce qui donne :
n=10^4
y=rexp(n,rate=2)
ec=(y>5)+exp(y-5)*(y<5)
ptilde=cumsum(ec)/(1:n)
vtilde=cumsum(ec^2)/(1:n)-ptilde^2
plot((1:n),vtilde,type=’l’)
Par rapport à un Monte-Carlo standard, on a divisé la variance d’estimation par (environ)
40.

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 63

3. La variable S est à valeurs positives et sa densité se calcule par convolution des densités de
X et Y puisque celles-ci sont indépendantes. Pour tout s ≥ 0,
Z +∞ Z s
fS (s) = fX (x)fY (s − x)dx = e−x × 2e−2(s−x) dx,
−∞ 0

ce qui donne 
fS (s) = 2 e−s − e−2s 1s≥0 .
La probabilité cherchée en découle à peu de frais :
Z +∞

p = P(S > 5) = 2 e−s − e−2s ds = 2e−5 − e−10 ≈ 0.013.
5

Exercice 2.8 (Décembre 2016)


On suppose que Y ∼ N (1, 1) et que, sachant Y = y, X suit une loi normale de moyenne y et de
variance 4. On veut estimer I = P(X > 1).
1. Soit Y ∼ N (1, 1) et W ∼ N (0, 4) indépendantes, alors par construction de X, on a l’égalité
en loi
L 1
X = Y + W ∼ N (1, 5) =⇒ I = P(X > 1) = .
2
2. Pour estimer I de façon naïve, il suffit de simuler n variables Y1 , . . . , Yn i.i.d. selon la loi
N (1, 1), puis de simuler n variables X1 , . . . , Xn selon les lois N (Yi , 4) et de calculer
n
1X
Iˆn = 1Xi >1 .
n
i=1

n=10^3
alpha=0.05
q=qnorm(1-alpha/2)
y=rnorm(n,mean=1,sd=1)
x=rnorm(n,mean=y,sd=2)
Ihat=cumsum(x>1)/(1:n)
sdhat=sqrt(Ihat*(1-Ihat))
r=q*sdhat/sqrt((1:n))
Ihatmin=Ihat-r
Ihatmax=Ihat+r
plot((1:n),Ihat,type=’l’)
lines((1:n),Ihatmin,type=’l’,col=’green’)
lines((1:n),Ihatmax,type=’l’,col=’green’)
abline(h=1/2,col=’red’)

3. Sachant Y = y, la valeur P(X > 1) s’obtient tout simplement par la commande "1-
pnorm(1,mean=y,sd=2)". L’estimateur par conditionnement consiste à effectuer comme
précédemment des tirages Y1 , . . . , Yn i.i.d. selon la loi N (1, 1) puis, pour chaque valeur yi , à
évaluer la probabilité Pi = P(N (yi , 4) > 1) via la commande précédente. In fine, ceci donne
l’estimateur :
n
1X
I˜n = Pi .
n
i=1
n=10^3
y=rnorm(n,mean=1,sd=1)
px=1-pnorm(1,mean=y,sd=2)

Simulations Monte-Carlo Arnaud Guyader


64 Chapitre 2. Intégration Monte-Carlo

Itilde=cumsum(px)/(1:n)
plot(1:n,Itilde,type="l")
abline(h=1/2,col=’red’)
Comme pour toute méthode par conditionnement, la variance de I˜n est plus petite que celle
de Iˆn .

Exercice 2.9 (Vecteur gaussien et exponential tilting)


On veut estimer p = P((X, Y ) ∈ R) où (X, Y ) est un vecteur gaussien centré de matrice de
covariance  
4 −1
Γ= ,
−1 4
et Ra = {(x, y), x ≥ a, y ≥ a}, avec successivement a = 1, a = 3, a = 10.
1. Par Monte-Carlo classique, on trouve successivement pour a = 1, 3, 10, les probabilités
P(R1 ) ≈ 0.065, P(R3 ) ≈ 0.0014 et P(R10 ) = ?, l’événement R10 étant trop rare pour
être estimé par Monte-Carlo standard (c’est-à-dire qu’avec des n raisonnables, on trouve
toujours 0).
library(mvtnorm)
m=c(0,0)
gamma=matrix(c(4,-1,-1,4),nrow=2)
a=3
n=10^6
ech=rmvnorm(n,m,gamma)
phat=cumsum((ech[,1]>a)*(ech[,2]>a))/(1:n)
plot((1:n),phat,type=’l’)
2. La commande
eigen(gamma)
montre que les vecteurs propres de Γ sont [1, 1]′ et [1, −1]′ . Les courbes de niveau de la
densité
   
1 1 −1 ′ 1 1 2 2

f (x, y) = √ exp − [x, y]Γ [x, y] = √ exp − 2x + xy + 2y .
2π det Γ 2 2π 15 15

sont donc des ellipses d’axes y = x et y = −x. On en déduit que le point (x0 , y0 ) de Ra où
cette densité est maximale est tout simplement (a, a). On peut représenter ces courbes de
niveau et la région Ra de la façon suivante (voir figure 2.6) :
f=function(x,y){exp(-(2*x^2+x*y+2*y^2)/15)/(2*pi*sqrt(15))}
x=seq(-5,5,length=200)
y=x
z=outer(x,y,f)
contour(x,y,z)
lines(x,x,col=’red’)
lines(x,-x,col=’red’)
a=1
segments(a,a,5,a,col="blue")
segments(a,a,a,5,col="blue")
3. L’implémentation de l’Importance Sampling à partir de la loi instrumentale N ((a, a), Γ) est
élémentaire à l’aide des fonctions rmvnorm et dmvnorm de la librairie mvtnorm :

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 65

4
2
0
−2
−4
−4 −2 0 2 4

Figure 2.6 – Ellipses de confiance de la gaussienne et domaine Ra .

a=10
m0=c(a,a)
n=10^5
ech=rmvnorm(n,m0,gamma)
w=dmvnorm(ech,m,gamma)/dmvnorm(ech,m0,gamma)
ptilde=cumsum(w*(ech[,1]>a)*(ech[,2]>a))/(1:n)
plot((1:n),ptilde,type=’l’)
On trouve en particulier que P(R10 ) ≈ 10−17 , probabilité qui était en effet impossible à
estimer avec un Monte-Carlo classique...
4. La mise en œuvre est tout aussi simple. On représente cette fois la variance pour avoir une
idée du réglage du paramètre δ :
a=10
m0=c(a,a)
delta=0.1
gamma0=delta*gamma
n=10^4
ech=rmvnorm(n,m0,gamma0)
w=dmvnorm(ech,m,gamma)/dmvnorm(ech,m0,gamma0)
ptilde=cumsum(w*(ech[,1]>a)*(ech[,2]>a))/(1:n)
vtilde=cumsum(w^2*(ech[,1]>a)*(ech[,2]>a))/(1:n)-ptilde^2
plot((1:n),vtilde,type=’l’)
On voit que prendre δ < 1 améliore la précision, mais si on le prend trop petit, par exemple
δ < 0.01, alors l’estimation devient instable : c’est le même phénomène qu’en Exercice 2.6,
la loi instrumentale étant à queue bien plus légère que la loi d’origine. A contrario, prendre
δ > 1 détériore la variance, donc la précision. La valeur δ = 0.1 semble un bon compromis :
on pourra effectuer une boucle balayant différentes valeurs de δ pour affiner cette estimation.

Remarque. La raison pour laquelle il est judicieux de prendre δ < 1 est que la restriction
d’une gaussienne au-delà d’un seuil est très concentrée autour de celui-ci : ici, pour a = 10,
presque toute la probabilité de R10 est concentrée autour de (10, 10), d’où l’idée d’effectuer
des tirages autour de ce seul point.

Exercice 2.10 (Stratification et supercanonical rate)


On étudie ici une méthode d’accélération de la convergence se basant sur un principe de stratifi-

Simulations Monte-Carlo Arnaud Guyader


66 Chapitre 2. Intégration Monte-Carlo

cation. On commence par l’illustrer sur un exemple jouet, à savoir l’estimation de


Z 1
I = E[cos X] = cos xdx.
0

1. L’estimateur Monte-Carlo classique prend la forme suivante :


n
1X
Iˆn = cos Xi ,
n
i=1

avec les Xi i.i.d. selon la loi uniforme U[0,1] .



2. On illustre la convergence en 1/ n de l’écart-type comme suit :
n=10^3
nsim=10^2
hatI=matrix(0,nrow=nsim,ncol=n)
for (k in 1:nsim){
X=runif(n)
hatI[k,]=cumsum(cos(X))/(1:n)}
sigmahatI=apply(hatI,2,sd)
plot(log(1:n),log(sigmahatI),type=’l’)
reg=lm(log(sigmahatI)~log(1:n))
reg$coef # on trouve une pente de l’ordre de -1/2
x=log(1:n)
y=reg$coef[1]+reg$coef[2]*x # droite des moindres carrés
lines(x,y,col=’red’)
3. L’entier n étant fixé, on considère les n strates Xj = [xj−1 , xj ] = [(j − 1)/n, j/n] et on
simule un seul point Uj par strate. Avec les notations du cours, les probabilités pj sont donc
toutes égales et valent
1
pj = P(X ∈ Xj ) = P(xj−1 ≤ X ≤ xj ) = .
n
De plus, pour tout j, on a
L(X|X ∈ Xj ) = U[xj−1 ,xj ] .

L’estimateur stratifié I˜n de I s’écrit donc dans ce cadre


n
X n
1 1X
I˜n = cos Uj = cos Uj ,
n n
j=1 j=1

avec Uj ∼ U[xj−1 ,xj ] . La simulation suivante montre que la vitesse de convergence est en fait
en n−3/2 , donc bien meilleure qu’un Monte-Carlo standard :
N=10^3
nsim=10^2
tildeI=matrix(0,nrow=nsim,ncol=N)
for(k in 1:nsim){
for(n in 1:N){
U=((0:(n-1))+runif(n))/n
tildeI[k,n]=mean(cos(U))}}
sigmatildeI=apply(tildeI,2,sd)
plot(log(1:n),log(sigmatildeI),type=’l’)

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 67

reg=lm(log(sigmatildeI)~log(1:n))
reg$coef # on trouve une pente de l’ordre de -3/2
x=log(1:n)
y=reg$coef[1]+reg$coef[2]*x # droite des moindres carrés
lines(x,y,col=’red’)
4. On généralise cosinus en une fonction ϕ dérivable telle que M1 = kϕ′ k∞ < ∞.
(a) Le théorème des accroissements finis implique qu’il existe une variable aléatoire θj ∈
(xj−1 , Uj ) telle que
ϕ(Uj ) = ϕ(xj−1 ) + (Uj − xj−1 )ϕ′ (θj ).
Or ϕ(xj−1 ) est déterministe donc

Var(ϕ(Uj )) = Var(ϕ(xj−1 ) + (Uj − xj−1 )ϕ′ (θj )) = Var((Uj − xj−1 )ϕ′ (θj )).

Par ailleurs, il est clair que si |X| ≤ a, alors Var(X) ≤ a2 , d’où


2
(Uj − xj−1 )ϕ′ (θj ) ≤ M1 =⇒ Var(ϕ(Uj )) ≤ M1 .
n n2
(b) Les variables Uj étant indépendantes, la variance de l’estimateur stratifié s’en déduit :
 
n
X n
˜  1  1 X M2
Var(In ) = Var ϕ(Uj ) = 2 Var (ϕ(Uj )) ≤ 31 .
n n n
j=1 j=1

On en déduit que l’écart-type de I˜n est en n−3/2 .


Remarque. Non seulement cette méthode va plus vite qu’un Monte-Carlo classique,
mais elle est aussi plus précise qu’une méthode numérique supposant uniquement la
fonction ϕ dérivable, c’est-à-dire la méthode des rectangles, laquelle donne seulement
une vitesse en 1/n. Il faut bien noter cependant que la méthode des rectangles donne
un encadrement absolu, c’est-à-dire qu’on a toujours
M1
|Rn − I| ≤ ,
2n
tandis que de l’encadrement proposé ci-dessus ne découlent “que” des intervalles de
confiance... Bref, tout ça n’est pas si étonnant.

Exercice 2.11 (Preuve par couplage de l’inégalité de covariance de Tchebychev)


Soit X une variable aléatoire, ϕ une fonction croissante et ψ une fonction décroissante telles que
ϕ(X) et ψ(X) soient de carré intégrable.
1. Puisque X et X ′ ont même loi, il en va de même pour les variables ϕ(X) et ϕ(X ′ ) d’une
part, et ψ(X) et ψ(X ′ ) d’autre part, lesquelles ont donc la même moyenne, d’où

Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ ))


= E[(ϕ(X) − ϕ(X ′ ))(ψ(X) − ψ(X ′ )] − E[ϕ(X) − ϕ(X ′ )]E[ψ(X) − ψ(X ′ ]
= E[(ϕ(X) − ϕ(X ′ ))(ψ(X) − ψ(X ′ )]
Z
= (ϕ(X(ω)) − ϕ(X ′ (ω)))(ψ(X(ω)) − ψ(X ′ (ω))P(dω)

et de deux choses l’une : ou bien

X(ω) ≤ X ′ (ω) =⇒ ϕ(X(ω)) − ϕ(X ′ (ω)) ≤ 0 et ψ(X(ω)) − ψ(X ′ (ω)) ≥ 0,

Simulations Monte-Carlo Arnaud Guyader


68 Chapitre 2. Intégration Monte-Carlo

ou bien

X(ω) ≥ X ′ (ω) =⇒ ϕ(X(ω)) − ϕ(X ′ (ω)) ≥ 0 et ψ(X(ω)) − ψ(X ′ (ω)) ≤ 0.

Quoi qu’il en soit

(ϕ(X(ω)) − ϕ(X ′ (ω)))(ψ(X(ω)) − ψ(X ′ (ω)) ≤ 0,

donc
Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) ≤ 0.
2. Puisque X et X ′ sont indépendantes, toute fonction de X est indépendante de toute fonction
de X ′ , donc
Cov(ϕ(X), ψ(X ′ )) = Cov(ϕ(X ′ ), ψ(X)) = 0.
La bilinéarité de la covariance donne

Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = Cov(ϕ(X), ψ(X)) + Cov(ϕ(X ′ ), ψ(X ′ )),

et le fait que X et X ′ ont même loi assure donc que

Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = 2 Cov(ϕ(X), ψ(X)).

De cette égalité et de l’inégalité de la question précédente, on déduit bien l’inégalité de


covariance de Tchebychev :
Cov(ϕ(X), ψ(X)) ≤ 0.
3. Si ϕ est croissante (resp. décroissante) et h décroissante, alors ϕ ◦ h est décroissante (resp.
croissante). Dans tous les cas, ϕ et ϕ ◦ h ont des monotonies opposées donc, d’après le
résultat précédent,
Cov(ϕ(X), ϕ(h(X))) ≤ 0.
Or, par bilinéarité,
 
ϕ(X) + ϕ(h(X)) 1
Var = (Var(ϕ(X)) + 2 Cov(ϕ(X), ϕ(h(X))) + V (ϕ(h(X)))) ,
2 4
d’où  
ϕ(X) + ϕ(h(X)) 1 1
Var ≤ (Var(ϕ(X)) + V (ϕ(h(X))) = Var(ϕ(X)),
2 4 2
la dernière égalité étant due au fait que ϕ(X) et ϕ(h(X)) ont même loi par hypothèse.
4. Si X ∼ N (0, 1), alors h(X) = −X ∼ N (0, 1). La fonction h étant décroissante, la fonction
exponentielle croissante, on peut appliquer ce qui précède. L’estimateur antithétique s’écrit
n
1 X eXi + e−Xi
I˜n = , (2.6)
n 2
i=1

où les Xi sont i.i.d. gaussiennes centrées réduites. Pour illustrer la réduction de variance
obtenue par rapport à une méthode Monte-Carlo classique, on commence par analyser celle-
ci. Sa variance asymptotique est égale à

σ 2 = Var(exp X) = E[exp 2X] − E[exp X] = e2 − e,

la dernière égalité se déduisant par exemple de la fonction génératrice des moments d’une
loi normale centrée réduite, à savoir E[exp tX] = exp(t2 /2). Pour l’estimateur antithétique
défini par (2.6), on peut estimer la variance par simulation :

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 69

n=10^5
nsim=10^2
Itilde=matrix(0,nrow=nsim,ncol=n)
for (k in 1:nsim){
X=rnorm(n)
Itilde[k,]=cumsum(0.5*(exp(X)+exp(-X)))/(1:n)}
vtilde=apply(Itilde,2,var)*(1:n)
plot(1:n,vtilde,type=’l’)
Notons que la convergence de σ̃n2 vers la variance asymptotique
1
σ̃ 2 =(Var(exp X) + Cov(exp X, exp(−X)))
2
est très lente. Néanmoins, celle-ci est facile à calculer et donne
1 σ̃ 2 e−1
σ̃ 2 = (e − 1)2 =⇒ 2 = ≈ 0.32,
2 σ 2e
soit une réduction de la variance par un facteur 3. Même en tenant compte du fait que cette
méthode antithétique est environ deux fois plus coûteuse en calculs (évaluation de exp Xi
et de exp(−Xi )), elle reste avantageuse.
5. On veut estimer
p = P(X + Y > 5) = E[1X+Y >5 ] = E[1− log U − 1 log V >5 ],
2

où U et V sont indépendantes et uniformes sur [0, 1], de sorte que X et Y sont indépendantes
et de lois exponentielles de paramètres respectifs 1 et 2. Considérons
ϕ(u, v) = 1− log(1−u)− 1 log(1−v)>5 et ψ(u, v) = 1− log u− 1 log v>5 .
2 2

Il est clair que ϕ(u, v) (resp. ψ(u, v)) est croissante (resp. décroissante) en chacune de ses
variables, donc Tchebychev généralisé s’applique à l’estimateur
n
1 X 1− log(1−Ui )− 21 log(1−Vi )>5 + 1− log Ui − 21 log Vi >5
p̃n = .
n 2
i=1

La variance asymptotique de cet estimateur est difficile à calculer de façon exacte. On peut
toutefois l’estimer :
n=10^5
nsim=10^2
Panti=matrix(0,nrow=nsim,ncol=n)
for (k in 1:nsim){
U=runif(n)
V=runif(n)
S=-log(U)-log(V)/2
Sa=-log(1-U)-log(1-V)/2
Panti[k,]=cumsum(0.5*((S>5)+(Sa>5)))/(1:n)}
Vanti=apply(Panti,2,var)*(1:n)
plot(1:n,Vanti,type=’l’)
Ici encore, la convergence de l’estimateur de la variance est très lente : la limite semble se
situer entre 0.005 et 0.01, à peine mieux que la variance du Monte-Carlo standard (0.013) si
l’on tient compte du surcoût algorithmique, et en tout état de cause nettement moins bonne
que la méthode par conditionnement (2 · 10−4 ). Bref, l’approche par variables antithétiques
n’apporte à peu près rien dans ce cas. Much ado about nothing...

Simulations Monte-Carlo Arnaud Guyader


70 Chapitre 2. Intégration Monte-Carlo

Exercice 2.12 (Variables antithétiques)


On s’intéresse à l’estimation de l’intégrale
Z 1
I= eu du = e − 1.
0

1. L’estimateur de Monte-Carlo standard est


n
1 X Ui
Iˆn = e ,
n
i=1

où les Ui sont i.i.d. uniformes sur [0, 1]. On a alors


√  
L
n Iˆn − I −−−→ N (0, σ 2 ),
n→∞

avec
1
σ 2 = Var(exp U ) = E[exp(2U )] − (E[exp U ])2 = (e2 − 1) − (e − 1)2 ≈ 0.242.
2
Un estimateur naturel de σ 2 est
n
! n
!2
1 X 2Ui 1 X Ui
σ̂n2 = e − e .
n n
i=1 i=1

2. Illustration de la convergence de σ̂n2 vers σ 2 :


n=10^3
sigma2=(exp(2)-1)/2-(exp(1)-1)^2
U=runif(n)
sigma2hat=cumsum(exp(2*U))/(1:n)-(cumsum(exp(U))/(1:n))^2
plot((1:n),sigma2hat,type=’l’)
abline(h=sigma2,col=’red’)
3. Puisque la fonction exponentielle est monotone, on va nécessairement gagner en variance
grâce à l’estimateur antithétique
n
1 X eUi + e1−Ui
I˜n = .
n 2
i=1

La variance est cette fois


 U 
2 e + e1−U 1
s = Var = (Var(exp U ) + Cov(exp U, exp(1 − U ))) .
2 2

Le premier terme a déjà été calculé, c’est σ 2 . Pour le second, puisque U et (1− U ) ont même
loi,

Cov(exp U, exp(1 − U )) = E[exp(U ) exp(1 − U )] − E[exp(U )]E[exp(1 − U )] = e − I 2 ,

d’où
1 2 
s2 = σ + e − I 2 = 0.00391 . . .
2
Puisque la précision est donnée par l’écart-type et que σ/s ≈ 7.9, on peut en déduire que,
pour un n donné, on a un estimateur 8 fois plus précis. Par ailleurs, si on considère qu’il
faut environ deux fois plus de temps de calcul pour I˜n que pour Iˆn , on conclut que, pour
une précision donnée, le temps de calcul est grosso modo divisé par 4.

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 71

4. De E[U ] = 1/2, on déduit que pour toute constante c, E[Xc ] = E[exp(U )] = I. Pour la
variance, il vient

Var(Xc ) = Var(U )c2 + 2Cov(U, exp U )c + Var(exp U ),

quantité minimale en
Cov(U, exp U )
c = c⋆ = − ,
Var(U )
qui donne
Cov(U, exp U )2
Var(Xc⋆ ) = Var(exp U ) − .
Var(U )
On a Var(exp U ) = σ 2 , Var(U ) = 1/12 et
1
Cov(U, exp U ) = E[U exp U ] − E[U ]E[exp U ] = 1 − (e − 1),
2
d’où  2
2 1
Var(Xc⋆ ) = σ − 12 1 − (e − 1) = 0.00394 . . .
2
A très peu de choses près, la réduction de variance est donc la même que celle de l’estimateur
antithétique.

Exercice 2.13 (Marche aléatoire avec dérive et échantillonnage préférentiel)


1. Représentation d’une trajectoire pour m = 1, a = −50 et b = 5 :
m=1
a=-50
b=5
n=1
S=rnorm(1,-m,1)
I=(S<a)+(S>b)
while(I==0){
S=cbind(S,S[n]+rnorm(1,-m,1))
n=n+1
I=(S[n]<a)+(S[n]>b)}
plot(1:n,S,type=’l’)
2. On simule k trajectoires S(1), . . . , S(k), avec pour tout j entre 1 et k, S(j) = (Sn (j))1≤n≤N (j)
la trajectoire obtenue à la j-ème simulation. Pour celle-ci, notons

0 si sN (j) < a
I(j) =
1 si sN (j) > b

L’estimateur Monte-Carlo standard de p s’écrit alors


k
1X
p̂k = I(j).
k
j=1

L’implémentation se déduit de celle de la question précédente :


k=10^3
m=1
a=-50

Simulations Monte-Carlo Arnaud Guyader


72 Chapitre 2. Intégration Monte-Carlo

−10
S
−30
−50

0 10 20 30 40 50 60
1:n

Figure 2.7 – Exemple de trajectoire de la marche aléatoire avec dérive.

b=5
n=1
compteur=rep(0,k)
for(j in (1:k)){
n=1
S=rnorm(1,-m,1)
I=(S<a)+(S>b)
while(I==0){
S=cbind(S,S[n]+rnorm(1,-m,1))
n=n+1
I=(S[n]<a)+(S[n]>b)}
compteur[j]=(S[n]>b)}
p=sum(compteur)/k
Après 1000 simulations, on trouve en général p̂k = 0, c’est-à-dire qu’aucune des 1000 tra-
jectoires simulées n’est sortie par le haut.
3. Les rapports de vraisemblance valent respectivement
N
Y
f (x′ ) −2mx′ fN (x′1 , . . . , x′N ) ′ ′

= e =⇒ ′ ′ = e−2mxn = e−2msn .
g(x ) gN (x1 , . . . , xN )
n=1

4. Notons S ′ (j) = (Sn′ (j))1≤n≤N (j) la trajectoire ainsi obtenue à la j-ème simulation et
(
0 si s′N (j) < a
I ′ (j) =
1 si s′N (j) > b

Pour un total de k simulations, on en déduit l’estimateur par échantillonnage préférentiel


k
1X ′
p̃k = I (j) exp(−2ms′N (j) ).
k
j=1

Avec ce qui précède, l’implémentation est immédiate :

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 73

k=10^3
m=1
a=-50
b=5
n=1
p=rep(0,k)
for(j in (1:k)){
n=1
S=rnorm(1,m,1)
I=(S<a)+(S>b)
while(I==0){
S=cbind(S,S[n]+rnorm(1,m,1))
n=n+1
I=(S[n]<a)+(S[n]>b)}
p[j]=(S[n]>b)*exp(-2*m*S[n])}
ptilde=cumsum(p)/(1:k)
plot(1:k,ptilde,type=’l’)
5. Puisque I ′ (j) = 1 lorsque s′N (j) > b, il vient que pour tout k,

k
1 X −2mb
p̃k ≤ e = e−2mb =⇒ p = E[p̃k ] ≤ e−2mb .
k
j=1

Pour m = 1 et b = 5, ceci donne p ≤ 4.5 × 10−5 . Il était donc clair que les 1000 simulations
de la question 2 ne suffisaient pas du tout pour voir ne serait-ce qu’une trajectoire sortir de
[a, b] par le haut.

Exercice 2.14 (Méthodes numériques, Monte-Carlo et Quasi-Monte-Carlo)


Soient k et d deux entiers naturels non nuls. On veut estimer par plusieurs méthodes l’intégrale
 
Z Z d
Y
I(k, d) = f (x)dx =  kπ
sin(kπxj ) dx1 . . . dxd .
2
[0,1]d [0,1]d j=1

1. Les variables étant séparables, l’intégrale du produit peut s’écrire comme un produit d’in-
tégrales, ce qui donne
Z d   d
1

 1 d 1 − (−1)k 1 − (−1)k
I(k, d) = 2 sin(kπx)dx = − 21 cos(kπx) 0 = = .
0 2 2

2. Pour la fonction adaptIntegrate, il faut préciser le nombre maximal d’appels à f via


l’argument MaxEval :
library(cubature)
k=1
d=10
f=function(x){prod(k*pi/2*sin(k*pi*x))}
adaptIntegrate(f,rep(0,d),rep(1,d),maxEval=10^4)
paste("Valeur théorique de I =", (1-(-1)^k)/2)
Pour k = 1, l’intégrale vaut 1 mais son estimation est proche de 10, donc très mauvaise.
Par contre, il n’y a pas de problème pour k = 2.

Simulations Monte-Carlo Arnaud Guyader


74 Chapitre 2. Intégration Monte-Carlo

3. Puisqu’on a choisi de fixer le nombre maximal d’appels à f à 10000 pour la méthode


déterministe de la question précédente, on fait le même choix pour l’estimateur Monte-
Carlo. On voit que tout se passe bien, quelle que soit la parité de k :
k=1
d=10
n=10^4
f=function(x){prod(k*pi/2*sin(k*pi*x))}
Xunif=matrix(runif(n*d),nrow=n)
fXunif=rep(0,n)
for (i in 1:n){fXunif[i]=f(Xunif[i,])}
Ihat=cumsum(fXunif)/(1:n)
plot(1:n,Ihat,type="l",ylab="")
abline(h=(1-(-1)^k)/2,col="red")
La variance théorique de l’estimateur s’écrit :
Z !
1
Var(Iˆn ) = f (x)2 dx − I(k, d)2 ,
n [0,1]d

avec comme ci-dessus :


Z  Z 1 d  2 2 d
2 k2 π2 2 k π
f (x) dx = 4 (sin(kπx)) dx = .
[0,1]d 0 8

d Iˆn ) se représentent donc comme suit :


En échelle log-log, Var(Iˆn ) et Var(
k=1
d=10
n=10^4
f=function(x){prod(k*pi/2*sin(k*pi*x))}
Xunif=matrix(runif(n*d),nrow=n)
fXunif=rep(0,n)
for (i in 1:n){fXunif[i]=f(Xunif[i,])}
Ihat=cumsum(fXunif)/(1:n)
Vhat=(cumsum(fXunif^2)/(1:n)-Ihat^2)/(1:n)
Vtheo=((k^2*pi^2/8)^d-((1-(-1)^k)/2)^2)/(1:n)
plot(log(1:n),log(Vhat),type="l",ylab="")
lines(log(1:n),log(Vtheo),type="l",col="red")
La variance théorique est une droite de pente égale à -1 vers laquelle tend la variance
estimée.
4. Par défaut, la suite de Halton en dimension 2 prend pour bases les deux premiers nombres
premiers, soit (b1 , b2 ) = (2, 3), comme expliquée en Section 2.3.
library(randtoolbox)
n=500
par(mfrow=c(1,2))
plot(runif(n),runif(n),pch="+",xlab="",ylab="",main="Suite uniforme")
plot(halton(n,dim=2),pch="+",xlab="",ylab="",main="Suite de Halton")
par(mfrow=c(1,1))
5. L’estimateur Quasi-Monte-Carlo I˜n s’implémente de la même façon que l’estimateur Monte-
Carlo Iˆn :

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 75

k=1
d=10
f=function(x){prod(k*pi/2*sin(k*pi*x))}
n=10000
Xunif=matrix(runif(n*d),nrow=n)
Xhalton=matrix(halton(n,dim=d),nrow=n)
fXunif=rep(0,n)
fXhalton=rep(0,n)
for (i in 1:n){
fXunif[i]=f(Xunif[i,])
fXhalton[i]=f(Xhalton[i,])}
Ihat=cumsum(fXunif)/(1:n)
Itilde=cumsum(fXhalton)/(1:n)
plot(1:n,Ihat,type="l",col="blue",ylab="")
lines(1:n,Itilde,type="l",col="green")
abline(h=(1-(-1)^k)/2,col="red")
On remarque que, lorsque la dimension augmente (prendre par exemple d = 20), l’estimateur
Quasi-Monte-Carlo devient moins bon que l’estimateur Monte-Carlo.
Exercice 2.15 (Bayes, Cauchy et Gauss)
Dans un cadre bayésien, on considère que la loi a priori sur θ est une loi de Cauchy standard et
que, sachant θ, les variables Xi sont i.i.d. selon une loi normale de moyenne θ et de variance 1.
1. La densité a posteriori s’obtient par la formule de Bayes :
 
π(θ)f (x|θ) Cx  1
N
X 
2
π(θ|x) = = exp − (x j − θ) ,
f (x) 1 + θ2  2 
j=1

où, comme d’habitude, la constante de normalisation


 
Z  1X N 
1 2
Cx = 2
exp − (x j − t) dt
R 1+t  2 
j=1

dépend de x mais pas de θ. La moyenne a posteriori θ̂(x) est par définition la moyenne de
θ pour cette loi a posteriori, c’est-à-dire
 
Z Z  N
X 
θ 1 2
θ̂(x) = θ π(θ|x)dθ = Cx 2
exp − (x j − θ) dθ.
R R 1+θ  2 
j=1

On ne dispose pas de formule analytique évidente pour calculer cette intégrale, d’où le
recours aux méthodes Monte-Carlo dans la suite.
2. Rien de plus simple :
theta0=3
N=10
x=rnorm(N,mean=theta0,sd=1)
3. L’estimateur Monte-Carlo θ̂n (x) de θ̂(x) est celui exposé en Section 2.1.3, à savoir
 
X n  1X N 
θi exp − (xj − θi )2
Pn  2 
i=1 θi f (x|θi ) i=1

j=1

θ̂n (x) = P n = .
i=1 f (x|θi ) X n  1X N 
exp − (xj − θi )2
 2 
i=1 j=1

Simulations Monte-Carlo Arnaud Guyader


76 Chapitre 2. Intégration Monte-Carlo

Pour simuler θ suivant une loi de Cauchy standard, on se sert du résultat vu en exercice
1.5.
n=1000
num=rep(0,n)
den=rep(0,n)
for (i in 1:n){
theta=tan(pi*(runif(1)-0.5))
lik=exp(-0.5*sum((x-theta)^2))
num[i]=theta*lik
den[i]=lik}
thetahat=cumsum(num)/cumsum(den)
plot(1:n,thetahat,type="l")
abline(h=theta0,col="red")
Sans surprise, plus N est grand, plus l’estimateur θ̂(x), lui-même estimé par θ̂n (x), est
proche de 3.
4. Dans un cadre général, supposons qu’on veuille simuler selon la loi a posteriori π(θ|x). Si on
adopte une méthode de rejet avec comme loi instrumentale la loi a priori π(θ), on cherche
donc à majorer le rapport π(θ|x)/π(θ) pour tout θ. Or

π(θ|x) f (x|θ) f (x|θ̂mv )


= ≤m=
π(θ) f (x) f (x)

par définition même de l’estimateur du maximum de vraisemblance θ̂mv . Pour une mé-
thode de rejet, il suffit donc de simuler selon la loi a priori π(θ) et de calculer le rapport
d’acceptation
π(θ|x) f (x|θ̂mv )
= .
mπ(θ) f (x|θ)
L’intérêt de cette formule est de ne pas faire appel à f (x), qui est hors de portée.
5. Lorsque les Xj sont i.i.d. selon une loi N (θ, 1), l’estimateur du maximum de vraisemblance
n’est rien d’autre que la moyenne empirique : θ̂mv = x̄. Dès lors, une valeur θ ayant été
simulée selon la loi a priori π(θ), le rapport d’acceptation s’écrit
n o
1 PN 2
f (x|θ̂mv ) exp − 2 (x
j=1 j − θ) 
= n P o = exp − N2 (x̄ − θ)2 .
f (x|θ) exp − 1 N
(x − x̄)2
2 j=1 j

Si on revient au cas particulier précédent avec θ0 = 3, N = 10 et x = (x1 , . . . , xN ), on peut


donc construire un échantillon de taille n = 100 selon la loi a posteriori π(θ|x) comme suit :
theta0=3
N=100
n=100
x=rnorm(N,mean=theta0,sd=1)
xbar=mean(x)
ech=rep(0,n)
for (i in 1:n){
while (ech[i]==0){
theta=tan(pi*(runif(1)-0.5))
if(runif(1)<exp(-N*(xbar-theta)^2/2)){ech[i]=theta}}}
plot(density(ech),col="red",xlab="",ylab="",main="")

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 77

Plus on prend N grand, plus la densité se concentre autour de la vraie valeur du paramètre
θ0 = 3.

Exercice 2.16 (Estimation d’une p-value)


On considère un vecteur gaussien en dimension 2, X = [X1 , X2 ]′ ∼ N ([θ1 , θ2 ]′ , I2 ), où I2 est la
matrice identité en dimension 2. On veut tester H0 : θ1 = θ2 = 0 contre H1 : ∃j ∈ {1, 2}, θj 6= 0.
Pour ce faire, on considère la statistique de test T (X) = max(|X1 |, |X2 |).
1. On se place sous H0 , i.e. X est un vecteur gaussien standard en dimension 2. Puisque T (X)
est une variable aléatoire positive, on a F (t) = 0 pour t ≤ 0. Pour t ≥ 0, on voit facilement
que
F (t) = (2G(t) − 1)2 .
Pour tout α ∈]0, 1[, on a donc
 √ 
−1 1+ 1−α
P(T (X) > q) = α ⇐⇒ 1 − F (q) = α ⇐⇒ q = G
2

Pour une réalisation x = [x1 , x2 ]′ , on calcule T (x) = max(|x1 |, |x2 |). Si T (x) ≤ q, on accepte
H0 , sinon on rejette H0 . Ceci constitue un test de niveau de risque α.
2. Si x = [1, 2]′ , alors T (x) = 2 et

α0 (x) = P(T (X) ≥ 2) = 1 − F (2) = 1 − (2G(2) − 1)2 ,

ce qui donne

1-(2*pnorm(2)-1)^2

3. Il suffit de simuler des échantillons i.i.d. de vecteurs gaussiens centrés réduits, de prendre le
max des valeurs absolues des 2 coordonnées et de compter le nombre de fois où ce max est
plus grand que 2.

n=10^5
m=c(0,0)
gamma=matrix(c(1,0,0,1),nrow=2)
library(MASS)
ech=mvrnorm(n,m,gamma)
X=apply(abs(ech),1,max)
pvalue=sum(X>2)/n

On retrouve approximativement la p-value ci-dessus :


pvalue

4. On procède, mutatis mutandis, de la même façon :

n=10^5
m=c(0,0)
gamma=matrix(c(1,2,2,5),nrow=2)
library(MASS)
ech=mvrnorm(n,m,gamma)
X=apply(abs(ech),1,max)
pvalue=sum(X>2)/n
pvalue

Simulations Monte-Carlo Arnaud Guyader


78 Chapitre 2. Intégration Monte-Carlo

Exercice 2.17 (Test du rapport de vraisemblance)


Soit X ∼ B(N, θ). On veut tester H0 : θ = θ0 contre H1 : θ 6= θ0 . Le test du rapport de
vraisemblance consiste à calculer la statistique de test

θ0X (1 − θ0 )N −X
T (X) = −2 log ,
θ̂ X (1 − θ̂)N −X

où θ̂ est l’estimateur du maximum de vraisemblance.


1. On montre sans problème que, dans ce modèle, l’estimateur du maximum de vraisemblance
correspond à θ̂ = X/N puisque la log-vraisemblance s’écrit
 
N X − Nθ X
ℓN (θ) = log + X log θ + (N − X) log(1 − θ) =⇒ ℓ′N (θ) = =⇒ θ̂ = .
X θ(1 − θ) N

2. Soit x une observation selon la loi B(N, 1/2). La p-value du test est définie par

α0 (x) = P(T (X) ≥ T (x)),

avec X ∼ B(N, 1/2). Pour estimer α0 (x), il suffit donc de générer des variables Xi i.i.d.
selon une loi B(N, 1/2) et de compter la proportion des fois où la valeur T (Xi ) obtenue est
plus grande que T (x) :
n
1X
α̂0 (x) = 1T (Xi )≥T (x) .
n
i=1
Avec N = 10, ceci s’écrit :
theta0=1/2
N=10
x=rbinom(1,N,theta0)
thetahat=x/N
Tobs=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0)))
n=1000
T=rep(0,n)
for (i in 1:n){
x=rbinom(1,N,theta0)
thetahat=x/N
T[i]=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0)))}
alpha0hat=mean(T>=Tobs)
3. Pour N = 104 , on a donc
α̂0 (x) ≈ 1 − F (T (x)),
où F est la fonction de répartition associée à la loi χ21 . Ceci donne :
theta0=1/2
N=10^4
x=rbinom(1,N,theta0)
thetahat=x/N
Tobs=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0)))
n=1000
T=rep(0,n)
for (i in 1:n){
x=rbinom(1,N,theta0)
thetahat=x/N

Arnaud Guyader Simulations Monte-Carlo


2.5. Corrigés 79

T[i]=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0)))}
alpha0hat=mean(T>=Tobs)
alpha0theo=1-pchisq(Tobs,df=1)
4. Notre but est de montrer que, sous H0 : θ = θ0 ,
θ0X (1 − θ0 )N −X L
T (X) = −2 log −−−−→ χ21 .
θ̂ X (1 − θ̂)N −X N →∞

En remarquant que X = N θ̂ et en se plaçant sous H0 , la statistique de test s’écrit encore


n o
T (X) = 2N θ̂(log θ̂ − log θ0 ) + (1 − θ̂)(log(1 − θ̂) − log(1 − θ0 )) .

Le développement limité
x − x0 (x − x0 )2
log x = log x0 + − + o((x − x0 )2 )
x0 2x20

appliqué en x = θ0 et x0 = θ̂ donne

θ0 − θ̂ (θ0 − θ̂)2
log θ0 = log θ̂ + − + (θ̂ − θ0 )2 εN ,
θ̂ 2θ̂ 2
où (εN ) est une suite de variables aléatoires tendant en probabilité vers 0 lorsque N tend
vers l’infini. De la même façon, le développement limité précédent appliqué en x = 1 − θ0
et x0 = 1 − θ̂ donne

θ̂ − θ0 (θ̂ − θ0 )2
log(1 − θ0 ) = log(1 − θ̂) + − + (θ̂ − θ0 )2 δN ,
1 − θ̂ 2(1 − θ̂)2
où (δN ) est une suite de variables aléatoires tendant en probabilité vers 0 lorsque N tend
vers l’infini. Revenant à l’expression de T (X), on obtient après simplifications
( )
1
T (X) = − θ̂εN − (1 − θ̂)δN × N (θ̂ − θ0 )2 .
θ̂(1 − θ̂)

Puisque θ̂ = X/N avec X ∼ B(N, θ0 ), on a d’une part


P
θ̂ −−−−→ θ0 ,
N →∞

et d’autre part
√ L
N (θ̂ − θ0 ) −−−−→ N (0, θ0 (1 − θ0 )),
N →∞
donc par le théorème de continuité

(θ̂ − θ0 )2 L
N× −−−−→ χ2 .
θ0 (1 − θ0 ) N →∞ 1
Puisque
1 P 1
− θ̂εN − (1 − θ̂)δN −−−−→ ,
θ̂(1 − θ̂) N →∞ θ0 (1 − θ0 )
le Lemme de Slutsky permet de conclure. De façon générale, ce résultat reste vrai dès
que θ̂ est l’estimateur du maximum de vraisemblance dans un modèle régulier au sens de
l’information de Fisher.

Simulations Monte-Carlo Arnaud Guyader


Chapitre 3

Monte-Carlo par Chaînes de Markov

Introduction
Le premier chapitre exposait quelques méthodes pour simuler des variables aléatoires X1 , X2 , . . .
i.i.d. selon une loi f donnée. Ceci étant supposé possible, le deuxième chapitre en donnait une
application classique pour l’estimation de
Z
I = E[ϕ(X)] = ϕ(x)f (x)dx, (3.1)

en premier lieu par l’estimateur Monte-Carlo standard


n
1X
Iˆn = ϕ(Xi ). (3.2)
n
i=1

Ceci étant, la convergence de Iˆn vers I est encore valable si les variables Xn ne sont plus i.i.d.,
mais constituent par exemple une chaîne de Markov de loi stationnaire f . On parle alors de
méthodes Monte-Carlo par chaînes de Markov (MCMC), dont l’algorithme de Metropolis-Hastings
est l’exemple le plus connu. Afin de simplifier les choses, ce chapitre en présente les idées dans le
cadre d’un espace d’états fini, mais tout est transposable dans un cadre plus général.

3.1 Rappels sur les chaînes de Markov


Soit (Xn ) une suite de variables aléatoires à valeurs dans un ensemble E supposé fini, typi-
quement E = {1, 2, . . . , M }. E est appelé l’espace d’états. On dit que (Xn ) est une chaîne
de Markov homogène si pour tout n ≥ 1 et toute suite (i0 , i1 , . . . , in−1 , i, j) de E telle que
P(X0 = i0 , . . . , Xn−1 = in−1 , Xn = i) > 0, on a l’égalité suivante :

P(Xn+1 = j|X0 = i0 , . . . , Xn−1 = in−1 , Xn = i) = P(Xn+1 = j|Xn = i) = P(X1 = j|X0 = i).

Autrement dit, sachant le présent, le futur est indépendant du passé. Ou encore : l’état présent
étant connu, toute information sur le passé est inutile pour prévoir l’état futur. On appelle alors
probabilité de transition de l’état i vers l’état j la quantité

pij = P(X1 = j|X0 = i),

et matrice de transition de la chaîne la matrice P = [pij ]1≤i,j≤M de taille M × M . Cette matrice


vérifie les propriétés suivantes :
— Encadrement des coefficients :

∀(i, j) ∈ {1, . . . , M }2 , 0 ≤ pij ≤ 1.

81
82 Chapitre 3. Monte-Carlo par Chaînes de Markov

— Somme par ligne : pour tout i ∈ {1, . . . , M }, on a


M
X
pij = 1.
j=1

— Spectre : P admet la valeur propre 1, le vecteur e = [1, . . . , 1]′ étant un vecteur propre
associé.
Le sous-espace propre associé à la valeur propre 1 n’est pas nécessairement de dimension égale à 1.
Pour preuve l’exemple trivial de la matrice identité : noter que cet exemple correspondrait à une
chaîne qui ne change jamais d’état, il ne présente donc pas un grand intérêt.
Par ailleurs, la spécification de la loi initiale, c’est-à-dire des P(X0 = i) pour tout i ∈ {1, . . . , M }, et
des probabilités de transition pij permet d’écrire très simplement la loi jointe du vecteur aléatoire
(X0 , . . . , Xn ), puisque :
P(X0 = i0 , X1 = i1 , . . . , Xn = in ) = P(X0 = i0 )P(X1 = i1 |X0 = i0 )...P(Xn = in |Xn−1 = in−1 )
= P(X0 = i0 )pi0 i1 . . . pin−1 in .
A toute chaîne de Markov peut être associé un graphe de transition de la façon suivante : les
sommets du graphe sont les états 1, . . . , M de la chaîne et il existe un arc, étiqueté pij , de i vers j
si pij > 0. Cette construction est commode lorsque M n’est pas trop grand ou lorsque la matrice
P est très creuse, autrement dit lorsque d’un état on ne peut transiter que vers un petit nombre
d’états.
1
2

1 2
2 0 1 3

1
3

Figure 3.1 – Graphe de transition de la ligne téléphonique.

Exemple : la ligne téléphonique. On considère une ligne de téléphone. L’état Xn de cette ligne
à l’étape n est 0 si elle est libre et 1 si elle occupée. Entre deux instants successifs, il y a une
probabilité 1/2 pour qu’un appel arrive. Si la ligne est occupée et qu’un appel arrive, cet appel est
perdu. La probabilité pour que la ligne se libère entre l’instant n et l’instant (n + 1) est 1/3. Le
graphe de transition de cette chaîne de Markov est donné figure 3.1. La matrice de transition est
la suivante :  
1/2 1/2
P = .
1/3 2/3

Les probabilités de transition en n étapes sont en fait complètement déterminées par les probabilités
de transition en un coup, c’est-à-dire par la matrice de transition. Ceci est explicité par les équations
de Chapman-Kolmogorov, que nous allons voir maintenant.
Notation. La probabilité d’aller de l’état i à l’état j en n coups est notée :
(n)
pij = P(Xn = j|X0 = i),
et la matrice de transition en n coups est notée :
h i
(n)
P (n) = pij .
1≤i,j≤M

On adopte aussi la convention P (0) = IM , matrice identité de taille M .

Arnaud Guyader Simulations Monte-Carlo


3.1. Rappels sur les chaînes de Markov 83

Proposition 12 (Equations de Chapman-Kolmogorov)


Pour tout n ≥ 0, la matrice de transition en n coups est la puissance n-ème de la matrice de
transition de la chaîne, c’est-à-dire :
P (n) = P n .

Remarque. On en déduit que pour tout couple d’entiers naturels (n1 , n2 ) :

P (n1 +n2 ) = P n1 +n2 = P n1 × P n2 = P (n1 ) × P (n2 ) .

C’est plutôt cette équation qu’on appelle relation de Chapman-Kolmogorov. Ce qu’on traduit
comme suit : aller de i à j en (n1 + n2 ) pas, c’est d’abord aller de i à un certain k en n1 pas, puis
de k à j en n2 pas.
Notation. Tout comme les transitions de la chaîne, la position initiale X0 peut être aléatoire. On
convient de noter la loi de X0 comme un vecteur ligne de taille M :

µ = [µ1 , . . . , µM ] = [P(X0 = 1), . . . , P(X0 = M )] .

De même, on notera en vecteur ligne la loi de Xn :

P(Xn ) = [P(Xn = 1), . . . , P(Xn = M )] .

Corollaire 1 (Loi marginale de la chaîne)


Soit (Xn ) une chaîne de Markov de loi initiale µ et de matrice de transition P , alors pour tout
entier naturel n, la loi de Xn est :
P(Xn ) = µP n .

Pour une suite de variables aléatoires (Xn ) à valeurs dans l’ensemble fini E = {1, . . . , M }, la
convergence en loi correspond simplement à la convergence du vecteur ligne P(Xn ) de taille M ,
c’est-à-dire à la convergence de chacune de ses M composantes. Puisque P(Xn ) = µP n , une
condition suffisante pour la convergence en loi de (Xn ) est donc la convergence de la suite (P n )
des puissances de la matrice P .
Tant qu’à faire, on aimerait avoir convergence de la loi de (Xn ) vers une loi indépendante de la
loi µ, phénomène connu sous le nom d’oubli de la condition initiale. Mentionnons deux situations
pathologiques :
   
0 1 1 0
P = et Q= = I2 . (3.3)
1 0 0 1

Dans le premier cas, on a P 2n = I2 et P 2n+1 = P , donc (P n ) ne converge pas et, a fortiori,


P(Xn ) = µP n non plus sauf dans le cas très particulier µ = [1/2, 1/2] d’équidistribution initiale.
On a ici un problème de périodicité.
Dans le second cas, on a P(Xn ) = µQn = µ trivialement convergente, mais on n’oublie pas la loi
initiale pour autant. C’est un problème de communication entre états auquel on a cette fois affaire.

Afin d’éviter ces désagréments, nous nous focaliserons sur les chaînes irréductibles et apériodiques.
Une chaîne est dite irréductible si tous les états communiquent entre eux, autrement dit : pour
tout couple de sommets du graphe de transition, il existe un chemin allant de l’un à l’autre en
suivant le sens des flèches. Elle est dite apériodique si

∀i ∈ {1, . . . , M }, di = pgcd(n ≥ 1, P n (i, i) > 0) = 1.

Simulations Monte-Carlo Arnaud Guyader


84 Chapitre 3. Monte-Carlo par Chaînes de Markov

La quantité di est appelée période de l’état i. Lorsqu’une chaîne est irréductible, tous les états
ont même période d. Pour une chaîne irréductible, une condition suffisante d’apériodicité est qu’il
existe un état sur lequel elle puisse boucler, c’est-à-dire un indice j tel que pjj > 0. En (3.3), la
chaîne de matrice de transition P est irréductible mais pas apériodique (période 2), tandis que
celle correspondant à Q est apériodique, mais pas irréductible.

Théorème 4 (Convergence des chaînes irréductibles et apériodiques)


Si (Xn ) est une chaîne de Markov irréductible de matrice de transition P sur E = {1, . . . , M }, il
existe une unique mesure de probabilité π = [π1 , . . . , πM ] invariante pour cette chaîne, c’est-à-dire
telle que πP = π. Cette mesure est telle que πj > 0 pour tout j et, pour toute fonction ϕ : E → R,
on a alors
n M
1X p.s. X
ϕ(Xk ) −−−→ Eπ (ϕ) = ϕ(j)πj
n n→∞
k=1 j=1
et !
n
√ 1X L
n ϕ(Xk ) − Eπ (ϕ) −−−→ N (0, σ 2 (ϕ)).
n n→∞
k=1
Si, en outre, la chaîne est apériodique, alors il y a convergence à vitesse géométrique de P n vers la
matrice Π dont les M lignes sont égales à π : il existe des constantes C > 0 et α ∈ [0, 1) telles que

∀n ≥ 0, ∀(i, j) ∈ E × E, |P n (i, j) − πj | ≤ Cαn .

La constante α est liée au spectre de la matrice de transition P : c’est un majorant de la plus


grande des valeurs propres (en module) autres que 1. La propriété de convergence géométrique
semble donc une excellente nouvelle, mais lorsque l’espace d’états est très grand, C peut être très
grande et α très proche de 1 : ce résultat n’a alors plus aucune implication pratique.
On parle indifféremment de loi invariante, ou loi stationnaire ou encore de loi d’équilibre, pour
π vérifiant πP = π. Si l’on revient à l’exemple de la matrice de transition P en (3.3), qui est
irréductible, l’unique loi stationnaire est π = [1/2, 1/2]. D’après le théorème, cette chaîne vérifie
donc une loi des grands nombres, à savoir
n
1X p.s. 1
ϕ(Xk ) −−−→ (ϕ(1) + ϕ(2)) ,
n n→∞ 2
k=1

ainsi qu’un théorème central limite, mais certainement pas de convergence en loi. La raison est
intuitivement claire : la moyennisation sur une trajectoire de la chaîne permet de tuer le phénomène
de périodicité, ce qui n’est pas le cas de la convergence en loi.
Sous la seule hypothèse d’irréductibilité, la mesure d’équilibre π peut s’interpréter comme la pro-
portion du temps passé par une trajectoire dans chaque état. Il suffit pour s’en convaincre de
prendre par exemple ϕ = 1M et d’appliquer la loi des grands nombres du théorème précédent 1 :
n
1X #{k ∈ {1, . . . , n}, Xk = M } p.s.
1M (Xk ) = −−−→ Eπ (1M ) = πM .
n n n→∞
k=1

Contrairement au cas des suites de variables i.i.d., la variance σ 2 (ϕ) qui apparaît dans le TCL
pour les chaînes de Markov n’est pas triviale du tout. En particulier, ça n’est pas tout bonnement
 2
XM XM
Varπ (ϕ) = ϕ2 (j)πj −  ϕ(j)πj  ,
j=1 j=1

1. #A désigne le cardinal de l’ensemble A.

Arnaud Guyader Simulations Monte-Carlo


3.1. Rappels sur les chaînes de Markov 85

qui correspondrait à la variance “limite”, i.e. celle de ϕ(X) lorsque X a pour loi π. Il faut en effet
tenir compte des dépendances entre les variables Xn de la chaîne, ce qui complique tout...

Définition 6 (Réversibilité)
Soit π = [π1 , . . . , πM ] une mesure de probabilité et (Xn ) une chaîne de Markov de matrice de
transition P . On dira que π est réversible pour la chaîne si elle vérifie les équations d’équilibre
détaillé, à savoir
πi pij = πj pji ∀1 ≤ i, j ≤ M.

Une interprétation est la suivante : considérons la mesure initiale µ = [µ1 , . . . , µM ] comme une
répartition de masses sur les M points de l’espace d’états, la masse totale valant donc 1. Entre
l’instant 0 et l’instant 1, une proportion pij de la masse µi présente en i part en j, et ce pour tout
couple de sommets (i, j). Il est facile de voir que la répartition des masses à l’instant 1 est µP ,
c’est-à-dire la loi de X1 .
Ainsi, de façon générale, dire que π est une mesure d’équilibre pour P (c’est-à-dire que πP = π),
signifie que si l’on part de cette mesure à un instant donné, tout ce qui quitte l’état i est égal
à tout ce qui arrive dans l’état i : la répartition des masses ne change donc pas d’un instant au
suivant. Dire que π est réversible pour P est plus fort : sous la loi π, ce qui part de l’état i pour
aller vers l’état j est égal à ce qui part de l’état j pour aller vers l’état i.
Le terme de réversibilité s’explique comme suit : si X0 ∼ π, alors les équations d’équilibre détaillé
permettent d’écrire pour la loi jointe

P(X0 = i0 , X1 = i1 , . . . , Xn = in ) = πi0 pi0 i1 . . . pin−1 in


= pi1 i0 . . . pin in−1 πin
= πin pin in−1 . . . pi1 i0
= P(X0 = in , X1 = in−1 , . . . , Xn = i0 )
= P(Xn = i0 , Xn−1 = i1 , . . . , X0 = in ).

Autrement dit, la chaîne retournée dans le temps a la même loi :

L(X0 , . . . , Xn ) = L(Xn , . . . , X0 ).

Exemple : marche aléatoire sur un graphe. Supposons donné un graphe non orienté de
sommets numérotés de 1 à M et, pour chaque sommet i ∈ {1, . . . , M }, notons di le nombre
d’arêtes connectées à celui-ci. Considérons maintenant la chaîne de Markov suivante : partant du
sommet i, on va vers l’un des di sommets voisins de façon équiprobable. Il est facile de vérifier que
la mesure " #
d1 dM
π = PM , . . . , PM
j=1 dj j=1 dj

est réversible pour cette chaîne. Cette marche aléatoire est l’un des ingrédients du fameux algo-
rithme PageRank de Google, les sommets correspondant aux pages web et les arêtes aux liens entre
celles-ci.

Lemme 1 (Réversibilité ⇒ stationnarité)


Soit (Xn ) une chaîne de Markov de matrice de transition P . Si la mesure π est réversible pour la
chaîne, alors elle est invariante, c’est-à-dire que πP = π.

La vérification est immédiate. Parmi les chaînes de Markov, les chaînes réversibles constituent donc
un cadre d’étude privilégié. Ce sont elles qui vont nous intéresser dans la suite.

Simulations Monte-Carlo Arnaud Guyader


86 Chapitre 3. Monte-Carlo par Chaînes de Markov

3.2 Algorithme de Metropolis-Hastings


En section précédente, considérant une chaîne de Markov définie d’une façon ou d’une autre, nous
cherchions sa loi stationnaire π. Désormais, la démarche est inverse : on part d’une loi π donnée
et on cherche à construire une chaîne de Markov dont π est la mesure stationnaire.

3.2.1 Algorithme de Metropolis


Nous présentons en premier lieu l’algorithme proposé par Metropolis et ses co-auteurs en 1953
[12] avant de passer à sa généralisation par Hastings en 1970 [10]. On veut simuler une chaîne
de Markov de loi stationnaire π, la difficulté venant du fait que cette loi n’est connue qu’à une
constante de normalisation près :

πju
∀j ∈ {1, . . . , M } πj = Cπju = PM , (3.4)
u
i=1 πi

où π u signifie “π unnormalized”. Ce problème est tout sauf artificiel : il est par exemple récurrent
en statistique bayésienne et en physique statistique. Nous supposerons pour simplifier que πj > 0
pour tout j.
Pour construire cette chaîne, il nous faut spécifier une matrice de transition P ayant π comme loi
stationnaire. A l’instar des méthodes de rejet et d’échantillonnage préférentiel, l’idée est d’utiliser
un mécanisme de proposition auxiliaire (ou instrumental) et de corriger le tir ensuite.
Soit donc Q = [qij ]1≤i,j≤M une matrice de transition telle que :
— symétrie : pour tout couple (i, j), on a qij = qji ;
— partant de tout état i, on sait simuler facilement selon la loi qi. = [qi1 , . . . , qiM ].
Comme dans les méthodes précédentes, l’algorithme fonctionne alors en plusieurs étapes :

1. partant de Xn = i, simuler Y = j selon la loi qi. = [qi1 , . . . , qiM ] ;


2. calculer le rapport d’acceptation rij = πj /πi ;
3. tirer une loi uniforme U ∼ U[0,1] , et poser Xn+1 = Y = j si U ≤ rij , Xn+1 = Xn = i sinon.

Dit autrement, si partant de Xn = i, la proposition Y = j est plus vraisemblable au vu de π


(i.e. πj ≥ πi ), alors la transition est systématiquement acceptée ; dans le cas contraire, elle n’est
acceptée qu’avec une probabilité égale à rij = πj /πi . Dans le premier cas, il est cohérent de
favoriser les transitions vers les états les plus vraisemblables selon π puisque celle-ci est notre loi
cible ; dans le second cas, il ne faut pas refuser systématiquement une transition vers un état moins
vraisemblable, sans quoi on resterait bloqué dans les maxima locaux de π vis-à-vis du système de
voisinage induit par le graphe de transition de Q.
Achtung ! Dans la construction de la chaîne (Xn ), il faut tout conserver, y compris les fois où
l’on reste sur place (c’est-à-dire Xn+1 = Xn ), sans quoi tout est biaisé.
Le point diabolique de cet algorithme est de ne faire intervenir que les rapports πj /πi = πju /πiu . Il
ne requiert donc nullement la connaissance de la constante de normalisation C de la formule (3.4).

Proposition 13 (Réversibilité de Metropolis)


Si la matrice de transition Q est irréductible, alors la chaîne (Xn ) produite par l’algorithme de
Metropolis est irréductible et π est réversible pour cette chaîne. En particulier, π est son unique
mesure d’équilibre.

Arnaud Guyader Simulations Monte-Carlo


3.2. Algorithme de Metropolis-Hastings 87

Concernant le phénomène lourdingue de périodicité, la preuve va montrer qu’elle est en fait à peu
près exclue ici, si ce n’est le cas très particulier où π est uniforme sur E et Q elle-même périodique :
autant dire qu’il faut vraiment le faire exprès.
Preuve. Notons P = [pij ] la matrice de transition de la chaîne (Xn ). On veut montrer que
πi pij = πj pji pour tout couple d’indices (i, j). Supposons sans perte de généralité que πj ≥ πi ,
alors par définition de l’algorithme et puisque qij = qji ,
   
πj πi qji πi
pij = qij × min , 1 = qij et pji = qji × min ,1 = =⇒ πi pij = πj pji .
πi πj πj

L’irréductibilité de la chaîne (Xn ) se déduit de celle induite par Q : s’il existe un chemin de i
vers j dans le graphe de transition associé à Q, alors ce chemin reste de probabilité non nulle
pour le graphe de transition associé à P . Passons à l’apériodicité : supposons la chaîne (Xn ) non
apériodique, alors en particulier pii = 0 pour tout i, ce qui implique d’une part que qii = 0, d’autre
part que πj ≥ πi pour tout Q-voisin j de i. Puisque Q est irréductible, ceci implique de proche
en proche que tous les πi sont égaux à 1/M . Dans cette situation, toutes les propositions sont
acceptées, on a donc P = Q et Q est elle-même périodique.


Exemple pathologique. Considérons


 
0 1
E = {1, 2}, π = [1/2, 1/2], Q= ,
1 0

alors P = Q et la chaîne de Metropolis est périodique de période 2.


Rappelons enfin que la dynamique instrumentale définie par Q est choisie par l’utilisateur : il suffit
donc de prendre Q irréductible et apériodique pour que tout se passe bien, c’est-à-dire que le
Théorème 4 s’applique.

3.2.2 Généralisation : méthode de Metropolis-Hastings


Dans l’algorithme précédent, la dynamique définie par la matrice de transition Q était supposée
agir symétriquement sur l’espace d’états, à savoir que

qij = qji ∀(i, j) ∈ E × E,

Autrement dit, sous Q, la probabilité d’aller de i vers j est la même que celle d’aller de j vers i.
Cette condition n’est pas nécessaire. Pour s’en émanciper, il suffit de tenir compte de l’éventuelle
dissymétrie de Q dans le rapport rij . C’est ainsi que Hastings a proposé de généraliser l’algorithme
de Metropolis.
Par rapport à ce dernier, les ingrédients sont les mêmes, le prix à payer pour cette généralisation
étant simplement de supposer que :
— partant de tout état i, on sait simuler facilement selon la loi qi. = [qi1 , . . . , qiM ].
— pour tout couple (i, j), on a qij > 0 implique qji > 0 ;
— pour tout couple (i, j) tel que qij > 0, on sait calculer (πj qji )/(πi qij ).
L’algorithme de Metropolis-Hastings fonctionne alors comme suit :
1. partant de Xn = i, simuler Y = j selon la loi qi. = [qi1 , . . . , qiM ] ;
2. calculer le rapport de Metropolis-Hastings
πj qji
rij = ,
πi qij

Simulations Monte-Carlo Arnaud Guyader


88 Chapitre 3. Monte-Carlo par Chaînes de Markov

3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = j si U ≤ rij , et Xn+1 = Xn = i sinon.

Proposition 14 (Réversibilité de Metropolis-Hastings)


Si la matrice de transition Q est irréductible et apériodique, alors la chaîne (Xn ) produite par
l’algorithme de Metropolis est irréductible, apériodique et π est réversible pour cette chaîne.

La preuve se fait de la même façon que pour l’algorithme de Metropolis. Par ailleurs, tout ce qui
a été dit dans le cas d’un espace d’états fini se généralise à un espace d’états infini, qu’il soit
dénombrable ou continu. Dans le cas d’un espace d’états continu, disons Rd , le but est de simuler
selon la densité
fu (x)
f (x) = Cfu (x) = Z , (3.5)
fu (y)dy

où, comme en formule (3.4), fu signifie “f unnormalized”. La matrice de transition Q = [qij ]1≤i,j≤M
est remplacée par un noyau de transition q(x, y), c’est-à-dire que q(x, y) ≥ 0 pour tout couple (x, y)
et Z
d
∀x ∈ R , q(x, y)dy = 1.

Comme son homologue discret, le noyau q peut se voir comme une façon de se déplacer dans
l’espace d’états Rd . La variable x étant fixée, la quantité q(x, y) s’interprète comme la densité de
probabilité d’aller en y sachant que l’on part du point x.
Les hypothèses requises pour l’algorithme de Metropolis-Hastings dans le cas continu sont alors la
traduction pure et simple de celles du cas discret, à savoir :
— pour tout point x, on sait simuler selon la densité q(x, ·) ;
— pour tout couple (x, y), on a q(x, y) > 0 implique q(y, x) > 0 ;
— pour tout couple (x, y) tel que q(x, y) > 0, on sait calculer (f (y)q(y, x))/(f (x)q(x, y)).
L’algorithme de Metropolis-Hastings fonctionne alors comme suit :
1. partant de Xn = x, simuler Y = y selon la loi q(x, ·) ;
2. calculer le rapport de Metropolis-Hastings
f (y)q(y, x)
r(x, y) = ,
f (x)q(x, y)

3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = y si U ≤ r(x, y), et Xn+1 = Xn = x
sinon.

Sous des hypothèses raisonnables sur le noyau de transition q, la chaîne (Xn ) a pour unique loi
stationnaire f . L’étude théorique requiert cependant des connaissances sur les chaînes de Markov
à espace d’états continu et dépasse de loin le cadre de ce cours. L’algorithme s’implémente par
contre sans problème.

3.3 Exemple d’application : le recuit simulé


Supposons que l’on veuille minimiser une fonction V (x) sur l’espace d’états E fini. On sait calculer
V (x) pour tout x mais l’espace E est trop gros pour qu’on puisse trouver ce minimum par recherche
exhaustive et V possède par ailleurs de nombreux minima locaux, ce qui rend toute méthode à
base de gradient vouée à l’échec : penser par exemple au voyageur de commerce où #E = (N − 1)!
avec N le nombre de villes à parcourir.

Arnaud Guyader Simulations Monte-Carlo


3.3. Exemple d’application : le recuit simulé 89

Pour tout paramètre T > 0, la minimisation de V est équivalente à la maximisation de


 
1 1
fT (x) = exp − V (x)
ZT T
dite mesure de Gibbs associée au potentiel V et à la température T , où
X  
1 ′
ZT = exp − V (x )
T
′ x ∈E

est la constante de normalisation, encore appelée fonction de partition en physique statistique.


Selon sa valeur, le paramètre T a tendance à accentuer ou à lisser les extrema de V .
Exemple. Caricaturalement, prenons E = {1, 2, 3}, avec V (1) = 0, V (2) = 1 et V (3) = −1. On
vérifie facilement les deux comportements extrêmes suivants
 
1 1 1
fT −−−→ [0, 0, 1] et fT −−−−−→ , , .
T →0 T →+∞ 3 3 3
En particulier, lorsque la température tend vers 0, la mesure de Gibbs se concentre sur le minimum
de V . Ce résultat est général et l’idée sous-jacente est la même que pour la méthode de Laplace
en analyse.

Lemme 2 (Principe de Laplace)


Soit M⋆ l’ensemble des points où V atteint son minimum. Lorsque la température tend vers zéro,
la mesure de Gibbs fT se concentre uniformément sur ceux-ci, c’est-à-dire que

0 / M⋆
si x ∈
lim fT (x) = 1 ⋆
T →0+ #M⋆ si x ∈ M

où #M⋆ désigne le cardinal de l’ensemble M⋆ .

En particulier, si V atteint son minimum global en un unique point x⋆ , ceci signifie que la mesure
de Gibbs se concentre en x⋆ lorsque la tempétaure tend vers 0 (cf. exemple précédent avec x⋆ = 3).
Preuve. Soit V ⋆ le minimum de V , alors pour tout x de E,
 
exp − T1 (V (x) − V⋆ ) exp − T1 (V (x) − V⋆ )
fT (x) = P 1
 = P ,

x′ ∈E exp − T (V (x ) − V⋆ ) #M⋆ + x′ ∈E\M⋆ exp − T1 (V (x′ ) − V⋆ )
avec  
′ ⋆ 1 ′
∀x ∈ E \ M , exp − (V (x ) − V⋆ ) −−−−→ 0.
T T →0+

La limite du numérateur est, quant à elle, 1 ou 0 selon que x appartient à M⋆ ou non. A contrario,
lorsque T → ∞, on a tout simplement
1
∀x ∈ E fT (x) −−−−−→ ,
T →+∞ #E
c’est-à-dire que la mesure de Gibbs converge vers la loi uniforme sur E à haute température.

Puisqu’à basse température, la mesure de Gibbs se concentre sur les minima globaux de V , une idée
consiste à se donner une suite de températures (Tn ) décroissant vers 0 et, pour tout n, à simuler
une chaîne de Markov (Xn ) ayant pour loi stationnaire fTn . Pour une matrice de transition Q(x, y)
donnée et vérifiant les propriétés requises par Metropolis-Hastings (irréductibilité et apériodicité),
nous avons donc l’algorithme suivant, appelé recuit simulé 2 :

2. simulated annealing, expression venant de la metallurgie.

Simulations Monte-Carlo Arnaud Guyader


90 Chapitre 3. Monte-Carlo par Chaînes de Markov

1. partant de Xn = x, simuler Y = y selon la loi Q(x, ·) ;


2. calculer le rapport de Metropolis-Hastings
 
fTn (y)Q(y, x) Q(y, x) 1
r(x, y) = = × exp − (V (y) − V (x)) ,
fTn (x)Q(x, y) Q(x, y) Tn

3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = y si U ≤ r(x, y), et Xn+1 = Xn = x
sinon.

Remarque. Comme pour Metropolis-Hastings, (Xn ) est bien une chaîne de Markov, mais elle
n’est plus homogène en raison des changements de températures Tn .
Si les transitions sont symétriques, i.e. Q(x, y) = Q(y, x), on retrouve l’algorithme de Metropolis
avec le rapport  
1
r(x, y) = exp − (V (y) − V (x)) ,
Tn
lequel est supérieur ou égal à 1 dès lors que V (y) ≤ V (x). On accepte donc systématiquement une
transition vers une valeur de V plus basse, mais on ne refuse pas systématiquement une transition
vers une valeur plus élevée, ceci afin d’éviter de rester piégé dans un minimum local de V . On
voit aussi que, à x et y fixés tels que V (y) > V (x), plus la température Tn sera basse, moins on
acceptera de transiter vers une valeur plus élevée. Ainsi, il est clair que le schéma de température
(Tn ) joue un rôle essentiel dans cette histoire. Le résultat suivant fournit une réponse partielle à
la question du réglage de la suite (Tn ).

Théorème 5 (Convergence du Recuit Simulé)


Si Q est irréductible, il existe une constante C dépendant de la fonction V et de la matrice de
transition Q telle que l’algorithme précédent appliqué avec le schéma de température Tn = C/ log n
converge bien vers M⋆ :
lim P(Xn ∈ M⋆ ) = 1.
n→∞

En particulier, si V atteint son minimum global en un unique point x⋆ , ceci signifie que
P
Xn −−−→ x⋆ .
n→∞

Si ce résultat est satisfaisant théoriquement, il l’est moins en pratique car la convergence est très
lente. C’est cependant une question très délicate en toute généralité. Quoi qu’il en soit, il est indis-
pensable de stocker toutes les valeurs intermédiaires V (Xn ) et, en fin d’algorithme (disons après nf
étapes), de considérer non pas la dernière valeur V (Xnf ) mais la valeur minimale min1≤n≤nf V (Xn )
parmi toutes celles rencontrées. Cette règle de bon sens est en fait très difficile à prendre en compte
en théorie.

3.4 Echantillonneur de Gibbs


Il s’agit d’un cas particulier de Metropolis-Hastings où toutes les transitions sont acceptées ! Il
requiert néanmoins beaucoup plus de connaissance sur la loi cible f . Comme précédemment, celle-
ci est supposée connue uniquement à une constante de normalisation près.
Plaçons-nous par exemple dans le cas d’un espace d’états continu Rd ou un sous-ensemble de Rd .
La densité cible s’écrit f (x) = f (x1 , . . . , xd ). Pour tout indice ℓ entre 1 et d, on note

x−ℓ = (x1 , . . . , xℓ−1 , xℓ+1 , . . . , xd )

Arnaud Guyader Simulations Monte-Carlo


3.4. Echantillonneur de Gibbs 91

le d-uplet correspondant à x privé de sa ℓ-ème composante. On convient alors d’écrire la densité


jointe f (x) = f (xℓ , x−ℓ ), tandis que f (·|x−ℓ ) est la densité conditionnelle correspondant à (d − 1)
coordonnées gelées et f (x−ℓ ) la densité marginale de ces (d − 1) coordonnées.

L’hypothèse cruciale est la suivante : pour tout ℓ et tout (d − 1)-uplet x−ℓ , on sait simuler suivant
la densité conditionnelle f (·|x−ℓ ). L’échantillonneur de Gibbs fonctionne alors comme suit :

1. partant de Xn = x, tirer au hasard uniformément une coordonnée ℓ entre 1 et d ;


2. simuler x′ℓ selon la loi f (·|x−ℓ ) ;
3. poser Xn+1 = (x′ℓ , x−ℓ ).

Lemme 3
L’échantillonneur de Gibbs correspond à un algorithme de Metropolis-Hastings où toutes les tran-
sitions sont acceptées, c’est-à-dire r(x, y) = 1 à chaque étape.

Preuve. Si l’on reprend les notations de Metropolis-Hastings, l’algorithme précédent revient à


proposer Y = y = (x′ℓ , x−ℓ ) partant de Xn = x = (xℓ , x−ℓ ) avec la densité de transition

1 1 f (x′ℓ , x−ℓ ) 1 f (y)


q(x, y) = f (x′ℓ |x−ℓ ) = × = × .
d d f (x−ℓ ) d f (x−ℓ )

Réciproquement, la transition de y vers x a donc pour densité

1 f (x)
q(y, x) = × .
d f (x−ℓ )

Ceci étant établi, le rapport de Metropolis-Hastings vaut donc dans ce cas

f (y)q(y, x)
r(x, y) = = 1,
f (x)q(x, y)

et il est donc normal d’accepter toutes les transitions proposées.




La méthode qui vient d’être présentée est appelée échantillonnage de Gibbs par balayage aléatoire,
car l’indice ℓ est tiré au hasard à chaque étape. Le balayage déterministe (ou systématique) consiste
à tirer les d coordonnées successivement :

1. partant de Xn = x,
pour ℓ allant de 1 à d, simuler x′ℓ selon la loi f (·|x′1 , . . . , x′ℓ−1 , xℓ+1 , . . . , xd ) ;
2. poser Xn+1 = x′ = (x′1 , . . . , x′d ).

Ainsi, lors d’une “étape” du Gibbs systématique, i.e. pour le passage de Xn à Xn+1 , toutes les
coordonnées ont été modifiées. Par contre, pour le passage de Xn à Xn+1 dans le Gibbs aléatoire,
une seule d’entre elles a changé. On peut donc voir le Gibbs systématique comme un Gibbs aléatoire
à d coups “en moyenne”. On trouvera des détails en fin d’Exercice 3.16.

Remarque. Comme le montre l’Exercice 3.12, il ne faut pas remettre toutes les coordonnées à
jour simultanément, sans quoi on risque de ne plus converger vers la loi cible !

Simulations Monte-Carlo Arnaud Guyader


92 Chapitre 3. Monte-Carlo par Chaînes de Markov

3.5 Exercices
Exercice 3.1 (Modèle de diffusion d’Ehrenfest)
On considère deux urnes A et B, contenant M boules à elles deux, numérotées de 1 à M . A chaque
instant, on choisit un numéro j ∈ {1, . . . , M } de façon équiprobable et on change d’urne à la boule
numéro j. L’état Xn de la chaîne est le nombre de boules à l’instant n dans l’urne A.
1. Donner le graphe de transition de la chaîne (Xn ).
2. Cette chaîne est-elle irréductible ? apériodique ?
3. Montrer que (Xn ) admet pour loi stationnaire π une loi binomiale dont on précisera les
paramètres.
4. En fixant par exemple M = 10, retrouver π par simulation grâce à une seule réalisation
(très longue) de la chaîne. En d’autres termes, illustrer la loi des grands nombres du cours.
5. Toujours pour M = 10, retrouver π grâce à plusieurs réalisations de la chaîne. En d’autres
termes, illustrer la convergence en loi du cours.
6. Supposons M grand. Approcher la loi π par une loi normale dont on précisera les paramètres.
En déduire un intervalle [m1 , m2 ] tel qu’asymptotiquement, la chaîne passe 95% de son
temps entre ces deux valeurs.
7. Vérifier ce résultat par simulation.

2 3 4 5

1 6
D

B
0 9 8 7

Figure 3.2 – Tétraèdre et Monopoly

Exercice 3.2 (Bistochasticité et Monopoly)


1. On dit qu’une matrice de transition (ou matrice stochastique) P est bistochastique si la
somme de chaque colonne est aussi égale à 1. Soit (Xn ) une chaîne de Markov dont la
matrice de transition est bistochastique : vérifier que la loi uniforme est une loi stationnaire.
Est-elle nécessairement unique ?
2. Un jeu du genre Monopoly a dix cases (voir figure 3.2 à droite). On part de la case 0 et on
lance un dé équilibré à six faces pour avancer le pion. Xn est la position du pion après le
n-ème lancer.
(a) Déterminer la matrice de transition de la chaîne de Markov (Xn ).
(b) La chaîne est-elle irréductible ? apériodique ?
(c) Déterminer la (ou les) loi(s) stationnaire(s).

Exercice 3.3 (Le scarabée)


Un scarabée se déplace sur les arêtes d’un tétraèdre régulier (voir figure 3.2 à gauche). Quel que
soit le sommet où il se trouve à un instant donné, il choisit au hasard et de façon équiprobable le

Arnaud Guyader Simulations Monte-Carlo


3.5. Exercices 93

sommet vers lequel il va se diriger. Il lui faut une unité de temps pour l’atteindre. On suppose de
plus que le scarabée se déplace en continu, c’est-à-dire qu’il ne s’arrête jamais en un sommet. Xn
est la position du scarabée à l’instant n.
1. Déterminer la matrice de transition de la chaîne de Markov (Xn ). Loi(s) stationnaire(s) ?
2. A-t-on convergence en loi de (Xn ) ?
3. Illustrer cette convergence par simulation.
4. Le scarabée paye 1e chaque fois qu’il passe au sommet A, 2e chaque fois qu’il passe au
sommet B, 3e chaque fois qu’il passe au sommet C, 4e chaque fois qu’il passe au sommet
D. Soit Cn le coût de sa trajectoire jusqu’à l’instant n. Que dire de la convergence de Cn /n ?
L’illustrer par simulation.
5. Supposons maintenant qu’en chaque sommet, le scarabée reste sur place avec probabilité
7/10 ou parte vers un des autres sommets de façon équiprobable. Quid de la convergence
en loi ?
6. On considère maintenant que les déplacements du scarabée sont régis par la matrice de
transition :  
0 2/3 0 1/3
 1/3 0 2/3 0 
P =  0 1/3 0 2/3  .

2/3 0 1/3 0
(a) Vérifier la loi des grands nombres.
(b) Que dire de la convergence en loi ?
7. Tirer “au hasard” une matrice de transition P à l’aide de la fonction runif. Vérifier que
la loi des grands nombres et la convergence en loi permettent de trouver un même vecteur
probabilité ligne π. Retrouver cette loi d’équilibre grâce à la fonction eigen et en utilisant
sa propriété caractéristique : π est un vecteur propre à gauche de P associé à la valeur
propre 1.

Exercice 3.4 (Le coup du parapluie)


Un employé lambda, Franz Kafka, se rend chaque matin de son appartement à son bureau et fait
le contraire le soir. Il dispose en tout de 3 parapluies, certains chez lui, les autres au bureau. A
Prague, il pleut 2 fois sur 3 lorsqu’il fait le trajet, et ce indépendamment du passé. Soit Xn le
nombre de parapluies à son domicile durant la nuit.
1. Déterminer la matrice de transition de la chaîne de Markov associée.
2. Quelle est la proportion du temps où Kafka est mouillé en arrivant au bureau le matin ?
3. Généraliser avec n parapluies.

Exercice 3.5 (Metropolis : exemple jouet)


On veut simuler une loi normale centrée réduite grâce à l’algorithme de Metropolis. La loi de
proposition est uniforme sur [−1/2, 1/2]. Par rapport au cours, nous sommes donc dans un espace
d’états continu.
1. L’équivalent de la matrice de transition qij est le noyau de transition q(x, y) qui correspond
à la densité de Y = x + U , densité de probabilité d’aller en y sachant qu’on part du point
x. Déterminer q(x, y). En déduire q(y, x).
2. Traduire l’algorithme de Metropolis-Hastings dans ce cadre.
3. En partant de X0 suivant une loi uniforme sur [−3, 3], simuler alors une chaîne de Markov
(X0 , . . . , Xn ) par l’algorithme de Metropolis-Hastings.

Simulations Monte-Carlo Arnaud Guyader


94 Chapitre 3. Monte-Carlo par Chaînes de Markov

4. Pour la réalisation de cette chaîne, déterminer la moyenne empirique, l’écart-type empirique,


représenter un histogramme des Xi auquel on superposera la densité de la loi normale centrée
réduite.
5. Grâce à la fonction unique, donner le taux d’acceptation du Metropolis-Hastings.
6. Observer ce qui se passe lorsque la condition initiale est X0 = 10.
7. Revenons à X0 ∼ U[−3,3] . Plutôt qu’une loi de proposition uniforme sur [−1/2, 1/2], considé-
rer une loi uniforme sur [−10, 10]. Qu’observez-vous ? Et avec une loi uniforme sur [−0.1, 0.1] ?

Exercice 3.6 (Metropolis vs Rejet)


On considère sur R2 la densité g(u, v) = c × f (u, v), où c est une constante de normalisation et

f (u, v) = (cos u)2 (sin v)2 exp −0.05(u2 + v 2 ) .

1. Sur [−5, 5] × [−5, 5], donner une représentation 3d de f (par exemple par persp(u,v,z))
et une représentation 2d par lignes de niveau de f (par exemple par image(u,v,z)).
2. On veut simuler selon la densité g en utilisant l’algorithme de Metropolis-Hastings. Partant
de x = (u, v), on considère le noyau de transition q(x, x′ ) qui correspond à la densité de
X ′ = x + σW , où σ > 0 est un paramètre de réglage et W ∼ N ([0, 0]′ , I2 ), loi gaussienne
centrée réduite dans R2 . Expliquer pourquoi q(x, x′ ) = q(x′ , x), c’est-à-dire qu’on est dans
le cadre de l’algorithme de Metropolis.
3. Implémenter l’algorithme de Metropolis. On utilisera le noyau de transition q(x, x′ ) ci-dessus
avec σ = 1. On pourra par exemple prendre comme initialisation X1 = (0, 0) et considérer
une chaîne (Xk )1≤k≤n de longueur n = 104 .
4. Sur le graphe de f par lignes de niveau (via image(u,v,z)), superposer les points de la
chaîne par exemple par la commande points(X,pch=3,cex=.1). Faire la même chose avec
σ grand, par exemple σ = 10, et commenter. Idem avec σ petit, par exemple σ = 0.1.
5. Proposer une méthode de rejet pour simuler suivant g à partir d’une loi instrumentale gaus-
sienne. Comme en question précédente, superposer un échantillon de grande taille simulé par
cette méthode aux niveaux de la fonction f pour vérifier visuellement le bon fonctionnement
de l’algorithme.
6. Des deux méthodes, laquelle vous semble préférable ?

Exercice 3.7 (Metropolis-Hastings : méthode de Roberts et Rosenthal (1998))


On veut maintenant simuler un mélange équiprobable de deux lois normales réduites, centrées
respectivement en m = 3 et −m = −3.
1. Rappeler la densité f correspondante. Quelle est sa moyenne ? déterminer son écart-type,
à la main ou grâce à la fonction integrate.
2. Simuler une chaîne de Markov de densité d’équilibre f par la même méthode que dans
l’exercice précédent, mais avec une loi de proposition gaussienne centrée d’écart-type σ = 1.
Donner la moyenne empirique, l’écart-type empirique, représenter un histogramme des Xi
auquel on superposera la densité f .
3. Observer ce qui se passe lorsque X0 = m. D’où vient le problème ?
4. Essayer d’améliorer les choses en modifiant l’écart-type σ.
5. On ne considère plus un noyau de transition symétrique. Partant de x, la proposition est
désormais
σ 2 f ′ (x)
Y =x+ × + σW,
2 f (x)
où W suit une loi normale centrée réduite.

Arnaud Guyader Simulations Monte-Carlo


3.5. Exercices 95

(a) Quelles transitions sont favorisées par ce noyau de transition ?


(b) Expliciter le rapport de Metropolis-Hastings r(x, y).
(c) Simuler la chaîne de Markov correspondant à cet algorithme de Metropolis-Hastings.

Exercice 3.8 (Metropolis indépendant et optimisation)


On veut trouver le maximum sur [0, 1] de la fonction

fu (x) = (cos(50x) + sin(20x))2 .

1. Représenter fu et déterminer ce maximum numériquement grâce à la fonction optimize.


2. Une autre idée, plus artisanale, est de construire une chaîne de Markov ayant pour loi
stationnaire la densité f proportionnelle à fu . Quelle est l’idée sous-jacente ?
3. Dans un premier temps, prenons le noyau de transition correspondant à Y = x+U (mod 1)
où U ∼ U[0,1] . Quelle est la loi de Y ? Construire l’algorithme de Metropolis correspondant :
on parle de Metropolis indépendant, pourquoi ?
4. Donner une estimation du maximum de f grâce à une longue réalisation de la chaîne.
5. Estimer de même le minimum en considérant la fonction exp(−fu (x)).

Exercice 3.9 (Recuit simulé)


On veut estimer par recuit simulé le minimum sur R de la fonction V (x) = x2 (2 + (sin(100x))2 ).
1. Représenter V (x) pour x variant entre -2 et 2. Quel est le minimum de V sur R ?
1
2. Pour une température T > 0 fixé, on considère sur R la densité fT (x) = ZT exp(−V (x)/T )
où Z
ZT = exp(−V (x)/T )dx.
R

En quel(s) point(s) fT admet-elle son maximum sur R ?


3. Sur une même figure, pour x variant entre -1 et 1, représenter à gauche x 7→ exp(−V (x)/T )
pour T = 10, et à droite pour T = 0.1.
4. On note U une loi uniforme sur [−1/2, 1/2]. Partant d’un point x, on considère le noyau de
transition q(x, y) qui correspond à la densité de Y = x + U . Déterminer q(x, y). En déduire
q(y, x) et le rapport de Metropolis-Hastings r(x, y) pour une température T > 0 fixée.
5. Implémenter l’algorithme du recuit simulé pour le noyau de transition q et le schéma de
température Tk = 1/(1 + log k) pour k allant de 1 à n = 1000. On pourra prendre comme
initialisation X1 ∼ U[−10,10] . On donnera en sortie la valeur V (Xn ) ainsi que le minimum
observé sur toutes les valeurs V (Xk ) pour k ∈ {1, . . . , n}.

Exercice 3.10 (Le voyageur de commerce)


Un commercial doit passer par N villes et revenir à son point de départ, il se déplace en avion et
il y a des vols directs entre toutes les villes. Le but est de trouver le trajet optimal, c’est-à-dire la
distance minimale à parcourir.
1. Pourquoi la solution exacte est-elle difficile à trouver quand N n’est pas petit ?
2. Simuler N = 10 points (M1 , . . . , MN ) uniformément dans le carré [0, 1] × [0, 1]. Les repré-
senter, ainsi que les trajets (M1 , M2 ), . . . , (MN −1 , MN ), (MN , M1 ).
3. Construire la matrice N × N des distances entre toutes les villes.

Simulations Monte-Carlo Arnaud Guyader


96 Chapitre 3. Monte-Carlo par Chaînes de Markov

4. On considère le groupe SN des permutations de l’ensemble {1, . . . , N }. A chaque permu-


tation σ = (σ(1), . . . , σ(N )) est associée la distance totale parcourue par le voyageur de
commerce, c’est-à-dire en notant d(A, B) la distance euclidienne entre A et B :
N
X
Dσ = d(Mσ(ℓ) , Mσ(ℓ+1) ),
ℓ=1

avec la convention σ(N + 1) = σ(1). Dans ce qui précède, on avait donc σ = (1, 2, . . . , N −
1, N ). Reformuler le problème d’optimisation avec ces notations.

5. La permutation σ étant donnée, on note σ ℓ,ℓ la permutation consistant à inverser l’ordre
de visite des villes ℓ et ℓ′ , autrement dit :

σ = (σ(1), . . . , σ(ℓ), . . . , σ(ℓ′ ), . . . , σ(N )) =⇒ σ ℓ,ℓ = (σ(1), . . . , σ(ℓ′ ), . . . , σ(ℓ), . . . , σ(N )).

Partant de σ, comment tirer uniformément parmi les σ ℓ,ℓ ?

6. Implémenter l’algorithme de Metropolis correspondant aux transitions Q(σ, σ ℓ,ℓ ) ci-dessus
et de loi stationnaire proportionnelle à exp(−Dσ ) sur l’espace d’états SN .
7. Déterminer le meilleur trajet obtenu par cette méthode et le représenter.
8. On adopte la technique du recuit simulé : par rapport à ce qui précède, il suffit donc de tenir
compte de la température Tn à chaque étape. Pour comparer les schémas de température,
on utilisera la fonction set.seed (permettant de fixer en début de simulation la graine
du générateur aléatoire) et on comparera les performances sur un nombre représentatif de
simulations, par exemple une centaine. Le nombre N de villes ne devra pas être pris trop
grand, contrairement à la longueur n de la chaîne...
(a) Implémenter le recuit simulé avec un schéma de température en Tn = 1/ log n. Comparer
à ce qui était obtenu avec la température fixe T = 1 de la question 7.
(b) Même question avec un schéma de température à décroissance polynomiale, c’est-à-dire
de type Tn = n−γ , pour plusieurs valeurs de γ.
Exercice 3.11 (Refroidissement trop rapide)
Considérons l’exemple d’un espace à 3 états pour expliquer la décroissance de la température en
1/ log n dans le recuit simulé. Soit donc E = {1, 2, 3}, avec V (1) = 0, V (2) = 1 et V (3) = −1.
L’exploration se fait comme suit : partant des états 1 ou 3, on propose systématiquement d’aller
en 2, tandis que partant de 2, on propose d’aller en 1 ou 3 de façon équiprobable. On considère
l’algorithme du recuit simulé avec un schéma de température noté (Tn ).
1. Minimum local de V ? Minimum global ? Donner le graphe de transition de la matrice de
transition Q.
2. On part du point X0 = 1 et on veut contrôler P(∃k ≤ n, Xk = 3). Majorer cette quantité
en fonction de la probabilité que la chaîne ne bouge pas de sa position initiale.
3. Grâce à la propriété de Markov, déterminer P(∀k ≤ n, Xk = 1) en fonction des Tk .
Qn−1 Pn−1
4. On rappelle que si les xk sont des nombres entre 0 et 1, alors k=0 (1 − xk ) ≥ 1 − k=0 xk .
En déduire une majoration de P(∃n, Xn = 3) par la somme d’une série dépendant du
schéma de température. Que se passe-t-il si Tn ≤ c/ log n avec c trop petit ?
Exercice 3.12 (Gibbs simultané = Gibbs vérolé)
On considère sur E = {(0, 0), (0, 1), (1, 0), (1, 1)} la distribution π = [2/5, 1/5, 1/5, 1/5]. Sur cet
espace d’états, on considère la chaîne de Markov (Xn ) régie par les transitions suivantes : partant
de X = (x1 , x2 ), le point suivant est X ′ = (x′1 , x′2 ) où x′1 est tiré suivant la loi conditionnelle π(·|x2 )
et, indépendamment, x′2 est tiré suivant la loi conditionnelle π(·|x1 ). Cette façon de se déplacer
dans l’espace d’états s’apparente donc à un échantillonneur de Gibbs où toutes les coordonnées
seraient remises à jour simultanément.

Arnaud Guyader Simulations Monte-Carlo


3.5. Exercices 97

1. Donner la matrice de transition P de la chaîne de Markov (Xn ). Cette chaîne est-elle


irréductible ? apériodique ?
2. Montrer que que l’algorithme proposé ne converge pas vers ce qu’on veut.
3. Donner la matrice de transition Pa de l’échantillonneur de Gibbs par balayage aléatoire.
Vérifier que π est stationnaire pour Pa . Est-elle réversible ?
4. Mêmes questions pour la matrice Pd de l’échantillonneur de Gibbs par balayage déterministe.

Exercice 3.13 (Somme d’exponentielles contrainte)


Soit X1 , . . . , Xd des variables exponentielles indépendantes de paramètres λ1 , . . . , λd donnés. Soit
S = X1 + · · · + Xd leur somme et m > 0 une constante fixée.
1. Donner la densité fm du vecteur aléatoire (X1 , . . . , Xd ) sachant S > m.
2. Soit (x2 , . . . , xd ) fixé. Comment simuler X1 sachant que X1 + x2 + · · · + xd > m ?
3. En déduire un échantillonneur de Gibbs pour simuler un échantillon (X1 , . . . , Xd ) condi-
tionnellement au fait que S > m.

Exercice 3.14 (Cas d’école pour Gibbs)


On considère la densité
 
y 2 x2 (1 + y + y 2 )
f (x, y) = C exp − − .
2 2

1. Loi de X sachant Y = y ? Loi de Y sachant X = x ?


2. En déduire un échantillonneur de Gibbs de loi cible f .

Exercice 3.15 (Simulation d’un couple)


Soit (X, Y ) un couple aléatoire de densité jointe

f (x, y) = e−y 10≤x≤y .

1. Déterminer la densité marginale de X, notée f (x). Quelle loi reconnaissez-vous ?


2. Sachant X = x ≥ 0, déterminer la densité conditionnelle f (y|x). Quelle loi reconnaissez-
vous ?
3. En déduire une méthode pour simuler une réalisation du couple aléatoire (X, Y ). L’implé-
menter pour simuler un échantillon de couples (X1 , Y1 ), . . . , (Xn , Yn ) de taille n = 1000.
Représenter le nuage de points ainsi obtenu.
4. Sachant Y = y ≥ 0, déterminer la densité conditionnelle f (x|y). Quelle loi reconnaissez-
vous ?
5. En partant par exemple du point (x0 , y0 ) = (0, 1), implémenter un échantillonneur de Gibbs
à balayage déterministe pour obtenir un échantillon (X1 , Y1 ), . . . , (Xn , Yn ) de taille n = 1000
de loi cible f . Représenter le nuage de points ainsi obtenu.
6. Des deux méthodes proposées, laquelle choisiriez-vous pour simuler selon la densité f (x, y) ?

Exercice 3.16 (Balayage aléatoire vs balayage déterministe)


On considère un espace d’états E fini de cardinal M , une densité cible π = [π1 , . . . , πM ] avec
tous les πi strictement positifs, et une matrice de transition Q = [qij ] avec tous les qij strictement
positifs.
1. Dans l’algorithme de Metropolis-Hastings, quelle est la probabilité αij qu’une loi uniforme
soit inférieure à rij ?

Simulations Monte-Carlo Arnaud Guyader


98 Chapitre 3. Monte-Carlo par Chaînes de Markov

2. En déduire le coefficient pij de la matrice P correspondant aux transitions de la chaîne (Xn )


construite par l’algorithme (attention aux termes diagonaux).
3. Vérifier que π est réversible pour P . En déduire que π est stationnaire pour P .
4. Vérifier que c’est encore vrai si au lieu de prendre α(r) = min(1, r) comme ci-dessus, on
considère n’importe quelle fonction α :]0, ∞[→]0, 1] telle que α(r) = r × α(1/r).
5. Reformuler tout ce qui précède dans le cadre d’un espace d’états continu.
6. Dans l’échantillonneur de Gibbs, notons P1 , . . . , Pd les noyaux de transition en jeu, c’est-à-
dire que la transition de x vers x′ peut avoir lieu seulement si x et x′ ne diffèrent que par
une coordonnée, disons ℓ, c’est-à-dire x−ℓ = x′−ℓ , auquel cas ceci arrive avec la densité de
probabilité Pℓ (x, x′ ) = f (x′ℓ |x−ℓ ).
(a) Vérifier que la densité f est réversible pour le noyau Pℓ . En déduire que f est stationnaire
pour le noyau Pℓ .
(b) Pour le balayage aléatoire, exprimer le noyau de transition P en fonction des Pℓ . En
déduire que la densité f est réversible pour le noyau P .
(c) Pour le balayage déterministe, exprimer le noyau de transition P en fonction des Pℓ . En
déduire que f est stationnaire pour P . La densité f est-elle réversible pour le noyau P ?

Exercice 3.17 (Modèle d’Ising)


Soit N entier naturel fixé. On considère le carré C = {(i, j), 1 ≤ i, j ≤ N }, chaque site (i, j)
ne pouvant prendre que deux valeurs Sij = ±1 (son spin). A une configuration de spins S =
(Sij )1≤i,j≤N donnée est alors associée l’énergie
X
V (S) = − Sij Skℓ avec (i, j) ∼ (k, ℓ) ⇔ |i − k| + |j − ℓ| = 1.
(i,j)∼(k,ℓ)

Autrement dit, dans la somme définissant V interviennent toutes les paires de sites voisins dans le
carré C.
1. Quelles sont les configurations minimisant l’énergie ?
2. Pour tenir compte de la température T > 0, on associe à V la mesure de Gibbs
 
1 1
µT (S) = exp − V (S) ,
ZT T

où ZT est la constante de normalisation. Que dire de cette mesure de probabilité dans les
deux situations extrêmes où T → 0 et où T → +∞ ?
3. On considère T fixé et on veut simuler S suivant la mesure µT . Donner en fonction de N le
nombre de configurations S = (Sij )1≤i,j≤N possibles.
4. On applique la méthode de Metropolis-Hastings pour simuler suivant µT . Pour cela, partant
d’une configuration S = (Sij )1≤i,j≤N , on commence par tirer un site (i0 , j0 ) au hasard (uni-
forme) et on propose de changer Si0 j0 en −Si0 j0 . On note S (i0 ,j0 ) cette nouvelle configuration
où seul un spin a changé de signe. Que vaut Q(S, S (i0 ,j0 ) ) ? Et Q(S (i0 ,j0 ) , S) ? Calculer le
rapport de Metropolis-Hastings r(S, S (i0 ,j0 ) ).
5. Expliquer brièvement pourquoi la chaîne de Markov ainsi construite est irréductible et
apériodique.
6. Pour N = 40 et T = 0.1, implémenter l’algorithme de Metropolis-Hastings permettant de
simuler une chaîne de mesure stationnaire µT . On ne demande pas de garder tout l’historique
de la chaîne, mais seulement la mise à jour de S = (Sij )1≤i,j≤N . Représenter la configuration
S obtenue après 104 étapes via la commande image(S).

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 99

7. Faire de même pour T = 10. Interpréter la différence entre les deux figures obtenues.

Exercice 3.18 (Débruitage d’image)


Soit N entier naturel fixé. On considère la grille C = {(i, j), 1 ≤ i, j ≤ N }, chaque pixel (i, j)
ne pouvant prendre que deux valeurs Sij = ±1 (blanc pour -1, noir pour +1). L’image initiale
Σ = (σij )1≤i,j≤N , supposée connue, va être modifiée en une nouvelle image S = (Sij )1≤i,j≤N
visant à minimiser l’énergie
X X
V (S) = α (Sij −σij )2 −β Sij Skℓ avec (i, j) ∼ (k, ℓ) ⇔ |i−k|+|j−ℓ| = 1,
1≤i,j≤N (i,j)∼(k,ℓ)

où α et β sont deux constantes positives. Dans la seconde somme définissant V interviennent donc
toutes les paires de sites voisins dans le carré C.
1. Si α > 0 et β = 0, quelle(s) configuration(s) minimise(nt) V ? Même question si α = 0 et
β > 0.
2. On suppose dans toute la suite que α et β sont tous deux strictement positifs fixés et
permettent d’effectuer un compromis entre deux contraintes : l’attache à l’image initiale Σ et
l’obtention de contours nets (élimination du bruit). On veut alors minimiser V , en supposant
ce minimum atteint pour une unique configuration S ⋆ = (Sij ⋆)
1≤i,j≤N . On introduit pour
cela un paramètre de température T > 0 et on associe à V la mesure de Gibbs
 
1 1
µT (S) = exp − V (S) ,
ZT T
où ZT est la constante de normalisation. Que dire de cette mesure de probabilité dans les
deux situations extrêmes où T → 0 et où T → +∞ ?
3. Soit T > 0 fixé. Comme dans le modèle d’Ising, on applique la méthode de Metropolis-
Hastings pour simuler suivant µT . Pour cela, partant d’une configuration S = (Sij )1≤i,j≤N ,
on commence par tirer un site (i0 , j0 ) au hasard (uniforme) et on propose de changer Si0 j0
en −Si0 j0 . On note S (i0 ,j0 ) cette nouvelle configuration où seul un pixel a changé. Que vaut
Q(S, S (i0 ,j0 ) ) ? Et Q(S (i0 ,j0 ) , S) ? Expliciter le rapport de Metropolis-Hastings r(S, S (i0 ,j0) ).
4. On veut appliquer un recuit simulé pour minimiser V . Comme paramètres, on pourra
prendre N = 40, α = 1/3, β = 2/3 et le schéma de température Tk = 1/k pour k al-
lant de 1 à n = 104 . L’image à retrouver est Σ0 dont tous les pixels sont à -1 sauf le
carré central de côté 20 dont tous les pixels sont à 1. L’image initiale est sa version bruitée
Σ = (σij )1≤i,j≤N où, partant de Σ0 , chaque pixel est changé de signe avec probabilité 1/4,
indépendamment les uns des autres. Pour l’implémentation du recuit simulé, on pourra
s’inspirer du code vu pour le modèle d’Ising.

3.6 Corrigés
Exercice 3.1 (Modèle de diffusion d’Ehrenfest)
On considère deux urnes A et B, contenant M boules à elles deux, numérotées de 1 à M . A chaque
instant, on choisit un numéro j ∈ {1, . . . , M } de façon équiprobable et on change d’urne à la boule
numéro j. L’état Xn de la chaîne est le nombre de boules à l’instant n dans l’urne A.
1. Il peut y avoir de 0 à M boules dans l’urne A donc l’espace d’états est E = {0, 1, . . . , M }. De
l’état 0 (resp. M ), on ne peut aller que vers l’état 1 (resp. M −1). De l’état j ∈ {1, . . . , M −1},
on peut transiter vers les états (j − 1) et (j + 1) avec les probabilités respectives j/M et
(M − j)/M . Le graphe de transition est représenté Figure 3.3 dans le cas particulier M = 3.
2. Cette chaîne est irréductible et périodique de période 2.

Simulations Monte-Carlo Arnaud Guyader


100 Chapitre 3. Monte-Carlo par Chaînes de Markov

1 2/3 1/3

0 1 2 3

1/3 2/3 1

Figure 3.3 – Graphe de transition pour le modèle d’Ehrenfest avec M = 3.

3. Puisque la chaîne est irréductible, elle admet une unique loi stationnaire π. Notons P la
matrice de transition de la chaîne : elle est donc de taille (M + 1) × (M + 1), tridiagonale et
à diagonale nulle. Le vecteur ligne π est l’unique vecteur de probabilité solution de πP = π.
La résolution de ce système, de proche en proche, donne
   
M (M − 1) M M
π1 = M π0 ⇒ π2 = π0 = π0 ⇒ . . . ⇒ πj = π0 .
2 2 j

Trouver π0 ne pose pas problème puisque les πj somment à 1 :

M M   M
X X M j
1= πj = π0 = 2M π0 =⇒ πj = M
.
j 2
j=0 j=0

C’est exactement dire que π correspond à la loi binomiale B(M, 1/2).


4. Pour simuler la chaîne d’Ehrenfest, on utilise le package markovchain. Une fois déclarés
l’espace d’états et la matrice de transition, on simule une réalisation de la chaîne de longueur
n et on compare la fréquence empirique de passage par chaque état à sa fréquence théorique
donnée par π (en rouge).
M=10
states=as.character(0:M)
P=matrix(0,nrow=M+1,ncol=M+1,dimnames=list(states,states))
P[1,2]=1
P[M+1,M]=1
for (j in 2:M){
P[j,j-1]=(j-1)/M
P[j,j+1]=(M-j+1)/M
}
library(markovchain)
mc=new("markovchain",transitionMatrix=P)
n=10^4
X0=sample(states,1)
X=rmarkovchain(n,mc,t0=X0)
Xq=factor(X,levels=states)
pihat=summary(Xq)/n
plot((0:M),pihat,type="h")
pi=dbinom((0:M),M,1/2)
par(new=T)
plot((0:M),pi,col=’red’,xlab=’’,ylab=’’,axes=F)
par(new=F)

5. La chaîne étant périodique, on n’a pas convergence en loi : si X0 est pair, alors X2n le sera
aussi tandis que X2n+1 sera impair.

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 101

6. Pour M grand, la loi binomiale est très bien approchée par une loi normale de mêmes
moyenne et variance :
π = B(M, 1/2) ≈ N (M/2, M/4)
En remplaçant 1.96√ par 2, la chaîne
√ passe donc asymptotiquement 95% de son temps entre
les valeurs M/2 − M et M/2 + M . Exemple : si M = 100, il y aura entre 40 et 60 boules
dans les 2 urnes 95% du temps. Considérer de grandes valeurs pour M fait sens puisqu’Eh-
renfest a développé son modèle pour la physique statistique, les boules correspondant à des
molécules, donc en très grand nombre.
7. Pour vérifier ce résultat par simulation, on prend par exemple M = 100 et on génère une
chaîne de longueur n = 105 , génération qui prend un peu de temps, la patience est donc de
mise...
M=100
states=as.character(0:M)
P=matrix(0,nrow=M+1,ncol=M+1,dimnames=list(states,states))
P[1,2]=1
P[M+1,M]=1
for (j in 2:M){
P[j,j-1]=(j-1)/M
P[j,j+1]=(M-j+1)/M
}
library(markovchain)
mc=new("markovchain",transitionMatrix=P)
n=10^5
X0=sample(states,1)
X=rmarkovchain(n,mc,t0=X0)
Xq=factor(X,levels=states)
plot(Xq) # une brave tête de gaussienne
inf=M/2-sqrt(M)
sup=M/2+sqrt(M)
length(X[(inf<X)&(X<sup)])/n # proportion du temps passé entre les 2 bornes

2 3 4 5

1 6
D

B
0 9 8 7

Figure 3.4 – Tétraèdre et Monopoly

Exercice 3.2 (Bistochasticité et Monopoly)


1. Soit P une matrice bistochastique de taille M × M et
 
1 1
π= ,...,
M M

Simulations Monte-Carlo Arnaud Guyader


102 Chapitre 3. Monte-Carlo par Chaînes de Markov

la loi uniforme, alors il est clair que πP = π. Cependant, la loi uniforme n’est pas nécessai-
rement l’unique loi stationnaire : il suffit de considérer P = IM , matrice identité, clairement
bistochastique et pour laquelle toute loi est stationnaire. D’après ce qui a été vu en cours,
la loi uniforme sera l’unique loi invariante si la chaîne est irréductible, c’est-à-dire si tous
les états communiquent entre eux.
2. Un jeu du genre Monopoly a dix cases (voir figure 3.4 à droite). On part de la case 0 et on
lance un dé équilibré à six faces pour avancer le pion. Xn est la position du pion après le
n-ème lancer.
(a) La matrice de transition est
 
0 1/6 1/6 1/6 1/6 1/6 1/6 0 0 0
 0 0 1/6 1/6 1/6 1/6 1/6 1/6 0 0 
 
 0 0 0 1/6 1/6 1/6 1/6 1/6 1/6 0 
 
 0 0 0 0 1/6 1/6 1/6 1/6 1/6 1/6 
 
 1/6 0 0 0 0 1/6 1/6 1/6 1/6 1/6 
P =

.

 1/6 1/6 0 0 0 0 1/6 1/6 1/6 1/6 
 1/6 1/6 1/6 0 0 0 0 1/6 1/6 1/6 
 
 1/6 1/6 1/6 1/6 0 0 0 0 1/6 1/6 
 
 1/6 1/6 1/6 1/6 1/6 0 0 0 0 1/6 
1/6 1/6 1/6 1/6 1/6 1/6 0 0 0 0

(b) On peut aller de n’importe quelle case à n’importe quelle autre en au plus deux coups,
donc la chaîne est irréductible. Partant de 0, on peut y revenir en 2 coups (par exemple :
0 → 6 → 0) ou en 3 coups (par exemple : 0 → 6 → 9 → 0), ce qui prouve que la période
de l’état 0 est 1. La chaîne étant irréductible, tous les états ont même période, elle est
donc apériodique.
(c) La matrice P étant bistochastique et irréductible, l’unique loi stationnaire est la loi
uniforme. Ceci ne faisait a priori aucun doute : si on se promène indéfiniment, il n’y
aucune raison qu’on passe plus de temps sur une case que sur une autre...

Exercice 3.3 (Le scarabée)


Un scarabée se déplace sur les arêtes d’un tétraèdre régulier (voir figure 3.4 à gauche). Quel que
soit le sommet où il se trouve à un instant donné, il choisit au hasard et de façon équiprobable le
sommet vers lequel il va se diriger. Il lui faut une unité de temps pour l’atteindre. On suppose de
plus que le scarabée se déplace en continu, c’est-à-dire qu’il ne s’arrête jamais en un sommet. Xn
est la position du scarabée à l’instant n.
1. La matrice de transition P de la chaîne de Markov (Xn ) a des coefficients 1/3 partout sauf
sur sa diagonale. Cette chaîne est une marche aléatoire sur un graphe connexe, et l’unique loi
stationnaire est la loi uniforme π = [0.25, 0.25, 0.25, 0.25]. Ceci n’est pas étonnant puisqu’on
peut tout aussi bien remarquer que la matrice P est bistochastique (cf Exercice 3.2).
2. Partant du sommet A, on peut y revenir en 2 coups, 3 coups, 4 coups, etc. Donc A est
apériodique. Puisque tous les sommets communiquent, ils sont tous apériodiques et la chaîne
est apériodique. On a donc convergence de la loi de (Xn ) vers π.
3. Une façon d’illustrer cette convergence en loi est la suivante :
states=c("A","B","C","D")
P=matrix(1/3,nrow=4,ncol=4,dimnames=list(states,states))
for (j in 1:4){P[j,j]=0}
library(markovchain)
mc=new("markovchain",transitionMatrix=P)

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 103

n=50
nsim=400
X=matrix(0,nsim,n)
for(l in (1:nsim)){
X0=sample(states,1)
X[l,]=rmarkovchain(n,mc,t0=X0)
}
Xn=X[,n]
plot(factor(Xn))
4. La chaîne étant irréductible, la loi des grands nombres du Théorème 4 s’applique avec la
fonction ϕ définie par    
ϕ(A) 1
 ϕ(B)   2 
   
 ϕ(C)  =  3  ,
ϕ(D) 4
ce qui donne
n
Cn 1X p.s. 1 5
= ϕ(Xk ) −−−→ Eπ (ϕ) = (1 + 2 + 3 + 4) = .
n n n→∞ 4 2
k=1

En moyenne, il paiera 2e50 par unité de temps. On peut bien entendu retrouver ce résultat
par simulation :
n=10^3
X=rep(0,n)
prix=rep(0,n)
X0=sample(states,1)
X[1]=rmarkovchain(1,mc,t0=X0)
prix[1]=(X[1]=="A")*1+(X[1]=="B")*2+(X[1]=="C")*3+(X[1]=="D")*4
for (k in (1:(n-1))){
X[k+1]=rmarkovchain(1,mc,t0=X[k])
prix[k+1]=(X[k+1]=="A")*1+(X[k+1]=="B")*2+(X[k+1]=="C")*3+(X[k+1]=="D")*4
}
prixmoyen=cumsum(prix)/(1:n)
plot((1:n),prixmoyen,type=’l’)
abline(h=2.5,col=’red’)
5. La chaîne est toujours irréductible, apériodique et bistochastique, donc on a toujours conver-
gence en loi vers la loi uniforme.
6. On considère maintenant que les déplacements du scarabée sont régis par la matrice de
transition :  
0 2/3 0 1/3
 1/3 0 2/3 0 
P =  0 1/3 0 2/3  .

2/3 0 1/3 0
(a) Une interprétation : le scarabée se déplace cette fois sur un carré et, à chaque instant, il
avance avec probabilité 2/3 et recule avec probabilité 1/3. La chaîne étant irréductible
et la matrice P bistochastique, l’unique loi stationnaire est toujours la loi uniforme et
la loi des grands nombres est vérifiée.
(b) La chaîne est cette fois périodique de période 2, donc il n’y a plus convergence en loi.

Simulations Monte-Carlo Arnaud Guyader


104 Chapitre 3. Monte-Carlo par Chaînes de Markov

7. Voici une façon de tirer “au hasard” une matrice de transition P (il y en a d’autres) :
M=4
P=matrix(runif(M^2),nrow=M)
s=apply(P,1,sum)
S=matrix(rep(s,M),nrow=M)
P=P/S
Cette matrice n’ayant aucun coefficient nul, elle correspond à une chaîne irréductible et
apériodique, donc ayant une unique loi stationnaire π pour laquelle tant la loi des grands
nombres que la convergence en loi s’appliquent. Commençons par la loi des grands nombres :
states=as.character(1:M)
library(markovchain)
mc=new("markovchain",transitionMatrix=P)
n=10^4
X0=sample(states,1)
X=rmarkovchain(n,mc,t0=X0)
Xq=factor(X,levels=states)
pihatlgn=summary(Xq)/n
plot((1:M),pihatlgn,col=’green’,xlab=’’,ylab=’’)
Retrouvons une estimation de π via la convergence en loi :
n=500
nsim=200
X=matrix(0,nsim,n)
for(l in (1:nsim)){
X0=sample(states,1)
X[l,]=rmarkovchain(n,mc,t0=X0)}
Xq=factor(X[,n],levels=states)
pihatloi=summary(Xq)/nsim
par(new=T)
plot((1:M),pihatloi,col=’blue’,xlab=’’,ylab=’’,axes=F)
Quant à retrouver π par sa caractérisation spectrale, c’est immédiat :
pi=eigen(t(P))$vectors[,1]/sum(eigen(t(P))$vectors[,1])
par(new=T)
plot((1:M),pi,type="h",col=’red’,xlab=’’,ylab=’’,axes=F)

Exercice 3.4 (Le coup du parapluie)


Un employé lambda, Franz Kafka, se rend chaque matin de son appartement à son bureau et fait
le contraire le soir. Il dispose en tout de 3 parapluies, certains chez lui, les autres au bureau. A
Prague, il pleut 2 fois sur 3 lorsqu’il fait le trajet, et ce indépendamment du passé. Soit Xn le
nombre de parapluies à son domicile avant de partir le matin.
1. La chaîne de Markov associée a pour matrice de transition :
 
1/3 2/3 0 0
 2/9 5/9 2/9 0 
P =  0 2/9 5/9 2/9  .

0 0 2/9 7/9

2. Cette chaîne est irréductible et apériodique. L’unique loi stationnaire π est le vecteur pro-
babilité ligne solution de πP = π, que l’on peut trouver en résolvant le système à la main

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 105

ou via la fonction eigen comme dans l’Exercice 3.3. On trouve


 
1 3 3 3
π= , , , .
10 10 10 10

Sur un trajet du matin, Kafka est mouillé s’il n’a aucun parapluie chez lui et qu’il pleut :
1
ceci arrive avec probabilité : 10 × 23 = 15
1
. Sur un trajet du soir, il est mouillé s’il n’a aucun
parapluie au bureau (i.e. ils étaient tous au domicile le matin et il faisait beau le matin) et
3
qu’il pleut : ceci arrive avec probabilité : 10 × 13 × 32 = 15
1
. Que ce soit le matin ou le soir,
Kafka est mouillé une fois sur quinze.
3. La généralisation avec n parapluies ne pose pas problème : les lignes de la matrice de
transition sont les mêmes que ci-dessus. La loi stationnaire est cette fois
 
1 3 3
π= , ,..., .
3n + 1 3n + 1 3n + 1
2
Et que ce soit à l’aller ou au retour, Kafka est mouillé avec probabilité 9n+3 .

Exercice 3.5 (Metropolis : exemple jouet)


On veut simuler une loi normale centrée réduite grâce à l’algorithme de Metropolis. La loi de
proposition est uniforme sur [−1/2, 1/2]. Par rapport au cours, nous sommes donc dans un espace
d’états continu.
1. Sachant qu’on part du point x, la variable aléatoire Y suit une loi uniforme sur [x − 1/2, x +
1/2], donc q(x, y) = 1 si |y − x| ≤ 1/2, et q(x, y) = 0 sinon. On en déduit que q(y, x) = 1 si
|y − x| ≤ 1/2, et q(x, y) = 0 sinon. Autrement dit, le noyau de transition q est symétrique :
nous sommes dans le cadre d’application de l’algorithme de Metropolis, cas particulier de
Metropolis-Hastings.
2. L’algorithme fonctionne donc comme suit :
(a) partant de Xn = x, on simule W ∼ U[−1/2,1/2] et on pose Y = y = x + w ;
(b) en notant ϕ la densité de la gaussienne centrée réduite, on calcule le rapport d’accepta-
tion
ϕ(y) x2 −y 2
r(x, y) = =e 2 ,
ϕ(x)

(c) on tire une loi uniforme U ∼ U[0,1] , et on pose Xn+1 = Y = y si U ≤ r(x, y), sinon on
reste sur place : Xn+1 = Xn = x.

3. Une façon de l’implémenter :


n=10^4
x=rep(0,n)
w=runif(n,min=-0.5,max=0.5)
u=runif(n)
x[1]=runif(1,min=-3,max=3)
for (k in 1:(n-1)){
y=x[k]+w[k+1]
r=exp((x[k]^2-y^2)/2)
x[k+1]=x[k]+w[k+1]*(u[k+1]<r)}

4. Il suffit de compléter ce qui précède :

Simulations Monte-Carlo Arnaud Guyader


106 Chapitre 3. Monte-Carlo par Chaînes de Markov

mean(x)
sd(x)
hist(x,nclass=50,prob=T)
t=seq(-4,4,by=0.01)
lines(t,dnorm(t),col=’red’)
5. La commande
length(unique(x))/n
montre un taux d’acceptation très élevé, de l’ordre de 90%.
6. Lorsque X0 = 10, il faut plus de temps à la chaîne pour oublier la condition initiale, c’est-
à-dire pour se rapprocher du ventre mou de la gaussienne.
7. Lorsque la loi de proposition est une loi uniforme sur [−10, 10], le taux d’acceptation tombe
à 15% environ : les pas de la marche aléatoire sont trop grands. Partant d’un point vrai-
semblable pour la gaussienne (i.e. entre -2 et +2), la plupart des propositions tombent dans
la queue de la gaussienne, donc sont refusées. A l’opposé, avec une loi de proposition uni-
forme sur [−0.1, 0.1], le taux d’acceptation est de l’ordre de 98%, mais la convergence est
très lente : la marche aléatoire fait des pas de fourmi donc met beaucoup trop de temps à
explorer la région d’intérêt, i.e. l’intervalle [−3, 3].
Exercice 3.6 (Metropolis vs Rejet)
On considère sur R2 la densité g(u, v) = c × f (u, v), où c est une constante de normalisation et

f (u, v) = (cos u)2 (sin v)2 exp −0.05(u2 + v 2 ) .
1. Représentation de f :
f=function(u,v)(cos(u))^2*(sin(v))^2*exp(-0.05*(u^2+v^2))
u=seq(-5,5,0.1)
v=seq(-5,5,0.1)
z = outer(u,v,f)
par(mfrow=c(1,2))
persp(u,v,z,theta=30)
image(u,v,z)
2. Puisque X ′ = x+σW , q(x, x′ ) est, vue comme une fonction de x′ , la densité d’une gaussienne
centrée en x et de matrice de covariance σ 2 I2 , c’est-à-dire en notant k·k la norme euclidienne :
 
′ 1 1 ′ 2
q(x, x ) = exp − 2 kx − xk .
2πσ 2 2σ
Cette formule étant symétrique en x et x′ , il est clair que q(x, x′ ) = q(x′ , x), donc on est
dans le cadre de l’algorithme de Metropolis.
3. Implémentation avec σ = 1 :
n=10^4
sigma=1
X=matrix(0,2*n,nrow=n,ncol=2)
for(k in 1:(n-1)){
uprop=X[k,1]+sigma*rnorm(1)
vprop=X[k,2]+sigma*rnorm(1)
r=f(uprop,vprop)/f(X[k,1],X[k,2])
U=runif(1)
if(U<r){X[k+1,]=c(uprop,vprop)}else{X[k+1,]=X[k,]}}
txaccept1=length(unique(X[,1]))/n

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 107

4
2
z

0
v
v

−2
u

−4
−4 0 2 4


Figure 3.5 – Représentation de f (u, v) = (cos u)2 (sin v)2 exp −0.05(u2 + v 2 ) .

4. Représentation des points visités par la chaîne pour σ = 1 :


image(u,v,z)
points(X,pch=3,cex=.1)
Lorsque σ est grand, par exemple σ = 10, il y a beaucoup de propositions là où la densité
est faible et qui ont donc toutes les chances d’être refusées. La densité f est donc nettement
moins bien échantillonnée. A contrario, lorsque σ est petit, par exemple σ = 0.1, chaque
proposition est très proche du point précédent donc a de grandes chances d’être acceptée.
Cependant la chaîne bouge très lentement donc là encore la densité f est mal échantillonnée.
Tout ceci est illustré en figure 3.6.
5. On commence par noter que
 
2 2
2 1 2 2
∀(u, v) ∈ R f (u, v) ≤ exp −0.05(u + v ) = exp − (u + v ) .
20

Soit donc  
1 1 2 2
h(u, v) = exp − (u + v )
20π 20
la densité d’une loi normale centrée et de matrice de covariance 10I2 . On a ainsi

∀(u, v) ∈ R2 g(u, v) ≤ 20π × c × h(u, v),

ou encore
g(u, v)
∀(u, v) ∈ R2 = 20π(cos u)2 (sin v)2 ≤ 20π.
h(u, v)
La simulation selon g par méthode de rejet avec h comme loi instrumentale s’en déduit.

Simulations Monte-Carlo Arnaud Guyader


4
108 Chapitre 3. Monte-Carlo par Chaînes de Markov

4
2

2
0

0
v

v
−2

−2

−2
−4

−4

−4
−4 −2 0 2 4 −4 −2 0 2 4 −4 −2 0 2 4

u u u

Figure 3.6 – Echantillons obtenus par Metropolis avec σ = 1/10, σ = 1 et σ = 10.

nprop=10^4
n=floor(nprop/(20*pi))
X=matrix(0,2*n,nrow=n,ncol=2)
for(i in (1:n)){
while (X[i,1]==0){
U=rnorm(1,mean=0,sd=sqrt(10))
V=rnorm(1,mean=0,sd=sqrt(10))
if(runif(1)<(cos(U))^2*(sin(V))^2/(20*pi)){
X[i,1] = U
X[i,2] = V }}}
image(u,v,z)
points(X,pch=3,cex=.1)

6. Pour ce qui est du choix entre les 2 méthodes, on peut par exemple considérer la taille réelle
de l’échantillon pour l’algorihme de Metropolis avec σ = 1, c’est-à-dire la proportion de
propositions acceptées. Celle-ci est très raisonnable :
txaccept1
[1] 0.4321
Par contre, pour l’algorithme de rejet, puisque m = 20π, on sait que sur n simulations selon
la loi instrumentale, en moyenne seulement n/(20π) d’entre elles sont acceptées. Il y a donc
énormément de gâchis et cette méthode est à proscrire.

Exercice 3.7 (Metropolis-Hastings : méthode de Roberts et Rosenthal (1998))


On veut maintenant simuler un mélange équiprobable de deux lois normales réduites, centrées
respectivement en −3 et 3.

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 109

1. La densité f correspondante est (cf. Exercice 1.13)


1 1 (x+3)2 1 1 (x−3)2
f (x) = × √ e− 2 + × √ e− 2 .
2 2π 2 2π
Sa
√ moyenne est bien entendu 0. Pour son écart-type, un calcul simple montre qu’il vaut
10, ce que l’on peut retrouver grâce à la fonction integrate :
m=3
carre=function(x){x^2*(dnorm(x-m)/2+dnorm(x+m)/2)}
sqrt(integrate(carre,lower=-Inf,upper=Inf)$value)
2. L’implémentation se fait comme dans l’exercice précédent (on part de 0) :
m=3
n=10^4
x=rep(0,n)
w=rnorm(n,sd=1)
u=runif(n)
x[1]=0
for (k in 1:(n-1)){
y=x[k]+w[k+1]
r=(dnorm(y,mean=-m)+dnorm(y,mean=+m))/(dnorm(x[k],mean=-m)+dnorm(x[k],mean=+m))
x[k+1]=x[k]+w[k+1]*(u[k+1]<r)}
hist(x,nclass=50,prob=T)
t=seq(-m-4,m+4,by=0.01)
lines(t,0.5*(dnorm(t,mean=-m)+dnorm(t,mean=+m)),col=’red’)
mean(x)
sd(x)
length(unique(x))/n
3. Lorsque X0 = m, avec par exemple m = 5, σ = 1 et n = 104 , la chaîne reste grenouiller
très longtemps temps autour de m : à moins de prendre n très grand, elle ne visite qu’un
mode de la distribution cible, ce qui est bien entendu hautement non désirable.
4. Restons avec m = 5. Une façon de s’en sortir est de faire de plus grands pas, donc de
prendre σ plus grand dans le noyau de proposition. Par exemple, la valeur σ = 3 donne
expérimentalement des résultats satisfaisants.
5. On ne considère plus un noyau de transition symétrique. Partant de x, la proposition est
désormais
σ 2 f ′ (x)
Y =x+ × + σW, (3.6)
2 f (x)
où W suit une loi normale centrée réduite.
(a) Ce noyau de transition favorise les propositions vers des valeurs plus élevées de f , donc
vers des régions plus intéressantes : ceci est dû au signe de f ′ (x). De plus, le rapport
f ′ (x)/f (x) assure qu’on peut appliquer cette méthode à des densités connues uniquement
à une constante multiplicative près.
σ2 f ′ (x) 2
(b) La variable Y définie par (3.6) suit une loi normale N (x + 2 × f (x) , σ ), donc
   2 
− σ2 f ′ (x)  
1  y x+ 2 × f (x)  1 w2
q(x, y) = √ exp − = √ exp − ,
2πσ 2 2σ 2 2πσ 2 2

Simulations Monte-Carlo Arnaud Guyader


110 Chapitre 3. Monte-Carlo par Chaînes de Markov

tandis que    2 


σ2 f ′ (y)
1  x − y+ 2 × f (y) 
q(y, x) = √ exp − ,
2πσ 2 2σ 2

et le rapport de Metropolis-Hastings en découle :

f (y)q(y, x)
r(x, y) = .
f (x)q(x, y)

(c) La chaîne de Markov correspondant à cet algorithme de Metropolis-Hastings se simule


comme suit :
n=10^4
m=3
sigma=2
f=function(x,m){dnorm(x-m)+dnorm(x+m)}
fprime=function(x,m){-(x-m)*dnorm(x-m)-(x+m)*dnorm(x+m)}
x=rep(0,n)
w=rnorm(n,sd=1)
u=runif(n)
x[1]=m
for (k in 1:(n-1)){
y=x[k]+sigma^2/2*fprime(x[k],m)/f(x[k],m)+sigma*w[k+1]
qxy=dnorm(w[k+1])
qyx=dnorm((x[k]-y-sigma^2/2*fprime(y,m)/f(y,m))/sigma)
r=(f(y,m)*qyx)/(f(x[k],m)*qxy)
x[k+1]=x[k]*(u[k+1]>r)+y*(u[k+1]<r)}
hist(x,nclass=50,prob=T)
t=seq(-m-4,m+4,by=0.01)
lines(t,0.5*(dnorm(t,mean=-m)+dnorm(t,mean=+m)),col=’red’)
mean(x)
sd(x)
length(unique(x))/n

Exercice 3.8 (Metropolis indépendant et optimisation)


On veut trouver le maximum sur [0, 1] de la fonction

fu (x) = (cos(50x) + sin(20x))2 .

1. La représentation de fu est immédiate :


f=function(x)(cos(50*x)+sin(20*x))^2
t=seq(0,1,by=0.0001)
plot(t,f(t),type=’l’)
On voit qu’il y a deux maxima globaux, l’un inférieur à 1/2, l’autre supérieur à 1/2. Le
premier peut s’obtenir par la fonction optimize :
optimize(f,lower=0,upper=1,maximum=T)
Il est en x=0.38 et vaut environ 3.83. Le second peu s’obtenir de la façon suivante :
optimize(f,lower=0.4,upper=1,maximum=T)
Il est en x=0.56.

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 111

2. L’idée sous-jacente est que la chaîne va passer plus de temps là où la densité proportionnelle
à fu prend ses valeurs les plus grandes, donc bien explorer ce voisinage.
3. Si Y = x + U (mod 1) avec U ∼ U[0,1] , alors Y suit tout simplement une loi uniforme
sur [0, 1]. Cette loi est indépendante du point de départ x, c’est pourquoi on parle de
Metropolis indépendant. En particulier, ce noyau de transition est symétrique, le rapport
de Metropolis-Hastings correspond au rapport de Metropolis et il vaut tout simplement
r(x, y) = fu (y)/fu (x).
4. Le code suivant donne l’un ou l’autre des deux extrema globaux :
n=10^4
x=rep(0,n)
y=runif(n)
u=runif(n)
x[1]=runif(1)
for (k in 1:(n-1)){
r=f(y[k+1])/f(x[k])
x[k+1]=x[k]*(u[k+1]>r)+y[k+1]*(u[k+1]<r)}
x[which.max(f(x))]
max(f(x))

5. Pour le minimum, il vaut 0 et est atteint en plusieurs endroits :


optimize(f,lower=0,upper=1,maximum=F)
La minimisation de f est équivalente la maximisation de exp(−f ), le ratio de Metropolis
valant donc cette fois r(x, y) = exp(f (x) − f (y)).
n=10^4
x=rep(0,n)
y=runif(n)
u=runif(n)
x[1]=runif(1)
for (k in 1:(n-1)){
r=exp(f(x[k])-f(y[k+1]))
x[k+1]=x[k]*(u[k+1]>r)+y[k+1]*(u[k+1]<r)}
x[which.min(f(x))]
min(f(x))

Exercice 3.9 (Recuit simulé)


On veut estimer par recuit simulé le minimum sur R de la fonction V (x) = x2 (2 + (sin(100x))2 ).
1. Pour la représentation :
V=function(x){x^2*(2+sin(100*x)*sin(100*x))}
x=seq(-2,2,by=0.001)
plot(x,V(x),type="l",col="blue")
La fonction V est positive (carrés, blablabla) et ne s’annule qu’en 0, comme on le voit sur la
représentation graphique de V . Celle-ci montre par ailleurs que V a énormément de minima
locaux.
2. Le maximum de fT (x) sur R est donc atteint en un unique point : l’origine.
3. Pour les représentations :

Simulations Monte-Carlo Arnaud Guyader


112 Chapitre 3. Monte-Carlo par Chaînes de Markov

12
8
V(x)
6
4
2
0
−2 −1 0 1 2
x

Figure 3.7 – Fonction V à minimiser.

x=seq(-1,1,by=0.001)
par(mfrow=c(1,2))
T=10
plot(x,exp(-V(x)/T),type="l",main="T=10",col="blue",ylab="")
T=0.1
plot(x,exp(-V(x)/T),type="l",main="T=0.1",col="blue",ylab="")

Le chaud Le froid
0.75 0.85 0.95

0.8
0.4
0.0

−1.0 0.0 0.5 1.0 −1.0 0.0 0.5 1.0


x x

Figure 3.8 – Fonctions x 7→ exp(−V (x)/T ) pour différentes T = 10 et T = 0.1.

4. On a de façon générale
q(x, y) = 1|y−x|≤1/2 = q(y, x).
Si y = x + U , on a donc |y − x| ≤ 1/2 et
 
fT (y) 1
r(x, y) = = exp − (V (y) − V (x)) .
fT (x) T

5. Implémentation du recuit simulé :


n=1000
X=rep(0,n)
Vobs=rep(0,n)
X[1]=runif(1,min=-10,max=10)
Vobs[1]=V(X[1])
for(k in 1:(n-1)){
T=1/(1+log(k))

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 113

Xprop=X[k]+runif(1,min=-1/2,max=1/2)
r=exp((V(X[k])-V(Xprop))/T)
u=runif(1)
X[k+1]=Xprop*(u<r)+X[k]*(u>r)
Vobs[k+1]=V(X[k+1])}
Vobs[n]
min(Vobs)

Exercice 3.10 (Le voyageur de commerce)


Un commercial doit passer par N villes et revenir à son point de départ, il se déplace en avion et
il y a des vols directs entre toutes les villes. Le but est de trouver le trajet optimal, c’est-à-dire la
distance minimale à parcourir.
1. Il y a (N − 1)! façons possibles d’effectuer le trajet. Il est donc clairement impossible
d’effectuer une recherche exhaustive si N n’est pas petit.
2. Pour 10 villes, voici un exemple de représentation :
N=10
M=matrix(runif(2*N),nrow=N,ncol=2)
trajini=rbind(M,M[1,])
plot(trajini,type=’l’,xlab=’’,ylab=’’)
Ce parcours n’est pas franchement optimal...
3. Construction de la matrice dist des distances entre villes :
distx=(M[,1]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,1]))^2
disty=(M[,2]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,2]))^2
dist=sqrt(distx+disty)
4. On cherche donc
N
X
argmin Dσ = argmin d(Mσ(ℓ) , Mσ(ℓ+1) ).
σ∈SN σ∈SN ℓ=1

5. Partant de σ, il suffit de tirer ℓ et ℓ′ uniformément entre 1 et N , puis d’inverser σ(ℓ) et



σ(ℓ′ ) dans le vecteur définissant σ. Ceci définit sans ambiguïté la permutation σ ℓ,ℓ (égale à
l’identité si ℓ = ℓ′ ). Notons que cette transition est symétrique : la probabilité de passer de
′ ′
σ à σ ℓ,ℓ est égale à celle de passer de σ ℓ,ℓ à σ, à savoir 2/N 2 . Notons aussi qu’il y a bien
d’autres façons d’explorer l’espace SN , la littérature foisonne sur ce sujet.
6. Pour l’implémentation de l’algorithme, on commence par construire une fonction associant
à une permutation σ la distance du parcours correspondant :
D=function(perm,dist){
d=dist[perm[N],perm[1]]
for (i in 1:(N-1)){d=d+dist[perm[i],perm[i+1]]}
return(d)}
On peut alors passer à l’algorithme de Metropolis proprement dit :
n=10^4
sigma=matrix(0,nrow=n,ncol=N)
Dist=rep(0,n)
sigma[1,]=1:N
Dist[1]=D(sigma[1,],dist)
u=runif(n)

Simulations Monte-Carlo Arnaud Guyader


114 Chapitre 3. Monte-Carlo par Chaînes de Markov

for (k in 1:(n-1)){
l=ceiling(N*runif(1))
lprime=ceiling(N*runif(1))
sigmaprop=sigma[k,]
sigmaprop[lprime]=sigma[k,l]
sigmaprop[l]=sigma[k,lprime]
r=exp(D(sigma[k,],dist)-D(sigmaprop,dist))
sigma[k+1,]=sigma[k,]*(u[k+1]>r)+sigmaprop*(u[k+1]<r)
Dist[k+1]=D(sigma[k+1,],dist)}
7. Ceci fait, on peut déterminer le meilleur trajet obtenu par cette méthode et le représenter :
min(Dist)
sigmaopt=sigma[which.min(Dist),]
Mopt=rbind(M[sigmaopt,],M[sigmaopt[1],])
plot(Mopt,type=’l’,xlab=’’,ylab=’’)
8. Pour le recuit simulé, par rapport à ce qui précède, il suffit de tenir compte de la température
Tn dans le ratio de Metropolis, lequel devient donc à l’étape n :
 
′ Dσ − Dσ′
r(σ, σ ) = exp .
Tn

Autrement dit, tout le travail a déjà été fait.


(a) Pour un schéma de température en Tn = 1/ log n, le programme complet est donné
ci-dessous. On note qu’il fonctionne bien mieux que le Metropolis précédent (i.e. tempé-
rature fixe).
# Initialisation des paramètres
set.seed(1234)
N=20
n=10^4
M=matrix(runif(2*N),nrow=N,ncol=2)
trajini=rbind(M,M[1,])
plot(trajini,type=’l’,xlab=’’,ylab=’’)

# Matrice des distances


distx=(M[,1]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,1]))^2
disty=(M[,2]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,2]))^2
dist=sqrt(distx+disty)

# Fonction distance
D=function(perm,dist){
d=dist[perm[N],perm[1]]
for (i in 1:(N-1)){d=d+dist[perm[i],perm[i+1]]}
return(d)}

# Schéma de température + déclaration-initialisation des objets


T=1/log(1+(1:n))
sigma=matrix(0,nrow=n,ncol=N)
Dist=rep(0,n)
sigma[1,]=1:N
Dist[1]=D(sigma[1,],dist)

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 115

u=runif(n)

# Exploration de l’espace des permutations par recuit simulé


for (k in 1:(n-1)){
l=ceiling(N*runif(1))
lprime=ceiling(N*runif(1))
sigmaprop=sigma[k,]
sigmaprop[lprime]=sigma[k,l]
sigmaprop[l]=sigma[k,lprime]
r=exp((D(sigma[k,],dist)-D(sigmaprop,dist))/T[k])
sigma[k+1,]=sigma[k,]*(u[k+1]>r)+sigmaprop*(u[k+1]<r)
Dist[k+1]=D(sigma[k+1,],dist)}

# l’optimum et sa représentation
min(Dist)
sigmaopt=sigma[which.min(Dist),]
Mopt=rbind(M[sigmaopt,],M[sigmaopt[1],])
plot(Mopt,type=’l’,xlab=’’,ylab=’’)
0.0 0.4 0.8

0.0 0.4 0.8

0.2 0.6 1.0 0.2 0.6 1.0

Figure 3.9 – Voyageur de commerce : trajet initial et meilleur trajet obtenu par recuit simulé.

(b) Pour Tn = n−γ , un choix γ > 1/2 semble correspondre à un refroidissement trop rapide,
lequel ne fait pas mieux en général que le schéma (lent) en 1/ log n. La valeur γ = 1/4
donne des résultats comparables à celui-ci.
(c) Le schéma à décroissance géométrique par paliers est illustré sur la page suivante (ainsi
que bien d’autres illustrations sur les méthodes Monte-Carlo) :
http://www-sop.inria.fr/mefisto/java/tutorial1/tutorial1.html
D’autres schémas sont bien sûr envisageables, par exemple une décroissance en sig-
moïde 3 .

Exercice 3.11 (Refroidissement trop rapide)


1. Le potentiel V a un minimum local en 1 et son minimum global en 3. Le graphe de transition
sur cet espace à 3 états est élémentaire.
2. On part du point X0 = 1. On a

P(∃k ≤ n, Xk = 3) = 1 − P(∀k ≤ n, Xk ∈ {1, 2}) ≤ 1 − P(∀k ≤ n, Xk = 1),

3. http://toddwschneider.com/posts/traveling-salesman-with-simulated-annealing-r-and-shiny/

Simulations Monte-Carlo Arnaud Guyader


116 Chapitre 3. Monte-Carlo par Chaînes de Markov


P(∀k ≤ n, Xk = 1) = P(X0 = 1, X1 = 1, . . . , Xn = 1)

est la probabilité que la chaîne ne bouge pas.


3. La propriété de Markov donne

P(∀k ≤ n, Xk = 1) = P(X0 = 1)P(X1 = 1|X0 = 1) . . . P(Xn = 1|Xn−1 = 1),

avec P(X0 = 1) = 1 par hypothèse. Par ailleurs, partant de Xk = 1, l’état proposé est
nécessairement Y = 2 : si Xk+1 = 1, c’est que cette proposition a été refusée, donc que la
variable uniforme U était supérieure au rapport de Metropolis
   
Q(Y, Xk ) 1 1 1
r(Xk , Y ) = × exp − (V (Y ) − V (Xk )) = exp − < 1.
Q(Xk , Y ) Tk 2 Tk

Or, puisque U suit une loi uniforme,


 
1 1
P(Xk+1 = 1|Xk = 1) = P(U ≥ r(Xk , Y )) = 1 − exp − .
2 Tk

Au total, on a donc

Y
n−1
1

1

P(∀k ≤ n, Xk = 1) = 1− exp − .
2 Tk
k=0

Qn−1 Pn−1
4. De la propriété k=0 (1 − xk ) ≥ 1 − k=0 xk , on déduit que

n−1  
1X 1
P(∀k ≤ n, Xk = 1) ≥ 1 − exp − ,
2 Tk
k=0

d’où
n−1  
1X 1
P(∃k ≤ n, Xk = 3) ≤ exp − .
2 Tk
k=0

Par continuité monotone croissante, on en déduit que

n−1   ∞  
1X 1 1X 1
P(∃n, Xn = 3) = lim P(∃k ≤ n, Xk = 3) ≤ lim exp − = exp − .
n→∞ n→∞ 2 Tk 2 n=0 Tn
k=0

Faisant abstraction des deux premiers termes, si Tn ≤ c/ log n, alors



1 X −1/c
P(∃n, Xn = 3) ≤ n ,
2
n=2

quantité qui est strictement inférieure à 1 dès que 0 < c ≤ c0 . Autrement dit, si la tempé-
rature décroît trop vite, la chaîne peut rester piégée ad vitam æternam dans l’état initial
X0 = 1 et ne jamais visiter le minimum global. Ceci justifie des schémas de température
dont la décroissance est d’ordre logarithmique même si, dans les faits, les praticiens optent
souvent pour des profils de refroidissement plus rapides.

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 117

Exercice 3.12 (Gibbs simultané = Gibbs vérolé)


1. Sur E = {(0, 0), (0, 1), (1, 0), (1, 1)}, la chaîne de Markov associée a pour matrice de transi-
tion :  
4/9 2/9 2/9 1/9
 1/3 1/6 1/3 1/6 
P =  1/3 1/3 1/6 1/6  .

1/4 1/4 1/4 1/4


Cette chaîne est irréductible et apériodique, elle admet donc une unique loi stationnaire
vers laquelle il y a convergence en loi.
2. Puisque πP 6= π, la chaîne (Xn ) ne converge pas en loi vers π.
3. La matrice de transition de l’échantillonneur de Gibbs par balayage aléatoire s’écrit :
 
2/3 1/6 1/6 0
 1/3 5/12 0 1/4 
Pa = 
 1/3
.
0 5/12 1/4 
0 1/4 1/4 1/2

Conformément à ce qui est expliqué dans le cours, on vérifie les équations d’équilibré détaillé,
à savoir que pour tout couple (i, j), on a πi Pa (i, j) = πj Pa (j, i). Ainsi π est réversible pour
Pa , et en particulier stationnaire.
4. Pour l’échantillonneur de Gibbs par balayage déterministe, on obtient
 
4/9 2/9 1/6 1/6
 1/3 1/6 1/4 1/4 
Pd = 
 4/9
.
2/9 1/6 1/6 
1/3 1/6 1/4 1/4

On a encore πPd = π, par contre la réversibilité est perdue : par exemple

1 4
π1 Pd (1, 3) = 6= π3 Pd (3, 1) = .
15 45

Exercice 3.13 (Somme d’exponentielles contrainte)


Soit X1 , . . . , Xd des variables exponentielles indépendantes de paramètres λ1 , . . . , λd donnés. Soit
S = X1 + · · · + Xd leur somme et m > 0 une constante fixée.
1. La densité fm du vecteur aléatoire (X1 , . . . , Xd ) sachant S > m n’est rien d’autre que la
restriction de la densité f du vecteur (X1 , . . . , Xd ) à la région S > m, soit :

1x1 +···+xd >m


fm (x1 , . . . , xd ) = × f (x1 , . . . , xd ),
P(X1 + · · · + Xd > m)

et puisque les variables X1 , . . . , Xd sont indépendantes, ceci s’écrit encore :

Y d
1x1 +···+xd >m
fm (x1 , . . . , xd ) = × λℓ e−λℓ xℓ .
P(X1 + · · · + Xd > m)
ℓ=1

2. On cherche la loi de X1 sachant que X1 + x2 + · · · + xd > m. A priori, deux situations sont


à envisager :
— si x2 + · · · + xd > m, alors il n’y a aucune contrainte sur X1 , qui suit tout naturellement
sa loi initiale, c’est-à-dire une exponentielle de paramètre λ1 ;

Simulations Monte-Carlo Arnaud Guyader


118 Chapitre 3. Monte-Carlo par Chaînes de Markov

— si au contraire x2 +· · ·+xd < m, alors X1 suit la restriction d’une exponentielle au-dessus


de la constante m − (x2 + · · · + xd ), ce qui correspond à une exponentielle translatée de
cette constante.
En notant x+ = max(x, 0) la partie positive de x, on peut résumer les deux cas en un seul :

L(X1 |X1 + x2 + · · · + xd > m) = (m − (x2 + · · · + xd ))+ + E(λ1 ),

dont la simulation est triviale.


3. On en déduit un échantillonneur de Gibbs pour simuler un échantillon (X1 , . . . , Xd ) condi-
tionnellement au fait que S > m. Pour l’initialisation, on peut par exemple partir du point
X 0 = (m/d, . . . , m/d). Pour un balayage déterministe, on commence par mettre la première
coordonnée à jour en simulant
m
X1′ = x′1 = (m − (x2 + · · · + xd ))+ + E(λ1 ) = + E(λ1 ),
d
puis la deuxième en simulant

X2′ = x′2 = (m − (x′1 + x3 + · · · + xd ))+ + E(λ2 ),

et ainsi de suite jusqu’à obtenir X 1 = (x′1 , . . . , x′d ), auquel on réapplique la même recette
pour obtenir X 2 = (x′′1 , . . . , x′′d ), etc. On construit ainsi une chaîne de Markov (X n ) de loi
stationnaire fm .
Exercice 3.14 (Cas d’école pour Gibbs)
On considère la densité
 2 
y x2 (1 + y + y 2 )
f (x, y) = C exp − − .
2 2
1. Vu l’expression de la densité jointe,
 2 
x (1 + y + y 2 )
f (x|y) = Cy exp − ,
2
donc  
1
L(X|Y = y) = N 0, .
1 + y + y2
De même, l’écriture
 2 !
1 + x2 x2
f (x, y) = Cx exp − y+
2 2(1 + x2 )

montre que  
x2 1
L(Y |X = x) = N − , .
2(1 + x ) 1 + x2
2

2. Un échantillonneur de Gibbs de loi cible f est alors très facile à construire puisqu’il suffit
de simuler des variables gaussiennes. Pour un balayage aléatoire, si Xn = (x, y), alors on
tire à Pile ou Face pour savoir quelle coordonnée on change :
— si Pile on change la première, c’est-à-dire qu’on tire
 
′ ′ 1
X = x ∼ N 0, ,
1 + y + y2
et on pose Xn+1 = (x′ , y) ;

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 119

— si Face on change la seconde, c’est-à-dire qu’on tire


 
′ ′ x2 1
Y =y ∼N − , ,
2(1 + x2 ) 1 + x2
et on pose Xn+1 = (x, y ′ ).
Pour un balayage déterministe, partant de Xn = (x, y) :
— on tire  
′ ′ 1
X =x ∼N 0, ;
1 + y + y2
— ceci fait, on tire  
′ ′ x′2 1
Y =y ∼N − , ;
2(1 + x′2 ) 1 + x′2
— on pose Xn+1 = (x′ , y ′ ).
Pour l’initialisation, on peut par exemple partir de X0 = (0, 0).
Exercice 3.15 (Simulation d’un couple)
Soit (X, Y ) un couple aléatoire de densité jointe

f (x, y) = e−y 10<x<y .

1. X suit une loi exponentielle de paramètre 1.


2. Sachant X = x > 0, Y = x + T avec T ∼ E(1), autrement dit Y suit une loi exponentielle
translatée de x.
3. Pour obtenir une réalisation du couple aléatoire (X, Y ), il suffit donc de simuler X selon
une loi exponentielle de paramètre 1, puis Y = X + T , où T suit une loi exponentielle de
paramètre 1. L’implémentation peut donc se faire de la manière suivante :
n=1000
X=rexp(n)
Y=X+rexp(n)
plot(X,Y,pch=3,col="blue")
8
6
Y
4
2
0

0 2 4 6 8
X

Figure 3.10 – Echantillon de couples (X, Y ) de densité f (x, y) = e−y 10<x<y .

4. Sachant Y = y > 0, X ∼ U[0,y] , loi uniforme sur [0, y].


5. Pour passer de (Xk , Yk ) à (Xk+1 , Yk+1 ), il suffit donc de simuler Xk+1 selon une loi uniforme
sur [0, Yk ], puis Yk+1 = Xk+1 + Tk+1 , où Tk+1 suit une loi exponentielle de paramètre 1.
Ainsi :

Simulations Monte-Carlo Arnaud Guyader


120 Chapitre 3. Monte-Carlo par Chaînes de Markov

n=10^3
X=rep(0,n)
Y=rep(0,n)
X[1]=runif(1)
Y[1]=X[1]+rexp(1)
for(k in 1:(n-1)){
X[k+1]=runif(1,min=0,max=Y[k])
Y[k+1]=X[k+1]+rexp(1)}
plot(X,Y,pch=3,col="blue")
6. La première méthode fournit directement un couple (X, Y ) distribué selon la densité jointe
f (x, y). Pour l’échantillonneur de Gibbs, à n fixé, la densité du couple (Xn , Yn ) n’est pas
exactement f (x, y) : cette propriété n’est qu’asymptotiquement vraie, lorsque n → ∞. On
privilégiera donc la première méthode, dite de simulation exacte.
Exercice 3.16 (Balayage aléatoire vs balayage déterministe)
On considère un espace d’états E fini de cardinal M , une densité cible π = [π1 , . . . , πM ] avec
tous les πi strictement positifs, et une matrice de transition Q = [qij ] avec tous les qij strictement
positifs.
1. Rappelons que rij = (πj qji )/(πi qij ) peut être supérieur à 1, auqel cas la probabilité qu’une
loi uniforme lui soit inférieure vaut 1. Sinon, cette probabilité vaut rij . Bref, de façon
générale, αij = min(1, rij ).
2. Supposons i 6= j. Le coefficient pij correspond à la probabilité d’aller de l’état i à l’état j.
Pour ceci, deux conditions doivent être remplies : d’abord que cette transition soit proposée
par le noyau instrumental Q, puis que cette proposition soit acceptée. Au total, puisque les
aléas en jeu lors de ces deux étapes sont indépendants, on voit que
i 6= j =⇒ pij = qij × αij = qij × min(1, rij ).
Par ailleurs, P est une matrice de transition, donc chaque ligne somme à 1, d’où
X X
pii = 1 − pij = 1 − qij × αij .
j6=i j6=i

3. Par définition, P est π-réversible si


∀i 6= j, πi pij = πj pji .
Supposons que πj qji ≥ πi qij , alors
πj qji
rij = ≥ 1 =⇒ αij = 1 =⇒ pij = qij × αij = qij
πi qij
tandis que
πi qij 1 πi qij
rji = = ≤ 1 =⇒ αji = rji =⇒ pji = qji × αji = .
πj qji rij πj
Finalement
πi qij
πi pij = πi qij = πj × = πj pji .
πj
Tout marcherait de la même façon si on avait initialement supposé que πj qji ≤ πi qij . Ainsi
P est bien π-réversible. En particulier, pour tout indice j, la j-ème coordonnée du produit
πP s’écrit X X X
πi pij = πj pji = πj pji = πj =⇒ πP = π,
i i i
c’est-à-dire que π est stationnaire pour P (propriété toujours vraie : P π-réversible ⇒ π
P -invariante).

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 121

4. C’est l’âne qui trotte. Il suffit de noter que rji = 1/rij :


πj qji
πi pij = πi qij α(rij ) = πi qij rij α(1/rij ) = πi qij α(rji ) = πj qji α(rji ) = πj pji
πi qij

ce qui prouve que P est π-réversible. Ainsi, dans l’algorithme de Metropolis-Hastings, on


peut aussi prendre α(r) = r/(1 + r).
5. Dans le cadre d’un espace d’états continu, on remplace par exemple π par la densité f (x)
supposée, pour simplifier, strictement positive sur Rd et qij par q(x, y) avec q(x, y) > 0 pour
tout couple (x, y). On a, pour tout x,
Z
q(x, y)dy = 1.
Rd

Le rapport de Metropolis-Hastings s’écrit

f (y)q(y, x)
r(x, y) = =⇒ α(x, y) = min(1, r(x, y)).
f (x)q(x, y)

Le noyau de transition P est défini de façon équivalente :

x 6= y =⇒ p(x, y) = q(x, y) × α(x, y) = q(x, y) × min(1, r(x, y)),

et Z
p(x, x) = 1 − p(x, y)dy.
Rd \{x}

Ainsi q(x, ·) est une densité sur Rd , mais p(x, ·) ne l’est pas puisqu’il y a en général un Dirac
au point x. La f -réversibilité de P se traduit en

∀(x, y) ∈ Rd × Rd , f (x)p(x, y) = f (y)p(y, x),

laquelle se vérifie comme dans le cas discret. Ceci implique que f est stationnaire pour le
noyau de transition P , c’est-à-dire que
Z
d
∀y ∈ R , f (y) = f (x)p(x, y)dx.
Rd

6. Dans l’échantillonneur de Gibbs, notons P1 , . . . , Pd les noyaux de transition en jeu, c’est-à-


dire que la transition de x vers x′ peut avoir lieu seulement si x et x′ ne diffèrent que par
une coordonnée, disons ℓ, c’est-à-dire x−ℓ = x′−ℓ , auquel cas ceci arrive avec la densité de
probabilité Pℓ (x, x′ ) = f (x′ℓ |x−ℓ ).
(a) Pour qu’il y ait transition possible entre les points x et x′ via le noyau Pℓ , il faut que
x−ℓ = x′−ℓ . Dès lors, on peut écrire

f (x)Pℓ (x, x′ ) = f (xℓ , x−ℓ )f (x′ℓ |x−ℓ ) = f (x′ℓ , x′−ℓ )f (xℓ |x′−ℓ ) = f (x′ )Pℓ (x′ , x).

Notons que cette égalité est encore vérifiée si x−ℓ 6= x′−ℓ , car dans ce cas Pℓ (x, x′ ) =
Pℓ (x′ , x) = 0. Ceci atteste de la réversibilité de f pour Pℓ . Comme dans le cas discret,
on en déduit que f est invariante par P puisque pour tout x′ , on a
Z Z Z
′ ′ ′ ′
f (x)Pℓ (x, x )dx = f (x )Pℓ (x , x)dx = f (x ) Pℓ (x′ , x)dx = f (x′ ).
Rd Rd Rd

Simulations Monte-Carlo Arnaud Guyader


122 Chapitre 3. Monte-Carlo par Chaînes de Markov

(b) Le balayage aléatoire consiste à tirer d’abord une coordonnée ℓ au hasard entre 1 et
d, puis à changer celle-ci via le noyau Pℓ . Dit succinctement, on a donc un mélange de
noyaux de transitions :
1
P = (P1 + · · · + Pd ) .
d
Par conséquent, pour tout couple (x, x′ ), on a
1 
f (x)P (x, x′ ) = f (x)P1 (x, x′ ) + · · · + f (x)Pd (x, x′ ) ,
d
et comme tous les noyaux sont f -réversibles, il vient
1 
f (x)P (x, x′ ) = f (x′ )P1 (x′ , x) + · · · + f (x′ )Pd (x′ , x) = f (x′ )P (x′ , x),
d
et f est réversible pour P .
(c) Pour le balayage déterministe, on compose les noyaux de transition, ce qui est l’équivalent
continu de la multiplication matricielle. Ainsi on a cette fois

P = Pd ◦ Pd−1 ◦ · · · ◦ P2 ◦ P1 ,

avec, pour tout couple (x, x′′ ), comme pour la multiplication matricielle :
Z
(P ◦ Q)(x, x ) = P (x, x′ )Q(x′ , x′′ )dx′ .
′′

Montrer que si f est stationnaire pour P et pour Q, alors elle l’est aussi pour P ◦ Q ne
pose aucune difficulté : il suffit de penser à f comme à un vecteur propre à gauche pour
la valeur propre 1 à la fois pour la matrice P et pour la matrice Q. En l’espèce, ceci
donne pour tout point x′′ :
Z Z Z 
′′ ′ ′ ′′ ′
f (x)(P ◦ Q)(x, x )dx = f (x) P (x, x )Q(x , x )dx dx,

d’où par Fubini-Tonelli (tout étant positif, la vie est belle),


Z Z Z 
′′
f (x)(P ◦ Q)(x, x )dx = f (x)P (x, x )dx Q(x′ , x′′ )dx′ .

D’une part f est stationnaire pour P donc le terme dans la parenthèse se simplifie :
Z Z
f (x)(P ◦ Q)(x, x )dx = f (x′ )Q(x′ , x′′ )dx′ ,
′′

d’autre part elle l’est aussi pour Q donc cette dernière intégrale se simplifie tout autant
pour aboutir à Z
f (x)(P ◦ Q)(x, x′′ )dx = f (x′′ ),

ce qui montre que f est stationnaire pour P ◦ Q. En revenant au Gibbs à balayage


déterministe, puisque f est stationnaire pour les noyaux P1 , . . . , Pd , elle le reste pour leur
composition. Rien n’assure cependant que f est réversible pour P dans le cas général...

Exercice 3.17 (Modèle d’Ising)


1. Les configurations minimisant l’énergie sont celles pour lesquelles les spins sont tous égaux
à +1 ou à -1, configurations notées S + et S − . Il y a donc deux minima globaux pour V .

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 123

2. Lorsque T → +∞, µT tend vers la mesure uniforme : toutes les configurations deviennent
équiprobables. A contrario, lorsque T → 0, seuls les deux minima globaux auront une
probabilité qui ne s’éteint pas, laquelle tend donc vers 1/2 (principe de Laplace).
3. Le nombre de configurations possibles est 2N ×N , qui correspond à la taille de l’espace
d’états, lequel est donc fini mais immense dès que N n’est pas petit. Dès lors, il est exclu
d’essayer de simuler directement selon µT , d’où le recours à une méthode de type MCMC
dans la suite.
4. Pour passer de S à S (i0 ,j0 ) via Q, il faut et il suffit d’avoir tiré le couple d’indices (i0 , j0 ), la
réciproque étant tout aussi vraie, d’où
1
Q(S, S (i0 ,j0) ) = Q(S (i0 ,j0 ) , S) = .
N2
Nous sommes donc dans le cas symétrique de Metropolis-Hastings, c’est-à-dire dans le cas
de l’algorithme de Metropolis, avec
 
(i0 ,j0 ) µT (S (i0 ,j0 ) ) 1 (i0 ,j0 )
r(S, S )= = exp − V (S − V (S)) ,
µT (S) T

c’est-à-dire  
2Si0 j0 X
r(S, S (i0 ,j0) ) = exp − Sij  ,
T
(i,j)∼(i0 ,j0 )

donc une somme portant sur au plus 4 termes (cela dépend si (i0 , j0 ) est au bord du carré
ou non). La simplification vient du télescopage de tous les termes ne faisant pas intervenir
le point (i0 , j0 ) dans les sommes définissant V (S (i0 ,j0 ) ) et V (S).
5. Soit S et S ′ deux configurations quelconques et n0 le nombre de sites en lesquelles elles
diffèrent. On voit qu’il y a une probabilité non nulle d’aller de S à S ′ en exactement n0
étapes, donc la chaîne est irréductible. Par ailleurs, partant de S + , toute configuration
proposée par Q (laquelle contient donc un seul spin à -1) est moins vraisemblable pour
µT , c’est-à-dire que la probabilité de rester sur place est strictement positive. Ainsi S + est
apériodique, et puisque la chaîne est irréductible, elle est apériodique.
6. Dans l’implémentation qui suit, la bidouille consistant à plonger la matrice S de taille N ×N
dans une matrice auxiliaire Saux de taille (N + 2) × (N + 2) permet d’éviter une discussion
fastidieuse sur le fait que (i0 , j0 ) est au bord du carré ou non.
N=40
T=10^{-1}
n=10^4
Sini=matrix(2*rbinom(N^2,size=1,prob=1/2)-1,nrow=N,ncol=N)
S=Sini

for (k in (1:n)){
Saux=matrix(0,nrow=N+2,ncol=N+2)
Saux[2:(N+1),2:(N+1)]=S # entoure la matrice de 0 (bords, blablabla)
iO=ceiling(N*runif(1)) # indice entre 1 et N
iaux=1+iO # indice entre 2 et N+1 => S[iO,jO]=Saux[iaux,jaux]
jO=ceiling(N*runif(1))
jaux=1+jO
s=Saux[iaux-1,jaux]+Saux[iaux+1,jaux]+Saux[iaux,jaux-1]+Saux[iaux,jaux+1]
r=exp(-2*S[iO,jO]*s/T)

Simulations Monte-Carlo Arnaud Guyader


124 Chapitre 3. Monte-Carlo par Chaînes de Markov

if(runif(1)<r){S[iO,jO]=-S[iO,jO]}}

par(mfrow=c(1,2))
image(1:N,1:N,Sini)
image(1:N,1:N,S)

40

40
30

30
1:N

1:N
20

20
10

10
10 20 30 40 10 20 30 40
1:N 1:N

Figure 3.11 – Modèle d’Ising à basse température après 104 étapes de Metropolis.

7. A haute température, aucun motif n’apparaît, les spins restent “désordonnés” comme dans
la configuration initiale où le tirage est uniforme sur l’ensemble des 2N ×N configurations
possibles. Par contre, à basse température, les spins ont tendance à s’aligner les uns sur
les autres de façon à minimiser l’énergie V , d’où l’apparition de grandes zones alternées de
sable et d’algues rouges...

Exercice 3.18 (Débruitage d’image)


1. Si α > 0 et β = 0, l’unique configuration minimisant V est Σ. Si α = 0 et β > 0, on retrouve
le modèle d’Ising : deux configurations minimisent l’énergie, celle où tous les pixels sont à
1 et celle où tous les pixels sont à -1.
2. Si T → 0, la mesure de probabilité µT tend vers un Dirac en S ⋆ . Si T → +∞, la mesure
de probabilité µT tend vers UC , loi uniforme sur l’ensemble des configurations possibles (il
y en a 2N ×N ).
3. On a Q(S, S (i0 ,j0 ) ) = Q(S (i0 ,j0 ) , S) = 1/N 2 . Le rapport de Metropolis vaut donc
 
1
r(S, S (i0 ,j0 ) ) = exp − V (S (i0 ,j0 ) − V (S))
T
et après simplifications
  
2Si0 j0  X
r(S, S (i0 ,j0 ) ) = exp − 2ασi0 j0 + β Sij  .
T
(i,j)∼(i0 ,j0 )

La somme porte sur au plus 4 termes, selon que (i0 , j0 ) est au bord du carré ou non.
4. Implémentation du recuit simulé :
n=10^4
alpha=1/3
beta=2/3

Arnaud Guyader Simulations Monte-Carlo


3.6. Corrigés 125

N=40
p=0.25
sigma0=matrix(-1,nrow=N,ncol=N)
sigma0[10:30,10:30]=1
bruit=matrix(2*rbinom(N^2,1,1-p)-1,nrow=N,ncol=N)
sigma=sigma0*bruit
S=sigma

for (k in (1:n)){
T=1/k
Saux=matrix(0,nrow=N+2,ncol=N+2)
Saux[2:(N+1),2:(N+1)]=S # entoure la matrice de 0
i0=ceiling(N*runif(1)) # indice entre 1 et N
iaux=1+i0 # indice entre 2 et N+1 => S[iO,jO]=Saux[iaux,jaux]
j0=ceiling(N*runif(1))
jaux=1+j0
s=Saux[iaux-1,jaux]+Saux[iaux+1,jaux]+Saux[iaux,jaux-1]+Saux[iaux,jaux+1]
r=exp(-2*S[i0,j0]*(2*alpha*sigma[i0,j0]+beta*s)/T)
if(runif(1)<r){S[i0,j0]=-S[i0,j0]}}

par(mfrow=c(1,3))
image(1:N,1:N,sigma0)
image(1:N,1:N,sigma)
image(1:N,1:N,S)
40

40

40
30

30

30
1:N

1:N

1:N
20

20

20
10

10

10

10 20 30 40 10 20 30 40 10 20 30 40
1:N 1:N 1:N

Figure 3.12 – Image non bruitée, image initiale, image débruitée par recuit simulé.

Simulations Monte-Carlo Arnaud Guyader


Bibliographie

[1] Søren Asmussen and Peter W. Glynn. Stochastic simulation : algorithms and analysis, vo-
lume 57 of Stochastic Modelling and Applied Probability. Springer, New York, 2007.
[2] Thierry Bodineau. Modélisation de phénomènes aléatoires. Format électronique, 2015.
[3] Thomas M. Cover and Joy A. Thomas. Elements of information theory. John Wiley & Sons
Inc., 1991.
[4] Bernard Delyon. Simulation et Modélisation. Format électronique, 2014.
[5] Luc Devroye. Nonuniform random variate generation. Springer-Verlag, New York, 1986.
[6] Rick Durrett. Essentials of Stochastic Processes. Springer Texts in Statistics. Springer-Verlag,
New York, 1999.
[7] Michel Benaïm et Nicole El Karoui. Promenade aléatoire. Editions de l’Ecole Polytechnique,
2004.
[8] Jean Jacod et Philip Protter. L’essentiel en théorie des probabilités. Cassini, 2003.
[9] Emmanuel Gobet. Méthodes de Monte-Carlo et processus stochastiques : du linéaire au non-
linéaire. Editions de l’Ecole Polytechnique, 2013.
[10] W. K. Hastings. Monte Carlo sampling methods using Markov chains and their applications.
Biometrika, 57(1) :97–109, April 1970.
[11] Makoto Matsumoto and Takuji Nishimura. Mersenne twister : A 623-dimensionally equidis-
tributed uniform pseudo-random number generator. ACM Trans. Model. Comput. Simul.,
8(1) :3–30, January 1998.
[12] N. Metropolis, A. W. Rosenbluth, M. N. Rosenbluth, A. H. Teller, and E. Teller. Equation of
state calculations by fast computing machines. The Journal of Chemical Physics, 21(6) :1087–
1092, 1953.
[13] Roger B. Nelsen. An introduction to copulas. Springer Series in Statistics. Springer, New
York, second edition, 2006.
[14] Harald Niederreiter. Random number generation and quasi-Monte Carlo methods. Society for
Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1992.
[15] James R. Norris. Markov Chains. Cambridge University Press, 1997.
[16] Christian P. Robert and George Casella. Introducing Monte Carlo methods with R. Use R !
Springer, New York, 2010.
[17] Sheldon M. Ross. Simulation. Statistical Modeling and Decision Science. Academic Press,
Inc., San Diego, CA, second edition, 1997.
[18] Bruno Tuffin. La simulation de Monte Carlo. Hermes Science Publications, 2010.
[19] Bernard Ycart. Modèles et algorithmes markoviens. Springer-Verlag, Berlin, 2002.

Vous aimerez peut-être aussi