Académique Documents
Professionnel Documents
Culture Documents
Simulations Monte-Carlo
Arnaud Guyader
Table des matières
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
i
Chapitre 1
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.
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.
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.
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.
Preuve. Soit X = F −1 (U ) et x réel fixé. Montrons que pour tout u ∈]0, 1], on a
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 :
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
Réciproquement, pour tout u ∈]0, 1] et pour tout ε > 0, on a, toujours par (1.2),
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.
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.
Ceci étant acquis, le résultat suivant montre comment simuler suivant la densité f voulue.
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 .
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
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
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
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)
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é
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.
fX,Y (x, y) = fU,V (ϕ−1 (x, y)) × | det Jϕ−1 (x, y)|
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
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
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 Φ.
Γ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.
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,
> library(MASS)
> mvrnorm(1000,m,Gamma)
4
0
−4
−2 −1 0 1 2 3 4 5
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
On rappelle que la fonction de répartition d’un couple (X, Y ) est définie par :
La définition d’une copule est liée à la fonction de répartition d’un couple dont les marginales sont
uniformes.
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).
0.8
z
0.4
u v
0.0
0.0 0.4 0.8
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) = ∞.
0.8
z
0.4
u v
0.0
0.0 0.4 0.8
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
Ceci assure que U suit une loi uniforme, tout comme V . Ainsi C(u, v) définit bien une copule.
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
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.
1 2 √
f (x, y) = √ e−y x/2 e− x 1x>0 .
8π
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 ).
∀n ∈ N P(Y = n) = (1 − λ)λn .
T = F −1 (F (a) + (1 − F (a))U ).
> t0=proc.time()
> runif(1000000)
> proc.time()-t0
Comparer les durées respectives des méthodes des questions précédentes pour n grand.
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 .
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.
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.
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 |.
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
Figure 1.5 – Fonction de répartition d’une loi de Cauchy et son inverse généralisée.
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 .
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
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.
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
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
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.
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.
T = F −1 (F (a) + (1 − F (a))U ).
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
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.
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
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
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)
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
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)
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 .
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
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),
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)
−10 −5 0 5
Figure 1.7 – Histogramme, estimateur de la densité (noir) et densité (rouge) d’un mélange de
gaussiennes.
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 :
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
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,
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’)
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.
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 :
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="")
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 :
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
−0.5
B
−1.5
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
√
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) :
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
√
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")
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ù 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.
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
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 π.
4.0
3.5
3.0
2.5
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.
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.
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 :
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...
où les Yi sont i.i.d. de densité g. Mutatis mutandis, les résultats vus pour Iˆn s’appliquent à nouveau
ici.
avec Z
s2 = Var(w(Y )ϕ(Y )) = w2 (y)ϕ2 (y)g(y)dy − I 2 = E[w(X)ϕ2 (X)] − I 2 .
|ϕ(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
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
n
1X p.s.
I˜n = ψ(Yi ) −−−→ E[ψ(Y )] = E[E[ϕ(X)|Y ]] = I.
n n→∞
i=1
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
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.
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
avec
σj2 = Var(ϕ(X)|X ∈ Xj ) = E ϕ2 (X)|X ∈ Xj − E [ϕ(X)|X ∈ Xj ]2 .
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
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.
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
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
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.
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 :
Pour une suite de Halton en dimension d, on peut montrer que Dn⋆ (ξ) = O((log n)d /n).
0.8
0.8
++ + ++ + + + ++ ++ + ++ ++ + ++ ++ +++ ++ ++ ++ + + ++ ++
+++ + ++++ + ++ +++ ++ + ++ + + + + ++ ++ +++ +
+ + + ++ ++ +++ ++++ + + + ++ + ++ + + + +
++ + +++
+ + + +++ ++
+++
++ +++ +++ + ++ +++ +++++ + +++++ +
+ + ++ ++ ++ + + +++ + ++ + ++ + + ++
+ + +
+ + + + ++ + + ++ +++++ + + + ++ ++ ++++++ ++ ++ ++ + ++ + + ++ + +++++ +
+ ++ + +++++++ ++++++ +++ +++ + + +++
+ + ++ + ++ + + + + ++ + + ++ + +
++ +
+ + +
+ +
++ ++++
+ ++ + ++
+++ + + ++ +++ + ++
+ +
+ +++ + + ++ ++ ++ ++ + ++ + + ++++ +++ +
+
+ + + + + + + + ++ +
+
+ + + +++
+ + +
++ + ++ + +
++ + +
+
+ + ++ ++ ++ ++ + + ++ ++++ ++ + ++ +++ + + + + +
++
0.4
0.4
+ + ++ + + +
++ + + ++ ++ + + +
+ + + + + + ++ + + + +
++
++ + + +++ +++ + ++ ++ + + ++ + +++ ++ + + +
+ + ++ ++ ++ + ++ ++ ++ + + ++ +++ ++ +
+++++ + + + + ++ + ++ + +++
++ + + ++ + + + + + ++ +
++ + + +++ + ++++++ +
+ ++
+ + + + +++ ++ ++ ++ + + ++ +++ + +
++
+ + ++ ++ + + + +
++++ ++
++ + ++ +++ ++ + + +++ ++ + + + ++ ++ + ++ + +++ +
+ + + +
++ + + ++ ++ ++++ ++++ ++ +++ +++ +
++
+ + ++ +++ + ++ ++ ++++ ++ +++ + ++ ++ ++ ++
+ + ++ + + + ++++ + ++ + + ++ + ++ + + + + + ++ + +
+ + + ++ ++ + ++++ ++ + + +++ +
+ ++ +++++ + ++ + + + ++ + + ++ ++ + +++ +++++ +++ ++
+ +++ ++ +++ + + + +++ + ++ + + + ++ ++++ + + +
0.0
0.0
+ + + + + ++ + ++ + + ++ ++
+ + + +++ + ++ +++++++ + + + + + +++ + + + +
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.
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 ).
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 .
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.
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
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.
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.
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
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 .
θ0X (1 − θ0 )N −X
T (X) = −2 log ,
θ̂ X (1 − θ̂)N −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.
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
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
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
Pour la représentation de f /g :
1.0
0.6
0.2
−10 −5 0 5 10
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)
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.
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)
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
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)
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 :
∂ 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 .
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
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,
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%.
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
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
instrumentale (i.e. celle de Y ) une loi à queue plus légère que la loi d’origine (i.e. celle de
X) !
Notons au préalable que la probabilité cherchée peut se calculer facilement (cf. infra) et on
obtient
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.
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
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)
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 .
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 :
4
2
0
−2
−4
−4 −2 0 2 4
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.
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’)
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 )).
ou bien
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
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 à
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 :
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...
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
Le premier terme a déjà été calculé, c’est σ 2 . Pour le second, puisque U et (1− U ) ont même
loi,
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.
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
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.
−10
S
−30
−50
0 10 20 30 40 50 60
1:n
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
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.
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
kπ
1 d 1 − (−1)k 1 − (−1)k
I(k, d) = 2 sin(kπx)dx = − 21 cos(kπx) 0 = = .
0 2 2
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
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
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
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
Plus on prend N grand, plus la densité se concentre autour de la vraie valeur du paramètre
θ0 = 3.
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
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
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
θ0X (1 − θ0 )N −X
T (X) = −2 log ,
θ̂ X (1 − θ̂)N −X
2. Soit x une observation selon la loi B(N, 1/2). La p-value du test est définie par
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
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 →∞
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 − θ̂)
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.
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)
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.
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é
81
82 Chapitre 3. Monte-Carlo par Chaînes de Markov
— 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
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
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 :
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
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
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.
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
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
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.
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.
π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 :
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.
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
3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = j si U ≤ rij , et Xn+1 = Xn = i sinon.
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.
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 :
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 ).
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.
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 :
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.
1 f (x)
q(y, x) = × .
d f (x−ℓ )
f (y)q(y, x)
r(x, y) = = 1,
f (x)q(x, y)
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 !
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
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.
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 ?
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.
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).
7. Faire de même pour T = 10. Interpréter la différence entre les deux figures obtenues.
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.
1 2/3 1/3
0 1 2 3
1/3 2/3 1
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
M M M
X X M j
1= πj = π0 = 2M π0 =⇒ πj = M
.
j 2
j=0 j=0
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.
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
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...
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.
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)
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
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 .
(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.
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
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 ) .
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
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.
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
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.
f (y)q(y, x)
r(x, y) = .
f (x)q(x, y)
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))
12
8
V(x)
6
4
2
0
−2 −1 0 1 2
x
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
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
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)
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
# 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)}
u=runif(n)
# 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
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 .
3. http://toddwschneider.com/posts/traveling-salesman-with-simulated-annealing-r-and-shiny/
où
P(∀k ≤ n, Xk = 1) = P(X0 = 1, X1 = 1, . . . , Xn = 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
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
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
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.
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
1 4
π1 Pd (1, 3) = 6= π3 Pd (3, 1) = .
15 45
Y d
1x1 +···+xd >m
fm (x1 , . . . , xd ) = × λℓ e−λℓ xℓ .
P(X1 + · · · + Xd > m)
ℓ=1
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) ;
0 2 4 6 8
X
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
f (y)q(y, x)
r(x, y) = =⇒ α(x, y) = min(1, r(x, y)).
f (x)q(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
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
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
(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’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′′ ),
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)
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...
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
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é.
[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.