Université Pierre et Marie Curie Master Mathématiques et Applications Spécialité Statistique Simulations Monte-Carlo Arnaud Guyader Année 2016/2017 Premier Semestre Table des matières 1 Génération de variables aléatoires 1.1 Variables uniformes . . . . . . . . 1.2 Méthode d’inversion . . . . . . . 1.3 Méthode de rejet . . . . . . . . . 1.4 Vecteurs aléatoires . . . . . . . . 1.4.1 Conditionnement . . . . . 1.4.2 Changement de variables . 1.4.3 Vecteurs gaussiens . . . . 1.4.4 Copules . . . . . . . . . . 1.5 Exercices . . . . . . . . . . . . . 1.6 Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 4 6 6 7 8 9 12 17 2 Intégration Monte-Carlo 2.1 Exemples et propriétés . . . . . . . . . . . . . . . 2.1.1 Convergence et intervalles de confiance . . 2.1.2 Quelques mots sur l’intégration numérique 2.1.3 Le paradigme bayésien . . . . . . . . . . . 2.2 Réduction de variance . . . . . . . . . . . . . . . 2.2.1 Echantillonnage préférentiel . . . . . . . . 2.2.2 Conditionnement . . . . . . . . . . . . . . 2.2.3 Stratification . . . . . . . . . . . . . . . . 2.2.4 Variables antithétiques . . . . . . . . . . . 2.3 Méthodes Quasi-Monte-Carlo . . . . . . . . . . . 2.4 Exercices . . . . . . . . . . . . . . . . . . . . . . 2.5 Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 35 37 38 39 39 41 42 44 45 48 54 . . . . . . . . 81 81 86 86 87 88 90 92 99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Monte-Carlo par Chaînes de Markov 3.1 Rappels sur les chaînes de Markov . . . . . . . . . . . . 3.2 Algorithme de Metropolis-Hastings . . . . . . . . . . . . 3.2.1 Algorithme de Metropolis . . . . . . . . . . . . . 3.2.2 Généralisation : méthode de Metropolis-Hastings 3.3 Exemple d’application : le recuit simulé . . . . . . . . . 3.4 Echantillonneur de Gibbs . . . . . . . . . . . . . . . . . 3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Corrigés . . . . . . . . . . . . . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 1 Génération de variables aléatoires Introduction Idéalement, une méthode Monte-Carlo repose sur la simulation d’une suite de variables aléatoires (Xn )n≥1 indépendantes et identiquement distribuées (i.i.d.) selon une loi donnée. Ce chapitre expose quelques méthodes pour y parvenir, au moins de façon approchée, en commençant par la loi uniforme, sur laquelle toutes les autres sont basées. 1.1 Variables uniformes Le but est de générer une suite de variables aléatoires (Xn )n≥1 indépendantes et de loi uniforme sur [0, 1]. Ceci est bien entendu impossible sur un ordinateur : d’abord parce que les nombres entre 0 et 1 sont en fait de la forme k/2p avec k ∈ {0, . . . , 2p − 1} ; ensuite parce que vérifier qu’une suite (Xn )n≥1 est bien i.i.d. est une question très délicate. C’est essentiellement l’objet de la théorie de la complexité (voir par exemple [3], Chapitre 7, pour une introduction à ce sujet). En pratique, les logiciels se basent sur une suite dite pseudo-aléatoire qui a la forme Xn = f (Xn−1 ) avec Xn ∈ {0, . . . , 2p − 1}. L’objectif est alors d’obtenir une suite (Xn ) qui ressemble autant que possible à une suite i.i.d. uniforme sur {0, . . . , 2p − 1}. La fonction f étant déterministe, il est clair qu’un tel générateur est périodique. Il existe de nombreuses méthodes pour générer de telles suites et nous ne détaillerons pas ce sujet, nous contentant de mentionner celui utilisé par défaut sous R via la commande runif, à savoir le Mersenne Twister MT-19937 : Xn+1 = AXn (mod 2) où Xn est un vecteur de 19937 bits et A une matrice bien choisie. La variable pseudo-aléatoire Un correspond alors aux 32 derniers bits de Xn . Proposé par Matsumoto et Nishimura en 1998 [11], ce générateur a une période de longueur 219937 − 1 (i.e. le maximum possible vu la taille de Xn et le fait que 0 est un point fixe), lequel est un nombre premier de Mersenne. Notons aussi que si, pour une raison ou une autre, on veut changer de générateur sous R, il suffit de le spécifier avant l’appel à runif via la fonction RNGkind. En voici un exemple pour utiliser un générateur proposé par L’Ecuyer : > set.seed(123) # fixe la graine du générateur > runif(1) # génération par Mersennne Twister [1] 0.2875775 > RNGkind("L’Ecuyer-CMRG") # changement de générateur pseudo-aléatoire > set.seed(123) > runif(1) 1 2 Chapitre 1. Génération de variables aléatoires [1] 0.1663742 > RNGkind("Mersenne-Twister") # retour au générateur par défaut > set.seed(123) > runif(1) [1] 0.2875775 Remarque : Sur cet exemple, le fait de fixer la graine du générateur pseudo-aléatoire par la commande set.seed a simplement permis de vérifier les changements de générateurs. De façon plus générale, cette commande en début de programme peut s’avérer très utile puisqu’elle permet de refaire une simulation dans les mêmes conditions et, le cas échéant, de trouver une erreur dans un code. Dans tout ce cours, nous supposerons donc disposer d’un générateur pseudo-aléatoire “satisfaisant” pour la loi uniforme. La suite de ce chapitre explique alors comment, partant de la loi uniforme, il est possible de générer d’autres lois. 1.2 Méthode d’inversion Cette méthode part d’une propriété élémentaire, souvent vue en Licence dans un premier cours de probabilités. Dit rapidement, soit F une fonction de répartition inversible, alors si U suit une loi uniforme sur [0, 1], la variable aléatoire X = F −1 (U ) a pour fonction de répartition F . En effet, pour tout réel x, P(X ≤ x) = P(F −1 (U ) ≤ x) = P(U ≤ F (x)) = F (x), où l’on a appliqué respectivement l’aspect bijectif de F , sa croissance et la forme spécifique de la fonction de répartition de la loi uniforme. Pour ce qui nous concerne, l’intérêt de ce résultat est manifeste : pour peu que F soit facilement inversible, alors pour générer une variable aléatoire de loi 1 F , il suffit de générer une variable uniforme U et de lui appliquer F −1 . On peut en fait généraliser ceci à des fonctions de répartition non bijectives. Définition 1 (Inverse généralisée) Soit X une variable aléatoire de fonction de répartition F . On appelle inverse généralisée de F , ou fonction quantile de X, la fonction F −1 définie pour tout u ∈]0, 1[ par F −1 (u) = inf{x ∈ R : F (x) ≥ u}. Rappel. Le réel q1/2 := F −1 (1/2) est appelé la médiane de F . De façon générale, lorsque 0 < α < 1, q1−α := F −1 (1 − α) est appelé quantile d’ordre (1 − α) de F . On le rencontre constamment dans les tests d’hypothèses, le plus fameux d’entre eux étant celui associé aux intervalles de confiance à 95% de la loi gaussienne centrée réduite : q0.975 := Φ−1 (0.975) = 1.96 . . . ≈ 2, où Φ est la fonction de répartition de la loi N (0, 1). Si F est inversible, il est clair que cette fonction quantile correspond bien à l’inverse classique de F . A contrario, considérons une variable aléatoire X discrète à valeurs dans l’ensemble fini {x1 < · · · < xm } avec probabilités (p1 , . . . , pm ). Il est facile de vérifier que pour tout u ∈]0, 1[, x1 si 0 < u ≤ p1 x2 si p1 < u ≤ p1 + p2 F −1 (u) = .. . xm si p1 + · · · + pm−1 < u ≤ 1 1. Rappelons que la fonction de répartition caractérise la loi. Arnaud Guyader Simulations Monte-Carlo 1.2. Méthode d’inversion 3 c’est-à-dire F −1 (u) = m X xk 1p1 +···+pk−1 <u≤p1+···+pk . (1.1) k=1 Si l’ensemble des valeurs prises par la variable discrète X n’est pas fini, il suffit de remplacer cette somme par une série. Quoi qu’il en soit, outre que, tout comme F , cette fonction quantile est croissante et en escalier, on notera que, contrairement à F , elle est continue à gauche. Ces propriétés sont en fait vraies de façon générale. Venons-en maintenant aux résultats utiles en simulation. Proposition 1 (Méthode d’inversion) Soit U une variable uniforme sur [0, 1], F une fonction de répartition et F −1 son inverse généralisée. Alors : 1. la variable aléatoire X = F −1 (U ) a pour fonction de répartition F . 2. si X a pour fonction de répartition F et si F est continue, alors la variable aléatoire F (X) est de loi uniforme sur [0, 1]. Preuve. Soit X = F −1 (U ) et x réel fixé. Montrons que pour tout u ∈]0, 1], on a F −1 (u) ≤ x ⇐⇒ u ≤ F (x). (1.2) Par définition de F −1 (u), si u ≤ F (x), alors F −1 (u) ≤ x. Inversement, si F −1 (u) ≤ x, alors pour tout ε > 0 on a F −1 (u) < x + ε, donc par définition de F −1 (u), il vient u ≤ F (x + ε). Puisque F est continue à droite, on en déduit que u ≤ F (x) et l’équivalence (1.2) est établie. Dès lors, la fonction de répartition de X se calcule facilement : P(X ≤ x) = P(F −1 (U ) ≤ x) = P(U ≤ F (x)) = F (x), la dernière égalité venant de ce que, pour tout u ∈ [0, 1], P(U ≤ u) = u. Le premier point est donc prouvé. On l’applique pour le second : la variable Y = F −1 (U ) a même loi que X, donc la variable F (X) a même loi que F (Y ) = (F ◦ F −1 )(U ). Or, d’après (1.2), pour tout u ∈]0, 1], on a F −1 (u) ≤ F −1 (u) =⇒ u ≤ (F ◦ F −1 )(u). Réciproquement, pour tout u ∈]0, 1] et pour tout ε > 0, on a, toujours par (1.2), F −1 (u) − ε < F −1 (u) =⇒ F (F −1 (u) − ε) < u. Etant donné que u ∈]0, 1] et que F est supposée continue en F −1 (u) > 0, le passage à la limite lorsque ε → 0 donne (F ◦ F −1 )(u) ≤ u. Au total, on a donc prouvé que, pour tout u ∈]0, 1], (F ◦ F −1 )(u) = u. En revenant aux variables aléatoires, ceci donne F (Y ) = (F ◦ F −1 )(U ) = U presque sûrement. Exemples : 1. Concernant la seconde propriété, si X suit une loi de Bernoulli de paramètre 1/2, la variable F (X) prend les valeurs 1/2 et 1 de façon équiprobable, donc n’est pas uniforme. 2. Loi exponentielle : Soit λ > 0, alors 1 1 L X = − log(1 − U ) = − log U ∼ E(λ), λ λ loi exponentielle de paramètre λ, c’est-à-dire de densité f (x) = λe−λx 1x≥0 . Malgré sa simplicité, les logiciels n’utilisent pas cette méthode, l’appel au logarithme étant coûteux. Simulations Monte-Carlo Arnaud Guyader 4 Chapitre 1. Génération de variables aléatoires 3. Loi discrète : on reprend l’exemple de la loi discrète ci-dessus. D’après la formule (1.1), il suffit dont de tirer une variable U uniforme et de regarder dans quel intervalle de la forme (p1 + · · · + pk−1 ; p1 + · · · + pk ] elle tombe. Noter que ceci se fait en testant successivement si U > p1 , puis si U > p1 + p2 , etc. Dès lors, dans la mesure du possible, on aura tout intérêt à ranger les pi de façon décroissante pour gagner du temps. 4. Supposons qu’on veuille simuler le résultat d’un dé équilibré : la méthode précédente s’applique, 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 t2 1 √ e− 2 dt Φ(x) = 2π −∞ et dont l’inverse n’admet pas d’expression analytique simple. Dans ce cas, on peut toujours utiliser une approximation tabulée de la fonction quantile. C’est peu ou prou ce qui est fait sous R pour la loi normale. Dans d’autres cas, la méthode de rejet, détaillée en section suivante, peut représenter une alternative judicieuse. 1.3 Méthode de rejet Le contexte est le suivant : on veut simuler une variable aléatoire X de densité f , mais f est trop compliquée pour que ceci puisse se faire directement. On dispose par contre d’une densité auxiliaire g telle que : (a) on sait simuler Y de densité g ; (b) il existe une constante m telle que, pour presque tout x, f (x) ≤ mg(x). Considérons alors deux suites indépendantes de variables aléatoires : (a) (Yn )n≥1 i.i.d. de densité g ; (b) (Un )n≥1 i.i.d. de loi uniforme. Concrètement, Y correspond à une proposition et U à un tirage pile ou face pour décider si on accepte ou non cette proposition. Nous noterons r la fonction rapport d’acceptation pour le pile ou face, à savoir : r(y) = f (y)/(mg(y)) si g(y) > 0, r(y) = 0 sinon. Par ailleurs, f et g étant des densités, la constante m intervenant dans la majoration est bien entendu supérieure à 1 : Z Z Z mg(x)dx = m g(x)dx = m. f (x)dx ≤ 1= R R R Ceci étant acquis, le résultat suivant montre comment simuler suivant la densité f voulue. Proposition 2 (Algorithme de rejet) Soit N = inf{n ≥ 1, Un ≤ r(Yn )} le premier instant où le tirage est accepté et X = YN la valeur de la proposition à cet instant. Alors X a pour densité f . Par ailleurs, N suit une loi géométrique de paramètre 1/m. Remarque. La variable N étant géométrique de paramètre 1/m, elle a pour moyenne m. Concrètement, il faut donc faire en moyenne m essais pour obtenir une seule simulation selon la loi cible f . Dès lors, il s’agira de choisir le couple (g, m) de sorte que m soit aussi proche de 1 que possible. En d’autres termes, on a tout intérêt à choisir une densité g qui ressemble le plus possible à f . Arnaud Guyader Simulations Monte-Carlo 1.3. Méthode de rejet 5 Preuve. Notons F la fonction de répartition associée à la densité f . On a alors P(X ≤ x, N = n) = P(U1 > r(Y1 ), . . . , Un−1 > r(Yn−1 ), Un ≤ r(Yn ), Yn ≤ x). Puisque les n tirages sont i.i.d., ceci s’écrit encore P(X ≤ x, N = n) = (P(U1 > r(Y1 ))n−1 P(Un ≤ r(Yn ), Yn ≤ x). Pour le premier terme, les variables Y1 et U1 étant indépendantes, leur loi jointe est le produit des marginales, ce qui donne par Fubini Z Z 1 1u>r(y) du g(y)dy, P(U1 > r(Y1 )) = E[1U1 >r(Y1 ) ] = 0 R d’où, g et f étant des densités, P (U1 > r(Y1 )) = Z R (1 − r(y))g(y)dy = 1 − Z R r(y)g(y)dy = 1 − 1 . m Par ailleurs, un raisonnement comparable sur le second terme donne Z Z 1 1u≤r(y) du 1y≤x g(y)dy, P(Un ≤ r(Yn ), Yn ≤ x) = E[1Un ≤r(Yn ) 1Yn ≤x ] = R 0 c’est-à-dire P(Un ≤ r(Yn ), Yn ≤ x) = Z 1y≤x R Z x 1 r(y)g(y)dy = r(y)g(y)dy = m −∞ Au total, on a obtenu P(X ≤ x, N = n) = 1 1− m n−1 × Z x f (y)dy = −∞ F (y) . m F (x) . 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é, ∞ F (x) X 1 n−1 = F (x), P(X ≤ x, N = n) = 1− P(X ≤ x) = m n=1 m n=1 ∞ X ce qui prouve que X a bien la loi voulue. Exemple jouet. On veut simuler X de densité f (x) = 3x2 sur [0, 1]. Puisque f (x) ≤ 3, on peut choisir pour g la loi uniforme sur [0, 1] et prendre m = 3, ce qui donne pour le rapport d’acceptation r(x) = f (x) = x2 . mg(x) L’algorithme est alors le suivant : on simule un couple (Y1 , U1 ) de variables uniformes indépendantes : si U1 ≤ Y12 , on pose X = Y1 , sinon on recommence. Le nombre moyen d’essais avant d’obtenir une réalisation de X est donc égal à 3. Cet exemple est “jouet” en ce sens que, dans ce Simulations Monte-Carlo Arnaud Guyader 6 Chapitre 1. Génération de variables aléatoires cas particulier, il vaut mieux appliquer la méthode d’inversion : un calcul immédiat montre en effet que si U est uniforme sur [0, 1], la variable X = U 1/3 a pour densité f . La preuve de la Proposition 2 se déroule tout aussi paisiblement si au lieu de calculer la probabilité P(X ≤ x, N = n), on étudie P(X ∈ A, N = n) pour A borélien quelconque de R. L’intérêt est que cette version s’adapte directement en dimension supérieure. Autrement dit, la méthode de rejet reste valable si f et g sont des densités sur Rd . Voyons un cas particulier d’application. Exemple : simulation d’une loi conditionnelle. Soit B un ensemble (borélien) contenu dans le carré [0, 1] × [0, 1] de R2 . Supposons qu’on veuille simuler des points uniformément dans B mais que, pour tout point x du plan, on ne dispose que d’une fonction boîte noire nous disant si, oui ou non, x est dans B (ce n’est rien d’autre que l’indicatrice de B). L’algorithme de simulation est alors naturel : il suffit de générer des points Yn uniformément dans [0, 1] × [0, 1] jusqu’à l’instant N où l’on tombe dans B. Par le résultat précédent, la variable X est alors uniforme sur B. En effet, dans ce contexte, en notant λ(B) la mesure de Lebesgue de B (i.e. sa surface) et C = [0, 1] × [0, 1], on a, avec des notations évidentes, f (x, y) = 1 1B (x, y) et g(x, y) = 1C (x, y) =⇒ m = et r(x, y) = 1B (x, y). λ(B) λ(B) Le point remarquable de cet exemple est que la constante m est inconnue ! Généralisation. l’idée sous-jacente à l’exemple précédent est généralisable : supposons que f (x) = cf0 (x) où c est une constante de normalisation inconnue, situation récurrente en statistique bayésienne et en physique statistique. Par contre, f0 (x) est calculable et il existe une densité g0 facilement simulable vérifiant f0 (x) ≤ g0 (x) pour presque tout x. Alors il suffit de prendre m = c : la méthode de rejet s’applique et ne nécessite nullement la connaissance de c puisque r(x) = f (x)/(mg(x)) = f0 (x)/g0 (x). Ceci est un grand classique de certaines méthodes MonteCarlo et on le recroisera par exemple dans l’algorithme de Metropolis-Hastings. 1.4 Vecteurs aléatoires Puisqu’il n’existe pas de méthode universelle pour simuler une variable aléatoire de loi donnée, il en va de même pour les vecteurs aléatoires. Nous nous contentons donc de donner ici quelques pistes. 1.4.1 Conditionnement Supposons que l’on veuille simuler un couple aléatoire (X, Y ). Si les deux coordonnées sont indépendantes, on est ramené à ce qui précède puisqu’il suffit de simuler X et Y indépendamment. Si tel n’est pas le cas, on peut éventuellement s’en sortir si, par exemple, X est facilement simulable et si la loi de Y sachant X l’est aussi : il suffit de simuler x selon L(X) puis y selon la loi conditionnelle L(Y |X = x). Dans le cas de variables à densité, ceci est tout simplement basé sur le fait que f (x, y) = f (x) × f (y|x). Exemple. On considère la densité f (x, y) = xe−xy 10<x<1 1y>0 . Il est facile de voir que X suit une loi uniforme sur [0, 1] et que, sachant X = x, Y suit une loi exponentielle de paramètre x. La simulation du couple (X, Y ) est donc triviale. Arnaud Guyader Simulations Monte-Carlo 1.4. Vecteurs aléatoires 1.4.2 7 Changement de variables La formule de changement de variables dans les intégrales doubles permet de déterminer la densité d’un couple aléatoire (U, V ) à partir de celle d’un couple aléatoire (X, Y ) lorsque ceux-ci sont en bijection. Théorème 1 (Changement de variables) Soit (U, V ) un couple aléatoire de densité fU,V . Soit ϕ : R2 → R2 un C 1 -difféomorphisme tel que (x, y) = ϕ(u, v). Alors le couple aléatoire (X, Y ) admet pour densité fX,Y (x, y) = fU,V (ϕ−1 (x, y)) × | det Jϕ−1 (x, y)| si le point (x, y) est dans l’image de ϕ, 0 sinon. Rappelons que Jϕ−1 (x, y) désigne la matrice jacobienne de l’application inverse de ϕ au point (x, y) et que, par analogie avec la formule vue au lycée (f −1 )′ (x) = 1/f ′ (f −1 (x)), on a 1 det Jϕ−1 (x, y) = det Jϕ (ϕ−1 (x, y)) avec formellement Jϕ = ∂x ∂u ∂y ∂u ∂x ∂v ∂y ∂v . Une application classique en Monte-Carlo est donnée par l’algorithme suivant. Exemple : algorithme de Box-Muller. Soit (U, V ) un couple de variables i.i.d. de loi uniforme sur [0, 1]. Alors les variables X et Y définies par √ X = √ −2 log U × cos(2πV ) Y = −2 log U × sin(2πV ) x 0 −3 −2 −1 y −3 −2 −1 0 Y z 1 1 2 2 3 3 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 −1 1 2 3 −4 −2 0 2 X Figure 1.1 – Densité, lignes de niveaux et échantillon de la loi normale standard. Remarque. La méthode de Box-Muller semble parfaite pour générer des variables gaussiennes. En fait, elle n’est pas utilisée en pratique en raison de l’appel à des fonctions coûteuses en temps de calcul (logarithme, cosinus et sinus). Comme mentionnée précédemment, la génération de gaussiennes est souvent plutôt basée sur une méthode d’inversion approchée de la fonction de répartition Φ. Simulations Monte-Carlo Arnaud Guyader 8 Chapitre 1. Génération de variables aléatoires 1.4.3 Vecteurs gaussiens Rappelons que si X = [X1 , . . . , Xd ]′ est un vecteur aléatoire dont les composantes admettent toutes des moments d’ordre 2, l’espérance du vecteur X est définie par E[X] = [E[X1 ], . . . , E[Xd ]]′ et sa matrice de covariance (ou de dispersion) Γ est la matrice d × d symétrique semi-définie positive de terme générique Γi,j = Cov(Xi , Xj ) = E[(Xi − E[Xi ])(Xj − E[Xj ])] = E[Xi Xj ] − E[Xi ]E[Xj ]. Par ailleurs, si A est une matrice d0 × d et b un vecteur de taille d0 , tous deux déterministes, le vecteur aléatoire Y = AX + b admet pour espérance E[Y ] = AE[X] + b et pour matrice de covariance ΓY = AΓA′ . D’autre part, un vecteur X = [X1 , · · · , Xd ]′ est dit gaussien si toute combinaison linéaire de ses variables est gaussienne, c’est-à-dire si pour tout d-uplet de coefficients (α1 , . . . , αd ), la variable α1 X1 + · · · + αd Xd est gaussienne. Du point de vue de la simulation, les vecteurs gaussiens ont un double intérêt : d’une part, ils sont complètement caractérisés par moyenne et dispersion, d’autre part ils sont stables par transformation affine. C’est ce que résume le résultat suivant. Proposition 3 (Transformation affine d’un vecteur gaussien) Soit X ∼ N (m, Γ) un vecteur gaussien de dimension d, A une matrice d0 × d et b un vecteur de taille d0 , tous deux déterministes, alors le vecteur aléatoire Y = AX + b est gaussien, avec plus précisément : Y ∼ N (Am + b, AΓA′ ). Supposons maintenant qu’on veuille simuler un vecteur aléatoire gaussien X ∼ N (m, Γ) dans Rd , m et Γ étant donnés. Soit R une racine carrée de Γ, c’est-à-dire une matrice d×d vérifiant Γ = RR′ . La matrice Γ étant semi-définie positive, elle se diagonalise en base orthonormée, c’est-à-dire sous la forme Γ = P ∆P ′ avec P ′ = P −1 et Γ = diag(λ1 , . . . , λd ), les valeurs propres λi étant toutes positives ou nulles. Il suffit donc de prendre p p √ √ (1.3) avec ∆ = diag( λ1 , . . . , λd ). R=P ∆ Si Γ est définie positive, on peut aller plus vite via la méthode de Choleski, qui fournit une matrice R triangulaire inférieure vérifiant cette propriété. Bref, une racine carrée étant obtenue, il suffit de partir d’un vecteur gaussien centré réduit, donc facile à simuler, pour arriver à nos fins. En effet, en vertu de la proposition précédente, X0 ∼ N (0, Id ) =⇒ X = RX0 + m ∼ N (m, Γ), et l’affaire est dans le sac. Exemple. Sous R, le calcul d’une racine carrée est effectué comme expliqué en (1.3) et la génération de vecteurs gaussiens se fait très simplement par l’appel préalable à la librairie MASS : > library(MASS) > mvrnorm(1000,m,Gamma) génère 1000 vecteurs m et de matrice de dispersion Γ. Ceci est illustré figure gaussiens de moyenne 2 1 1 1.2 pour m = et Γ = . Voir aussi l’exercice 1.12. 1 1 4 Arnaud Guyader Simulations Monte-Carlo 9 −4 0 4 1.4. Vecteurs aléatoires −2 −1 0 1 2 3 4 5 Figure 1.2 – Echantillon de 1000 points suivant la loi N (m, Γ). 1.4.4 Copules Tout ce qui suit est exposé en dimension 2, mais la généralisation en dimension supérieure se fait sans problème. Pour des compléments sur toute cette section, on pourra se reporter à [13]. Pour un couple aléatoire (X, Y ), l’idée des copules est de séparer la dépendance entre les variables X et Y de leurs lois marginales. Commençons par en donner une définition analytique. Définition 2 (Copule) Une copule est une fonction C : [0, 1]2 → [0, 1] vérifiant : — pour tout 0 ≤ u, v ≤ 1, on a C(u, 0) = C(0, v) = 0 ; — pour tout 0 ≤ u, v ≤ 1, on a C(u, 1) = u et C(1, v) = v ; — 2-croissance : si 0 ≤ u1 ≤ u2 ≤ 1 et 0 ≤ v1 ≤ v2 ≤ 1, alors C(u2 , v2 ) − C(u1 , v2 ) − C(u2 , v1 ) + C(u1 , v1 ) ≥ 0. On rappelle que la fonction de répartition d’un couple (X, Y ) est définie par : ∀(x, y) ∈ R × R F (x, y) = P(X ≤ x, Y ≤ y). La définition d’une copule est liée à la fonction de répartition d’un couple dont les marginales sont uniformes. Proposition 4 (Copule et fonction de répartition) Une fonction C : [0, 1]2 → [0, 1] est une copule si et seulement si C est la fonction de répartition d’un couple (U, V ) tel que U et V suivent chacune une loi uniforme sur [0, 1], autrement dit : C(u, v) = P(U ≤ u, V ≤ v), avec U ∼ U[0,1] et V ∼ U[0,1] . Exemples : dans tout ce qui suit, on considère 0 ≤ u, v ≤ 1. Voir l’exercice 1.17 pour les représentations. — copule comonotone : si U ∼ U[0,1] alors V = U ∼ U[0,1] et C(u, v) = min(u, v). — copule anti-comonotone : si U ∼ U[0,1] alors V = 1−U ∼ U[0,1] et C(u, v) = max(u+v−1, 0). Simulations Monte-Carlo Arnaud Guyader Chapitre 1. Génération de variables aléatoires 0.4 z 0.8 10 v 0.0 u 0.0 0.4 0.8 Figure 1.3 – Copule indépendante c(u, v) = uv et lignes de niveaux. — copule indépendante : si U ∼ U[0,1] et V ∼ U[0,1] , avec U et V indépendantes, alors C(u, v) = uv (voir figure 1.3). Le fait qu’une copule permette de séparer la loi jointe des lois marginales est illustré par le résultat suivant. Théorème 2 (Théorème de Sklar (1959)) Soit (X, Y ) un couple aléatoire de fonction de répartition F , avec X de fonction de répartition FX et Y de fonction de répartition FY . Alors il existe une copule C telle que ∀(x, y) ∈ R × R F (x, y) = C(FX (x), FY (y)). De plus, si FX et FY sont continues, la copule C est unique et définie par : ∀ 0 ≤ u, v ≤ 1 C(u, v) = F (FX−1 (u), FY−1 (v)), où FX−1 et FY−1 sont les inverses généralisées de X et Y . Exemple : copule gaussienne. Si (X, Y ) est un couple gaussien centré tel que Var(X) = Var(Y ) = 1 et Cov(X, Y ) = ρ ∈] − 1, 1[, alors la copule gaussienne de paramètre ρ est définie par 2 Z Φ−1 (u) Z Φ−1 (v) 1 x − 2ρxy + y 2 p C(u, v) = dxdy, exp − 2(1 − ρ2 ) 2π 1 − ρ2 −∞ −∞ où Φ−1 est la réciproque de Φ, fonction de répartition de la loi normale centrée réduite (voir figure 1.4). Une famille classique est celle des copules archimédiennes. Si X est une variable aléatoire positive, la fonction ϕ(λ) = E[e−λX ] est appelée transformée de Laplace de X. Elle est dérivable sur ]0, ∞[ avec ϕ(λ) = −E[Xe−λX ]. Dès lors, si X est strictement positive, ϕ est strictement décroissante et établit une bijection de [0, ∞[ dans ]0, 1]. On note ϕ−1 sa fonction réciproque, avec les conventions ϕ(∞) = 0 et ϕ−1 (0) = ∞. Arnaud Guyader Simulations Monte-Carlo 11 0.4 z 0.8 1.4. Vecteurs aléatoires v 0.0 u 0.0 0.4 0.8 Figure 1.4 – Copule gaussienne de paramètre ρ = 3/4 et lignes de niveaux. Proposition 5 (Copule archimédienne) Soit X une variable aléatoire strictement positive, de transformée de Laplace ϕ. La fonction C : [0, 1]2 → [0, 1] définie par ∀ 0 ≤ u, v ≤ 1 C(u, v) = ϕ(ϕ−1 (u) + ϕ−1 (v)) est une copule, dite copule archimédienne associée à la loi de X. Si U1 et U2 sont uniformes sur [0, 1] et indépendantes, et si X a pour transformée de Laplace ϕ, alors le couple (U, V ) défini par U = ϕ(− X1 log U1 ) et V = ϕ(− X1 log U2 ) a des marges uniformes et pour copule C. Preuve. Le couple (U, V ) est bien à valeurs dans [0, 1] × [0, 1]. Pour 0 ≤ u, v ≤ 1, on a 1 1 P(U ≤ u, V ≤ v) = P ϕ(− log U1 ) ≤ u, ϕ(− log U2 ) ≤ v . X X La décroissance de ϕ−1 et la positivité de X donnent alors −1 −1 P(U ≤ u, V ≤ v) = P U1 ≤ e−ϕ (u)X , U2 ≤ e−ϕ (v)X . Il suffit de conditionner par rapport à X : i h i h −1 −1 −1 −1 P(U ≤ u, V ≤ v) = E P U1 ≤ e−ϕ (u)X X P U2 ≤ e−ϕ (v)X X = E e−(ϕ (u)+ϕ (v))X , et par définition de la transformée de Laplace : P(U ≤ u, V ≤ v) = ϕ(ϕ−1 (u) + ϕ−1 (v)) = C(u, v). Dès lors, puisque ϕ−1 (1) = 0, on a pour 0 ≤ u ≤ 1, P(U ≤ u) = P(U ≤ u, V ≤ 1) = ϕ(ϕ−1 (u) + ϕ−1 (1)) = ϕ(ϕ−1 (u)) = u. Ceci assure que U suit une loi uniforme, tout comme V . Ainsi C(u, v) définit bien une copule. Simulations Monte-Carlo Arnaud Guyader 12 Chapitre 1. Génération de variables aléatoires Exemple : copule de Clayton. Si X ∼ E(1), alors ϕ(λ) = 1/(1 + λ) donc ϕ−1 (u) = (1 − u)/u et la copule associée à la loi exponentielle, dite copule de Clayton, est C(u, v) = 1 1 u + 1 v −1 . La Proposition 5 donne un façon très simple de simuler une telle copule. Simulation. D’après le Théorème de Sklar, un couple aléatoire (X, Y ) est complètement caractérisé par la donnée de sa copule et de ses lois marginales. Considérons donc C, FX et FY données et supposons qu’on veuille simuler une réalisation de ce couple. D’après ce qui précède, il “suffit” de : 1. simuler (U, V ) de lois marginales uniformes et de copule C ; 2. calculer X = FX−1 (U ) et Y = FY−1 (V ). 1.5 Exercices Exercice 1.1 (Loi de Cauchy) On rappelle que X suit une loi de Cauchy standard si elle a pour densité f (x) = 1 π(1 + x2 ) Grâce à la méthode d’inversion, donner un moyen simple de simuler une telle loi. Exercice 1.2 (Loi de Pareto) Soient xm et α deux réels strictement positifs. Déterminer la densité de la variable X= xm , U 1/α où U suit une loi uniforme sur [0, 1]. On dit que X suit une loi de Pareto de paramètres (xm , α). Exercice 1.3 (Conditionnement et inversion) On considère le couple (X, Y ) de densité f (x, y) = yxy−1 e−y 1y>0 10<x<1 . 1. Quelle est la loi de Y ? 2. En déduire la loi de X sachant Y = y, puis P(X ≤ x|Y = y). 3. Proposer une méthode de simulation du couple (X, Y ). Exercice 1.4 (Conditionnement) On considère le couple (X, Y ) de densité √ 1 2 f (x, y) = √ e−y x/2 e− x 1x>0 . 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 ). Exercice 1.5 (Maximum) Soit X et Y deux variables indépendantes de fonctions de répartition FX et FY . Arnaud Guyader Simulations Monte-Carlo 1.5. Exercices 13 1. Quelle est la fonction de répartition de la variable T = max(X, Y ) ? 2. En déduire une façon de générer une variable aléatoire de fonction de répartition F (t) = min(t, 1) 1 − e−t 1t>0 . 3. Tracer la densité de cette variable. Exercice 1.6 (Rejet optimisé) On veut simuler une loi normale N (0, 1) en utilisant comme proposition une loi de Laplace de paramètre λ > 0, c’est-à-dire de densité g(x) = λ −λ|x| e . 2 Déterminer la valeur de λ qui permet de minimiser la probabilité de rejet. Vérifier que cette dernière vaut environ 0,24. Exercice 1.7 (Rejet discret) Soit λ ∈]0, 1[ fixé. 1. Utiliser la méthode de rejet pour simuler une variable X de Poisson de paramètre λ à partir d’une variable Y de loi ∀n ∈ N P(Y = n) = (1 − λ)λn . 2. Comment simuler simplement Y ? 3. Quelle est la probabilité de rejet ? Exercice 1.8 (Loi uniforme sur le disque) Proposer une méthode de rejet pour simuler une variable uniforme sur le disque unité sans utiliser de fonctions trigonométriques. Exercice 1.9 (Rejet et conditionnement) Soit X une variable aléatoire de fonction de répartition F supposée inversible. 1. Comment simuler la loi de X conditionnellement à X > a à l’aide d’une méthode de rejet ? Que se passe-t-il lorsque a devient grand ? 2. Soit U une variable de loi uniforme sur [0, 1] et T définie par T = F −1 (F (a) + (1 − F (a))U ). Déterminer la fonction de répartition de T et en déduire une méthode de simulation de X conditionnellement à X > a. Comparer à la méthode de la question précédente. 3. Soit a > 0 fixé. On suppose que l’on cherche à simuler X de loi gaussienne centrée réduite conditionnellement à X > a. Proposer une méthode de rejet basée sur la loi exponentielle translatée de densité gλ (x) = λe−λ(x−a) 1x>a . Comment choisir le paramètre λ ? Exercice 1.10 (Durée d’une simulation) 1. On veut générer n = 1000 variables exponentielles de paramètre 1. Utiliser la méthode d’inversion vue en cours, tracer l’histogramme et superposer la densité théorique. 2. Même question avec les fonctions dédiées rexp et dexp sous R. 3. Interpréter les commandes suivantes : Simulations Monte-Carlo Arnaud Guyader 14 Chapitre 1. Génération de variables aléatoires > t0=proc.time() > runif(1000000) > proc.time()-t0 Comparer les durées respectives des méthodes des questions précédentes pour n grand. Exercice 1.11 (Lien géométrique/exponentielle) Soit 0 < p < 1 et X une variable aléatoire suivant une loi géométrique G(p). 1. Rappeler la loi de X et son espérance. 2. Soit (Bn )n≥1 une suite de variables i.i.d. selon une loi de Bernoulli B(p). Comment obtenir une loi géométrique à partir de celles-ci ? 3. Proposer un moyen de simuler B1 à partir d’une variable uniforme U1 sur [0, 1]. En déduire une simulation de X à partir de lois uniformes pour p = 1/3. Retrouver par simulation l’espérance de la loi géométrique. Que se passe-t-il lorsque p est proche de 0 ? 4. Soit λ > 0 et T une variable aléatoire suivant une loi exponentielle E(λ). Soit X = ⌈T ⌉ la partie entière par excès de T (i.e. ⌈0.4⌉ = 1 et ⌈2⌉ = 2). Quelles valeurs peut prendre X ? Avec quelles probabilités ? En déduire un nouveau moyen de générer une loi géométrique G(p). Comparer la vitesse de cette méthode à celle de la question 3 ainsi qu’à celle de rgeom. Exercice 1.12 (Nul n’est censé ignorer la loi normale) 1. Utiliser la méthode vue en exercice 1.6 pour simuler une loi normale centrée réduite à partir d’une loi de Laplace. Estimer le temps nécessaire pour simuler un million de gaussiennes avec cette méthode. 2. Comparer la méthode précédente à celle de Box-Muller. 3. Comparer à celle implémentée sous R via rnorm. 4. Simuler n = 1000 réalisations d’une loi normale multivariée N (m, Γ) avec 1 1 2 . et Γ= m= 1 4 1 Retrouver approximativement m et Γ à partir de cet échantillon. Exercice 1.13 (Méfiez-vous des mélanges !) On considère une variable X de densité (x+3)2 (x−3)2 1 2 f (x) = √ e− 8 + √ e− 2 . 6 2π 3 2π 1. Représenter la fonction f . 2. En voyant f comme un mélange de lois, proposer une méthode de simulation de X. 3. Représenter sur un même graphique un histogramme de réalisations de X et la densité f . Exercice 1.14 (Comparaison de méthodes) Soit X une variable de fonction de répartition F telle que F (x) = 0 si x ≤ 0, F (x) = 1 si x ≥ 1, et pour tout x ∈ [0, 1] : 1 F (x) = (x + x2 ). 2 (1.4) 1. Comment simuler X par la méthode d’inversion ? Implémenter cette méthode pour simuler n = 10000 réalisations de X. Sur un même graphe, représenter la vraie densité f sur [0, 1] et un estimateur de la densité obtenu à partir de cet échantillon. Arnaud Guyader Simulations Monte-Carlo 1.5. Exercices 15 2. Majorer la densité de X et en déduire une façon de simuler X par la méthode de rejet. Implémenter cette méthode pour simuler n = 10000 réalisations de X. 3. Soit f une densité qui se décompose sous la forme f (x) = pf1 (x) + (1 − p)f2 (x), où p ∈]0, 1[ est connu, et f1 et f2 sont deux densités selon lesquelles on sait simuler. (a) Expliquer comment simuler une variable aléatoire X ayant pour densité f . (b) En déduire une façon de simuler une variable X ayant la fonction de répartition donnée par (1.5). Implémenter cette méthode pour simuler n = 10000 réalisations de X. 4. Des trois méthodes précédentes, laquelle choisiriez-vous si vous devez simuler un très grand nombre de variables suivant la loi de X ? Exercice 1.15 (Loi géométrique conditionnelle) Soit p ∈]0, 1[ fixé et X une variable aléatoire suivant une loi géométrique de paramètre p. On se fixe de plus un entier m ∈ N∗ et on s’intéresse à la loi de X conditionnellement à X > m, notée L(X|X > m). 1. Proposer une méthode de rejet pour simuler une réalisation de Y ∼ L(X|X > m). Quelle est la probabilité de rejet ? Quel est l’inconvénient de cette méthode ? 2. Donner la loi de Z = X + m, son espérance et sa variance. En déduire une nouvelle méthode de simulation suivant la loi L(X|X > m). 3. On veut retrouver I = E[X|X > m] par simulation. On fixe p = 1/6 et m = 12. Utiliser la question 2 pour tracer un estimateur Iˆn en fonction de n, pour n allant par exemple de 1 à 1000, les intervalles de confiance à 95% et la droite horizontale y = I (en rouge). 4. Par rapport à la méthode de la question 1, toujours pour p = 1/6 et m = 12, par quel facteur en moyenne a-t-on divisé le temps de calcul ? Exercice 1.16 (Loi Gamma) On veut générer une variable X suivant une loi Gamma Γ(3/2, 1), c’est-à-dire de densité 2 f (x) = √ x1/2 e−x 1x>0 . π 1. On utilise une technique de rejet avec comme loi de proposition une exponentielle E(2/3) de densité notée g. Déterminer m = supx>0 f (x)/g(x). Quelle est le nombre moyen de simulations de la loi exponentielle pour aboutir à une réalisation de la loi Gamma ? 2. Représenter sur un même graphique un histogramme de réalisations de X (obtenues par cette méthode de rejet) et la densité f . 3. Intuitivement, qu’est-ce qui a guidé le choix du paramètre 2/3 comme paramètre de l’exponentielle ? On peut justifier cette intuition : considérer comme proposition la densité gλ d’une exponentielle E(λ) et déterminer la valeur optimale de λ en terme de probabilité de rejet. Exercice 1.17 (Représentation et simulation de copules) Rappelons que pour visualiser une surface z = f (x, y) sur [0, 1] × [0, 1], une méthode consiste à implémenter la fonction f , discrétiser x et y, appliquer z=outer(x,y,f) si f est vectorisable puis, via le package rgl, la commande rgl.surface(x,y,z). On peut aussi utiliser persp(x,y,z) ou contour(x,y,z). 1. Représenter les surfaces associées aux copules comonotone C(u, v) = min(u, v), anti-comonotone C(u, v) = max(u + v − 1, 0), indépendante C(u, v) = uv, de Clayton, et gaussienne de paramètre ρ = 1/2. Pour cette dernière, on pourra faire appel à la fonction pmvnorm du package mvtnorm. Simulations Monte-Carlo Arnaud Guyader 16 Chapitre 1. Génération de variables aléatoires 2. On veut simuler deux nuages de 1000 points dont chaque marge suit une loi gaussienne centrée réduite. Sur la même fenêtre graphique, représenter à gauche un tel échantillon pour la copule gaussienne de paramètre ρ = 1/2, et à droite pour la copule de Clayton. 3. On veut simuler deux nuages de 1000 points dont chaque marge suit une loi de Laplace. Sur la même fenêtre graphique, représenter à gauche un tel échantillon pour la copule gaussienne de paramètre ρ = 1/2, et à droite pour la copule indépendante. Exercice 1.18 (Mouvement brownien, pont brownien) Un mouvement brownien ou processus de Wiener (Wt )t≥0 peut être caractérisé par : W0 = 0, les trajectoires de t 7→ Wt sont presque sûrement continues, Wt est à incréments indépendants avec, pour tout 0 ≤ s ≤ t, Wt − Ws ∼ N (0, t − s). 1. On veut simuler de façon approchée un mouvement brownien entre les dates t = 0 et t = 1. Simuler n = 100 variables gaussiennes et en déduire des réalisations de Wt pour t ∈ {1/100, . . . , 99/100, 1} (on pourra utiliser la fonction cumsum). Représenter la trajectoire avec en abscisse le temps et en ordonnée Wt , les points (t, Wt ) étant reliés par des segments. Idem avec n = 104 . 2. En dimension 2, un processus (Wt )t≥0 = (Wtx , Wty )t≥0 est un mouvement brownien si (Wtx )t≥0 et (Wty )t≥0 sont deux mouvements browniens indépendants. Simuler et représenter une trajectoire (Wt )0≤t≤1 à partir de n = 100 points. Idem avec n = 104 points. Marquer l’origine d’un point rouge. 3. On revient en dimension 1 et on considère un mouvement brownien (Wt )t≥0 . Le processus (Bt )t≥0 défini par Bt = Wt − tW1 est appelé pont brownien. Utiliser la question 1 pour représenter des trajectoires d’un pont brownien. 4. Soit (Un )n≥1 une suite de variables i.i.d. uniformes sur [0, 1], (Fn )n≥1 la suite des fonctions de répartition empirique et kFn − F k∞ la distance du sup entre Fn et la fonction de répartition F de la loi uniforme. Le théorème de Kolmogorov-Smirnov dit que, en notant (Bt )t≥0 un pont brownien, √ L nkFn − F k∞ −−−→ sup |Bt |. n→∞ 0≤t≤1 La loi de droite est connue sous le nom de loi de Kolmogorov-Smirnov. (a) Pour n = 100, à l’aide de l’argument type=”s”, représenter la fonction n n i=1 j=1 Xj 1X 1]−∞,x](Ui ) = 1 (x), Fn (x) = n n [U(j,n) ,U(j+1,n) [ 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 kFn − F k∞ j j − 1 , U , − = max max U(j,n) − 1≤j≤n n (j,n) n √ construire un échantillon de taille 1000 selon la loi nkFn − F k∞ . Sur un même graphique, représenter un estimateur de la densité de cet échantillon et un estimateur de la densité d’un échantillon de taille 1000 de la loi de sup0≤t≤1 |Bt |. Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 1.6 17 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 = + arctan x. F (x) = 2 2 π −∞ π(1 + x ) 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 −6 −2 Q(u) 2 0.6 0.2 F(x) 6 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. −4 −2 0 2 4 0.2 x 0.4 0.6 0.8 u Figure 1.5 – Fonction de répartition d’une loi de Cauchy et son inverse généralisée. Exercice 1.2 (Loi de Pareto) La variable X prend des valeurs supérieures à xm et pour tout x ≥ xm , sa fonction de répartition vaut x α x α m m =1− . F (x) = P(X ≤ x) = P U ≥ x x Il ne reste plus qu’à dériver pour en déduire la densité de X : f (x) = α xαm 1x≥xm . xα+1 Cette loi est à la base du principe des 80-20 connu en sciences sociales. De même que la loi de Cauchy, elle fait partie des lois à queues épaisses : vitesse polynomiale de décroissance vers 0 à l’infini, et non exponentielle. Exercice 1.3 (Conditionnement et inversion) On considère le couple (X, Y ) de densité f (x, y) = yxy−1 e−y 1y>0 10<x<1 . Simulations Monte-Carlo Arnaud Guyader 18 Chapitre 1. Génération de variables aléatoires 1. La densité de Y s’obtient en marginalisant par rapport à x, ce qui donne ici Z 1 f (x, y)dx = e−y 1y>0 , f (y) = 0 et Y suit donc une loi exponentielle de paramètre 1. 2. La densité conditionnelle de X sachant Y = y vaut donc pour tout y > 0 fixé f (x|y) = yxy−1 10<x<1 , d’où il vient pour la fonction de répartition conditionnelle, pour tout x entre 0 et 1 : Z x f (x|y)dx = xy . P(X ≤ x|Y = y) = 0 3. La variable y étant fixée, on peut inverser cette fonction de répartition conditionnelle et appliquer la méthode d’inversion. Puisque u = xy ⇐⇒ x = u1/y , on en déduit que pour simuler une réalisation du couple (X, Y ), il suffit de commencer par générer Y suivant une loi exponentielle de paramètre 1 (vu en cours) puis à générer U suivant une loi uniforme sur [0, 1] et enfin à poser X = U 1/Y . Exercice 1.4 (Conditionnement) On considère le couple (X, Y ) de densité √ 1 2 f (x, y) = √ e−y x/2 e− x 1x>0 . 8π 1. Pour déterminer la loi de Y sachant X = x, on commence par calculer la densité de X. On reconnaît une gaussienne centrée en faisant apparaître ce qu’il faut pour caler la variance : Z +∞ √ Z +∞ √ 1 −√ x 2 1 x √ e−y x/2 dx = √ e− x 1x>0 . 1x>0 f (x, y)dy = √ e f (x) = 2 x 2 x 2π −∞ −∞ Il s’ensuit que pour tout x > 0, √ x 2 f (y|x) = √ e−y x/2 =⇒ L(Y |X = x) = N (0, 1/x). 2π √ 2. Calculons par exemple la fonction de répartition de la variable X, avec pour tout r > 0, Z r2 Z r2 √ √ 1 2 √ e− x dx = 1 − e−r , F (r) = P( X ≤ r) = P(X ≤ r ) = f (x)dx = 2 x 0 0 √ et X suit une loi exponentielle de paramètre 1. 3. Pour simuler le couple (X, Y ) : on simule E ∼ E(1), puis on considère X = E 2 et on simule Y ∼ N (0, 1/X). Exercice 1.5 (Maximum) Soit X et Y deux variables indépendantes de fonctions de répartition FX et FY . 1. La fonction de répartition de la variable T = max(X, Y ) se déduit facilement de celles de X et Y en tenant compte de l’indépendance des variables X et Y : FT (t) = P(T ≤ t) = P(X ≤ t, Y ≤ t) = P(X ≤ t)P(Y ≤ t) = FX (t)FY (t). Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 19 2. Si X ∼ U[0,1] , Y ∼ E(1) et T = max(X, Y ), alors on a exactement FT (t) = F (t) = min(t, 1) 1 − e−t 1t>0 . Il suffit donc de générer une uniforme, une exponentielle et de prendre le maximum des deux résultats obtenus pour obtenir une réalisation de T . 3. La dérivation donne si t ≤ 0 0 −t f (t) = 1 + (t − 1)e si 0 ≤ t < 1 −t e si t ≥ 1 0.8 0.0 0.4 f(t) 0.4 0.0 F(t) 0.8 qui admet une discontinuité en t = 1 (voir figure 1.6). 0.0 0.5 1.0 1.5 2.0 0.0 t 0.5 1.0 1.5 2.0 t Figure 1.6 – Fonction de répartition et densité du max d’une uniforme et d’une exponentielle. Exercice 1.6 (Rejet optimisé) En notant f la densité de la loi normale N (0, 1), commençons par noter que pour une méthode de rejet basée sur le couple (g, m) vérifiant pour tout x, f (x) ≤ mg(x), la probabilité de rejet est la proba qu’une loi géométrique de paramètre 1/m soit strictement supérieure à 1, c’est-à-dire 1 − 1/m. Minimiser la probabilité de rejet revient donc à minimiser m. Autrement dit, on cherche le couple de paramètres (λ, m) tel que f ≤ mg avec m minimal. Pour ceci, notons que par symétrie, 2 λ 1 2 λ 1 ∀x ∈ R, √ e−x /2 ≤ m e−λ|x| ⇐⇒ ∀x ≥ 0, √ e−x /2 ≤ m e−λx 2 2 2π 2π ceci étant encore équivalent à m ≥ sup x≥0 Simulations Monte-Carlo r 2 1 λx−x2 /2 e = π λ r 2 1 λ2 /2 e = ϕ(λ). π λ Arnaud Guyader 20 Chapitre 1. Génération de variables aléatoires Il reste à minimiser la fonction ϕ sur (0, +∞), ce qui est équivalent à minimiser son logarithme, ce qui donne λ = 1. Il suffit ensuite de prendre r r 1 2e π =⇒ 1 − =1− ≈ 0.24. m = ϕ(1) = π m 2e Remarques : 1. Pour appliquer cet algorithme de rejet, il faut donc commencer par simuler Y suivant une loi de Laplace de paramètre 1. Il y a plusieurs possibilités : la méthode générique consiste à appliquer la méthode d’inversion. Partant de la fonction de répartition 1 y 1 −y F (y) = e 1y<0 + 1 − e 1y≥0 , 2 2 on en déduit son inverse F −1 (u) = log(2u)10<u<1/2 − log(2(1 − u))11/2≤u<1 . Il suffit donc de tirer U ∼ U[0,1] puis de poser Y = F −1 (U ). On peut aussi voir la loi de Laplace comme un mélange équiprobable d’une exponentielle positive et d’une exponentielle négative. Ainsi, une méthode de simulation est de commencer par tirer une Rademacher R, c’est-à-dire R = ±1 de façon équiprobable, soit R = −1U ≤1/2 + 1U ≥1/2 avec U ∼ U[0,1] . On tire par ailleurs une loi E ∼ E(1), pour obtenir Y = R × E qui suit bien une loi de Laplace de paramètre 1. Quoi qu’il en soit, après simplifications, la fonction rapport d’acceptation est alors définie par 1 f (y) 2 = e− 2 (|y|−1) . r(y) = 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 r(y0 ) = 1 1 f (y0 ) 2 2 = e− 2 (|y0 |−1) = e− 2 (y0 −1) , mg(y0 ) et, pour V ∼ U[0,1] , alors si V ≤ r(y0 ), on tire une Rademacher R et on pose Y = R × y0 . Voir l’exercice 1.12 pour l’implémentation. Exercice 1.7 (Rejet discret) Soit λ ∈]0, 1[ fixé. 1. La méthode de rejet pour des variables discrètes fonctionne de la même façon que pour des variables continues : il suffit pour s’en convaincre de voir les densités f (x) et g(x) par rapport à la mesure de Lebesgue sur R comme des densités pn et qn par rapport à la mesure de comptage sur N. Il s’agit donc de trouver une constante m telle que, pour tout entier naturel n, e−λ e−λ P(X = n) ⇐⇒ m ≥ ⇐⇒ m ≥ . m≥ P(Y = n) (1 − λ)n! (1 − λ) Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 21 On choisira donc m = e−λ /(1 − λ). On procède alors comme suit : on simule Y = n suivant la loi donnée, on tire une loi uniforme U = u sur [0, 1] et on compare u au rapport d’acceptation : 1 P(X = n) = . rn = mP(Y = n) n! 2. La loi de Y fait penser à une loi géométrique de paramètre (1 − λ). En l’occurrence, si Y0 ∼ G(1 − λ), alors Y = Y0 − 1 suit la loi voulue. 3. Comme dans l’exercice précédent, la probabilité de rejet vaut 1− 1 = 1 − (1 − λ)eλ , m qui est d’autant plus petite que λ est proche de 0. Exercice 1.8 (Loi uniforme sur le disque) Ceci est un cas particulier de l’exemple vu en cours : il suffit de simuler (U1 , U2 ) un couple i.i.d. selon la loi uniforme sur [0, 1] pour en déduire un point (X, Y ) = (2(U1 − 1/2), 2(U2 − 1/2)) distribué uniformément dans le carré unité. Il ne reste plus qu’à tester si X 2 + Y 2 ≶ 1 pour voir s’il se situe dans le disque unité. La probabilité d’acceptation correspond naturellement au rapport des surfaces et vaut π/4, de l’ordre de 3/4. Exercice 1.9 (Rejet et conditionnement) Soit X une variable aléatoire de fonction de répartition F supposée inversible. 1. Pour simuler la loi de X conditionnellement à X > a à l’aide d’une méthode de rejet, il suffit de simuler Y1 suivant la loi de X, puis de poser X = Y1 si Y1 > a, et de recommencer avec une nouvelle variable Y2 sinon, et ainsi de suite jusqu’à obtenir YN > a. Avec les notations du cours, il s’ensuit que la variable aléatoire N suit une loi géométrique de paramètre 1/m = P(X > a). Le nombre d’essais moyen pour obtenir une réalisation de L(X|X > a) est donc égal à 1/P(X > a), quantité qui tend vers 0 quand a tend vers l’infini. Cette méthode est donc à proscrire lorsque a se situe dans la queue de la distribution de X. 2. Soit U une variable de loi uniforme sur [0, 1] et T définie par T = F −1 (F (a) + (1 − F (a))U ). Puisque F (a) + (1 − F (a))U ≥ F (a), la variable T est supérieure à la valeur a. Plus précisément, sa fonction de répartition FT vaut, pour tout t > a, FT (t) = P(T ≤ t) = P(F −1 (F (a) + (1 − F (a))U ) ≤ t) = P(F (a) + (1 − F (a))U ≤ F (t)), ce qui conduit à P(a < X ≤ t) F (t) − F (a) F (t) − F (a) = = P(X ≤ t|X > a), = FT (t) = P U ≤ 1 − F (a) 1 − F (a) P(X > a) c’est-à-dire que T ∼ L(X|X > a). Ceci permet de simuler la loi de X conditionnellement à X > a très simplement U ∼ U[0,1] =⇒ T = F −1 (F (a) + (1 − F (a))U ) ∼ L(X|X > a) Cette méthode est bien plus efficace que la méthode de rejet précédente, puisqu’on ne rejette rien et qu’elle fonctionne quel que soit a. Elle nécessite cependant la connaissance et l’inversion de F , contrairement à la méthode de rejet, qui n’exigeait que la capacité à simuler suivant la loi de X. Simulations Monte-Carlo Arnaud Guyader 22 Chapitre 1. Génération de variables aléatoires Elle fonctionne par exemple très bien pour une loi exponentielle, auquel cas on vérifie que ceci revient simplement à appliquer une translation de a sur une loi exponentielle (absence de mémoire). Par ailleurs, elle se généralise à la simulation de la loi de X conditionnée à a < X ≤ b puisqu’on vérifie de la même façon que T = F −1 (F (a) + (F (b) − F (a))U ) ∼ L(X|a < X ≤ b). 3. D’après ce qui vient d’être dit, la simulation suivant la densité gλ (x) = λe−λ(x−a) 1x>a de l’exponentielle translatée est très simple puisqu’il suffit de simuler suivant une exponentielle 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, 2π a il nous faut donc trouver le couple (m, λ) optimal tel que √ x2 1 2πQ(a)m ≥ sup eλ(x−a)− 2 = sup ϕλ (x). x≥a x≥a λ Puisque m doit être minimal, on le choisira donc tel que √ x2 1 2πQ(a)m = inf sup eλ(x−a)− 2 = inf sup ϕλ (x). λ>0 x≥a λ>0 x≥a λ Il faut distinguer deux cas : 0 < λ ≤ a =⇒ sup ϕλ (x) = ϕλ (a) = x≥a et λ ≥ a =⇒ sup ϕλ (x) = ϕλ (λ) = x≥a avec λ0 = a+ 1 − a2 e 2 =⇒ λ inf sup ϕλ (x) = 0<λ≤a x≥a 1 − a2 e 2 a 1 λ(λ−a)− λ2 2 e =⇒ inf sup ϕλ (x) = ϕλ0 (λ0 ), λ≥a x≥a λ √ 1 a2 a2 + 4 =⇒ ϕλ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 f (x) = √ x2 1 e− 2 1x≥a 2πQ(a) la densité de la restriction de la gaussienne au-dessus de a, on déduit f (x) 1 λ0 (x−a)− x2 1 2 ≤ 1 ϕλ0 (λ0 ) =⇒ r0 (x) = = e m0 = √ m0 gλ0 (x) λ0 2πQ(a) ∀x ≥ a, et la méthode de rejet est ainsi optimisée. Exercice 1.10 (Durée d’une simulation) 1. On spécifie les bornes de la représentation graphique ainsi que les classes de l’histogramme. Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 23 n=1000 ech=-log(runif(n)) xmax=ceiling(max(ech)) sub=seq(0,xmax,by=0.1) hist(ech,breaks=sub, prob=T) x=seq(0,xmax,by=0.1) lines(x,exp(-x),col=’red’) 2. Même principe : n=1000 ech=rexp(n) xmax=ceiling(max(ch)) sub=seq(0,xmax,by=0.1) hist(ech,breaks=sub, prob=T) x=seq(0,xmax,by=0.1) lines(x,dexp(x),col=’red’) 3. Les commandes (exécutées en un bloc !) : t0=proc.time() runif(1000000) proc.time()-t0 donnent le temps nécessaire (troisième colonne : écoulé) pour générer un million de variables exponentielles avec la méthode d’inversion. Le générateur de R va un peu plus vite : t0=proc.time() E=rexp(1000000) proc.time()-t0 Exercice 1.11 (Lien géométrique/exponentielle) Soit 0 < p < 1 et X une variable aléatoire suivant une loi géométrique G(p). 1. La variable X est donc à valeurs dans N∗ et ∀n ∈ N∗ , P(X = n) = p(1 − p)n−1 . Son espérance vaut E[X] = 1/p. 2. La variable X correspond au nombre de lancers nécessaires pour qu’une pièce ayant une probabilité d’apparition de Pile égale à p à chaque lancer tombe effectivement sur Pile. Traduction mathématique : si X = inf{n ∈ N∗ , Bn = 1}, alors X ∼ G(p). 3. C’est un cas particulier trivial de la méthode d’inversion : il suffit de considérer B1 = 1U1 ≤p . On en déduit une simulation de X à partir de lois uniformes pour p = 1/3. p=1/3 X=0 k=1 while(X==0){if(runif(1)>p){k=k+1}else{X=k}} On peut ainsi retrouver par simulation l’espérance de la loi géométrique : p=1/3 n=1000 ech=rep(0,n) for(i in (1:n)){ k=1 while (ech[i]==0){if(runif(1)>p){k=k+1}else{ech[i]=k}}} mean(ech) Simulations Monte-Carlo Arnaud Guyader 24 Chapitre 1. Génération de variables aléatoires Lorsque p est proche de 0, il faut bien sûr attendre très longtemps, un temps de l’ordre de 1/p puisque E[X] = 1/p. 4. Soit λ > 0, T une variable aléatoire suivant une loi exponentielle E(λ). La variable X = ⌈T ⌉ est à valeurs dans N∗ , avec pour tout n ∈ N∗ , n−1 , P(X = n) = P(n − 1 < T ≤ n) = e−λ(n−1) − e−λn = 1 − e−λ × e−λ autrement dit X ∼ G(1− exp(−λ)). Par conséquent, si T ∼ E(− log(1− p)), alors X ∼ G(p). Puisqu’il est très facile de simuler une loi exponentielle, ceci donne une nouvelle façon de générer une loi géométrique : p=1/3 l=-log(1-p) X=ceiling(rexp(1,rate=l)) Dans tous les cas, cette méthode va bien entendu plus vite que celle de la question 3, a fortiori lorsque p est proche de 0. Plus étonnant, elle va presque deux fois vite que le générateur par défaut rgeom 2 : n=10^7 p=1/3 l=-log(1-p) t0=proc.time() ech=ceiling(rexp(n,rate=l)) proc.time()-t0 p=1/3 t0=proc.time() ech=rgeom(n,prob=p)+1 proc.time()-t0 Pour une explication sur la raison de cette sous-optimalité du générateur de R, on pourra se reporter au billet dédié sur le blog de Djalil Chafaï 3 . Exercice 1.12 (Nul n’est censé ignorer la loi normale) 1. On applique donc la technique de rejet vue en exo 1.6 : n=10^6 t0=proc.time() R=2*round(runif(n))-1 # tirage des n Rademacher ech=rep(0,n) for(i in (1:n)){ while (ech[i]==0){ y=rexp(1) if(runif(1)<exp(-(y-1)^2/2)){ech[i]=R[i]*y}}} proc.time()-t0 On voit que cette méthode est assez lente, encore un peu on s’endormait. 2. Par la méthode de Box-Muller, l’obtention d’un million de gaussiennes est par contre quasi instantanée : 2. noter que R considère la loi géométrique à valeurs dans N, et non dans N∗ , mais ceci ne change à peu près rien sur la durée de la simulation. 3. http://djalil.chafai.net/blog/2014/11/15/about-random-generators-of-geometric-distribution/ Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 25 n=10^6 t0=proc.time() R=sqrt(-2*log(runif(n/2))) theta=2*pi*runif(n/2) ech=c(R*cos(theta),R*sin(theta)) proc.time()-t0 3. La méthode implémentée sous R via rnorm est encore un peu plus rapide : n=10^6 t0=proc.time() ech=rnorm(n) proc.time()-t0 4. On utilise la fonction mvrnorm du package MASS : n=1000 m=c(2,1) gamma=matrix(c(1,1,1,4),nrow=2) library(MASS) ech=mvrnorm(n,m,gamma) On estime alors m et Γ sans difficultés à partir de cet échantillon : apply(ech,2,mean) cov(ech) Exercice 1.13 (Méfiez-vous des mélanges !) On considère une variable X de densité (x+3)2 (x−3)2 2 1 f (x) = √ e− 8 + √ e− 2 . 6 2π 3 2π 1. La représentation de f est immédiate et illustre le fait que la variable X est bimodale : x=seq(-10,10,by=0.01) y=exp(-(x+3)^2/8)/(6*sqrt(2*pi))+exp(-(x-3)^2/2)*2/(3*sqrt(2*pi)) plot(x,y,type=’l’) 2. Soit B une variable aléatoire prenant les valeurs -1 et +1 avec les probabilités respectives 1/3 et 2/3. Soit Xn ∼ N (−3, 4) et Xp ∼ N (3, 1) deux variables gaussiennes indépendantes entre elles et indépendantes de B. Soit alors X = 1B=−1 × Xn + 1B=+1 × Xp , autrement dit : on commence par tirer B et suivant le résultat obtenu, on tire l’une des deux gaussiennes. C’est ce qu’on appelle un mélange de lois. Montrons que la variable X ainsi construite a bien pour densité f . On peut passer par sa fonction de répartition et procéder par conditionnement par rapport à la valeur prise par B : FX (x) = P(X ≤ x) = P(X ≤ x|B = −1) × P(B = −1) + P(X ≤ x|B = +1) × P(B = +1), d’où il vient, par indépendance des variables, FX (x) = Simulations Monte-Carlo 2 1 2 1 P(Xn ≤ x) + P(Xp ≤ x) = Fn (x) + Fp (x), 3 3 3 3 Arnaud Guyader 26 Chapitre 1. Génération de variables aléatoires où Fn et Fp correspondent aux cdf de Xn et Xp , c’est-à-dire à des cdf de gaussiennes, lesquelles se dérivent aisément et donnent les densités gaussiennes fn et fp , d’où 2 1 fX (x) = FX′ (x) = fn (x) + fp (x) = f (x). 3 3 On en déduit le code suivant pour simuler selon la densité f (voir aussi figure 1.7) : u=runif(1) x=(u<1/3)*rnorm(1,mean=-3,sd=2)+(u>1/3)*rnorm(1,mean=3,sd=1) 3. Et pour tout un échantillon : 0.00 0.10 0.20 n=10^4 u=runif(n) ech=(u<1/3)*rnorm(n,mean=-3,sd=2)+(u>1/3)*rnorm(n,mean=3,sd=1) hist(ech,nclass=30, prob=T) x=seq(-10,10,by=0.01) y=exp(-(x+3)^2/8)/(6*sqrt(2*pi))+exp(-(x-3)^2/2)*2/(3*sqrt(2*pi)) lines(x,y,col=’red’) −10 −5 0 5 Figure 1.7 – Histogramme, estimateur de la densité (noir) et densité (rouge) d’un mélange de gaussiennes. Exercice 1.14 (Comparaison de méthodes) Soit X une variable de fonction de répartition F telle que F (x) = 0 si x ≤ 0, F (x) = 1 si x ≥ 1, et pour tout x ∈ [0, 1] : 1 F (x) = (x + x2 ). 2 (1.5) 1. Il suffit de simuler U selon une loi uniforme sur [0, 1] et de considérer √ −1 + 1 + 8U −1 . X = F (U ) = 2 Ceci donne tout simplement : Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 27 n=10^4 u=runif(n) ech=(-1+sqrt(1+8*u))/2 x=seq(0,1,by=0.01) plot(x,0.5+x,type="l",col="red",xlab="",ylab="") lines(density(ech)) 2. Puisque f (x) = 1 3 + 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 1 2 f (x) = + x 1[0,1] (x). r(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’inversion : t0=proc.time() n=10^6 u=runif(n) ech=(-1+sqrt(1+8*u))/2 x=seq(0,1,by=0.01) proc.time()-t0 Simulations Monte-Carlo Arnaud Guyader 28 Chapitre 1. Génération de variables aléatoires Pour la méthode de mélange : t0=proc.time() n=10^6 u=runif(n) v=runif(n) ech=v*(u<1/2)+sqrt(v)*(u>1/2) proc.time()-t0 Exercice 1.15 (Loi géométrique conditionnelle) Soit p ∈]0, 1[ fixé et X une variable aléatoire suivant une loi géométrique de paramètre p. On se fixe de plus un entier m ∈ N∗ et on s’intéresse à la loi de X conditionnellement à X > m, notée L(X|X > m). 1. On simule des variables aléatoires Xn ∼ G(p) jusqu’au premier instant (aléatoire) N tel que XN > m, on pose alors Y = XN . La probabilité de rejet est P(X ≤ m) = m X k=1 p(1 − p)k−1 = 1 − (1 − p)m . Lorsque m est grand, cette probabilité est proche de 1. Typiquement, puisque E[X] = 1/p, cette méthode devient très inefficace lorsque m ≫ 1/p. 2. La variable Z = m + X est à valeurs dans {m + 1, m + 2, . . .} avec, pour tout k ≥ 1, P(Z = m + k) = P(X = k) = p(1 − p)k−1 = P(X = m + k) p(1 − p)m+k−1 , = m (1 − p) P(X > m) d’où finalement P(Z = m + k) = P(X = m + k|X > m). C’est la propriété d’absence de mémoire de la loi géométrique, claire si l’on pense par exemple aux lancers successifs d’un dé. Les moments de Z se déduisent des moments de X, soit q 1 et Var(Z) = Var(X) = 2 . E[Z] = m + E[X] = m + p p Pour simuler suivant L(X|X > m), il suffit donc de simuler X ∼ G(p) et de considérer Z = m + X. 3. On veut retrouver I = E[X|X > m] par simulation. On fixe p = 1/6 et m = 12. n=1000 p=1/6 m=12 I=m+1/p sigma=sqrt(1-p)/p alpha=0.05 q=qnorm(1-alpha/2) X=1+rgeom(n,p) Z=m+X Ihat=cumsum(Z)/(1:n) r=q*sigma/sqrt(1:n) Ihatmin=Ihat-r Ihatmax=Ihat+r plot((1:n),Ihat,type=’l’) Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 29 lines((1:n),Ihatmin,type=’l’,col=’green’) lines((1:n),Ihatmax,type=’l’,col=’green’) abline(h=I,col=’red’) 4. La probabilité de rejet est P(X ≤ 12) = 1 − (1 − 1/6)12 ≈ 0.9, donc il faut simuler en moyenne 10 variables géométriques pour aboutir à une réalisation selon la loi L(X|X > m). En moyenne, on a donc divisé le temps de calcul par 10. Exercice 1.16 (Loi Gamma) On veut générer une variable X suivant une loi Gamma Γ(3/2, 1), c’est-à-dire de densité 2 f (x) = √ x1/2 e−x 1x>0 . π 1. Après calculs, f (3/2) 33/2 =√ . 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. m= 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 mλ = sup x>0 f (x) 2 = sup √ x1/2 e−(1−λ)x . gλ (x) x>0 πλ Si λ ≥ 1, alors mλ = +∞, donc hors de question. Pour 0 < λ < 1, soit ϕ(x) = x1/2 e−(1−λ)x =⇒ ϕ′ (x) = d’où 1 −1/2 −(1−λ)x x e (1 − 2(1 − λ)x), 2 √ f (1/(2(1 − λ)) 2 √ . mλ = =√ gλ (1/(2(1 − λ)) πeλ 1 − λ La probabilité de rejet étant à 1 − 1/mλ , minimiser celle-ci revient à minimiser mλ , √ égale −1 c’est-à-dire à minimiser (λ 1 − λ) , c’est-à-dire à maximiser √ √ 2 − 3λ λ = √ , ψ(λ) = λ 1 − λ =⇒ ψ ′ (λ) = 1 − λ − √ 2 1−λ 2 1−λ et le maximum est bien atteint en λ = 2/3. Simulations Monte-Carlo Arnaud Guyader 30 Chapitre 1. Génération de variables aléatoires Exercice 1.17 (Représentation et simulation de copules) 1. On commence par créer une grille de valeurs pour abscisses et ordonnées : u=seq(0.01,1,by=0.01) v=seq(0.01,1,by=0.01) On construit ensuite les fonctions pour les différentes copules : cmono=function(u,v){pmin(u,v)} canti=function(u,v){pmax(u+v-1,0)} cinde=function(u,v){u*v} cclayton=function(u,v){1/(1/u+1/v-1)} library(mvtnorm) cgauss=function(u,v){pmvnorm(lower=c(-Inf,-Inf),upper=c(qnorm(u),qnorm(v)), mean=c(0,0),corr=matrix(c(1,1/2,1/2,1),nrow=2))} Pour les quatre premières, la suite est alors identique. Par exemple, pour la copule comonotone : z1=outer(u,v,cmono) library(rgl) rgl.surface(u,v,z1) persp(u,v,z1,theta=30) contour(u,v,z1) Pour la copule gaussienne, on peut procéder comme suit : z5=matrix(0,nrow=length(u),ncol=length(v)) for(i in 1:length(u)){for(j in 1:length(v)){z5[i,j]=cgauss(u[i],v[j])}} library(rgl) rgl.surface(u,v,z5) persp(u,v,z5,theta=30) contour(u,v,z5) 2. Lorsque chaque marge suit une loi gaussienne centrée réduite et que la copule est gaussienne, on a tout simplement affaire à un couple gaussien. n=1000 m=c(0,0) gamma=matrix(c(1,1/2,1/2,1),nrow=2) library(MASS) ech=mvrnorm(n,m,gamma) par(mfrow=c(1,2)) plot(ech,pch=3,xlab="",ylab="") Pour la copule de Clayton, on applique la méthode vue en cours. X=rexp(n) U1=runif(n) U2=runif(n) U=1/(1-log(U1)/X) V=1/(1-log(U2)/X) plot(qnorm(U),qnorm(V),pch=3,xlab="",ylab="") 3. Pour des marges suivant une loi de Laplace et une copule gaussienne de paramètre ρ = 1/2, on commence par simuler un couple variables gaussiennes de copule voulue : Arnaud Guyader Simulations Monte-Carlo 1.6. Corrigés 31 n=1000 m=c(0,0) gamma=matrix(c(1,.5,.5,1),nrow=2) ech=mvrnorm(n,m,gamma) Si X ∼ N (0, 1), alors Φ(X) ∼ U[0,1] , donc il est très facile de se ramener à des lois uniformes pour les marges : Ux=pnorm(ech[,1]) Uy=pnorm(ech[,2]) Puis à des lois de Laplace via la méthode d’inversion : X=log(2*Ux)*(Ux<1/2)-log(2*(1-Ux))*(Ux>1/2) Y=log(2*Uy)*(Uy<1/2)-log(2*(1-Uy))*(Uy>1/2) Ce qui donne finalement : par(mfrow=c(1,2)) plot(X,Y,pch=3,xlab="",ylab="") Pour la copule indépendante, il suffit de générer des couples de variables de Laplace indépendantes : Ux=runif(n) Uy=runif(n) X=log(2*Ux)*(Ux<1/2)-log(2*(1-Ux))*(Ux>1/2) Y=log(2*Uy)*(Uy<1/2)-log(2*(1-Uy))*(Uy>1/2) plot(X,Y,pch=3,xlab="",ylab="") −0.5 W 0.5 Exercice 1.18 (Mouvement brownien, pont brownien) Un mouvement brownien ou processus de Wiener (Wt )t≥0 peut être caractérisé par : W0 = 0, les trajectoires de t 7→ Wt sont presque sûrement continues, Wt est à incréments indépendants avec, pour tout 0 ≤ s ≤ t, Wt − Ws ∼ N (0, t − s). 0.0 0.2 0.4 0.6 0.8 1.0 t Figure 1.8 – Trajectoire d’un mouvement brownien en dimension 1. 1. Il suffit de simuler n = 100 variables gaussiennes i.i.d. centrées et de variance 1/n, puis d’effectuer la somme cumulée : Simulations Monte-Carlo Arnaud Guyader 32 Chapitre 1. Génération de variables aléatoires n=100 N=rnorm(n,mean=0,sd=1/sqrt(n)) W=cumsum(N) W=c(0,W) t=seq(0,1,by=1/n) plot(t,W,type="l") −0.2 −0.6 Wy 0.2 Idem avec n = 104 (voir figure 1.8). −1.5 −1.0 −0.5 0.0 Wx Figure 1.9 – Trajectoire d’un mouvement brownien en dimension 2. 2. En dimension 2, la simulation n’est pas plus compliquée (voir figure 1.9) : n=10^4 Nx=rnorm(n,mean=0,sd=1/sqrt(n)) Ny=rnorm(n,mean=0,sd=1/sqrt(n)) Wx=c(0,cumsum(Nx)) Wy=c(0,cumsum(Ny)) plot(Wx,Wy,type="l",xlab="",ylab="") points(0,0,col="red") 3. La simulation du pont brownien se déduit de celle du mouvement brownien (voir figure 1.10) : n=100 N=rnorm(n,mean=0,sd=1/sqrt(n)) W=cumsum(N) W=c(0,W) t=seq(0,1,by=1/n) B=W-t*W[n+1] plot(t,B,type="l") 4. On veut illustrer le théorème de Kolmogorov-Smirnov. (a) La représentation de Fn est élémentaire : n=100 U=runif(n) Uord=sort(U) Arnaud Guyader Simulations Monte-Carlo −0.5 33 −1.5 B 1.6. Corrigés 0.0 0.2 0.4 0.6 0.8 1.0 t Figure 1.10 – Trajectoire d’un pont brownien. 0.0 0.5 1.0 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). 0.0 0.2 0.4 0.6 Figure 1.11 – Une trajectoire de la fonction x 7→ 0.8 √ 1.0 n(Fn (x) − F (x)). eps=10^(-16) Uordmoins=Uord-eps Uaux=sort(c(Uord,Uordmoins)) Fn=seq(1/n,1,by=1/n) Fnmoins=seq(0,1-1/n,by=1/n) Fnaux=sort(c(Fn,Fnmoins)) plot(Uaux,sqrt(n)*(Fnaux-Uaux),type="l",col="blue",xlab="",ylab="") √ (b) Construisons un échantillon de taille 500 selon la loi nkFn − F k∞ (voir figure 1.12 en noir) : Simulations Monte-Carlo Arnaud Guyader 34 Chapitre 1. Génération de variables aléatoires 0.0 0.5 1.0 1.5 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.5 1.0 1.5 2.0 Figure 1.12 – Estimateurs de la densité pour un échantillon tiré selon la loi de (noir) et un échantillon tiré selon la loi de sup0≤t≤1 |Bt | (bleu). √ nkFn − F k∞ Pour la loi de sup0≤t≤1 |Bt |, on peut procéder comme suit (voir figure 1.12 en bleu) : dt=10^(-2) supB=rep(0,simu) for(i in 1:simu){ N=rnorm(1/dt,mean=0,sd=sqrt(dt)) W=cumsum(N) t=seq(dt,1,by=dt) supB[i]=max(abs(W-t*W[1/dt]))} lines(density(supB),col="blue") Arnaud Guyader Simulations Monte-Carlo Chapitre 2 Intégration Monte-Carlo Introduction Une application classique des méthodes Monte-Carlo est le calcul de quantités du type Z I = E[ϕ(X)] = ϕ(x)f (x)dx, (2.1) où ϕ : Rd → R est une fonction donnée et X un vecteur aléatoire de densité f suivant laquelle on sait simuler (cf. Chapitre 1). Dans ce contexte, l’estimateur Monte-Carlo de base est défini par n 1X Iˆn = ϕ(Xi ), n (2.2) i=1 où les Xi sont générées de façon i.i.d. selon f . Outre les propriétés de cet estimateur, ce chapitre explique comment on peut éventuellement améliorer sa précision grâce à des techniques de réduction de variance. 2.1 2.1.1 Exemples et propriétés Convergence et intervalles de confiance Il est clair que l’estimateur Iˆn est sans biais, c’est-à-dire que E[Iˆn ] = I. Mieux, la loi forte des grands nombres assure qu’il est convergent. Proposition 6 (Loi des grands nombres) Si E|ϕ(X)| < ∞, alors n 1X p.s. ϕ(Xi ) −−−→ I. Iˆn = n→∞ n i=1 Revenons sur un exemple élémentaire du chapitre précédent. Exemple : estimation de π. Supposons que (X, Y ) suive la loi uniforme sur le carré C = [0, 1] × [0, 1] et que ϕ(x, y) = 1x2 +y2 ≤1 . En notant D = {(x, y) ∈ R2+ , x2 + y 2 ≤ 1} le quart de disque unité, on a donc ZZ π 1D (x, y)dxdy = λ(D) = . I= 4 C Simuler des points (Xi , Yi ) uniformément dans C est très facile et la propriété précédente assure donc que n π 1X p.s. p.s. 1D (Xi , Yi ) −−−→ ⇐⇒ 4 × Iˆn −−−→ π. Iˆn = n→∞ 4 n→∞ n i=1 35 36 Chapitre 2. Intégration Monte-Carlo On dispose donc d’un estimateur Monte-Carlo 1 pour la constante π. Encore faut-il connaître sa précision : c’est tout l’intérêt du théorème central limite. Proposition 7 (Théorème central limite) 2 Si E ϕ(X) < ∞, alors √ L n (Iˆn − I) −−−→ N (0, σ 2 ), n→∞ avec 2 2 2 σ = Var(ϕ(X)) = E[ϕ (X)] − E[ϕ(X)] = Z ϕ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 σ̂n2 = 1X 2 p.s. ϕ (Xi ) − Iˆn2 −−−→ σ 2 n→∞ n (2.3) 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 (0, 1). n σ̂n n→∞ Exemple : estimation de π. Dans ce cas, la variance vaut tout simplement π π σ2 = I − I 2 = 1− , 4 4 laquelle est donc estimée par σ̂n2 = Iˆn − Iˆn2 , et d’après ce qui vient d’être dit √ Iˆn − I L n q −−−→ N (0, 1). n→∞ Iˆn − Iˆn2 On en déduit bien entendu des intervalles de confiance asymptotiques pour I. Proposition 8 (Intervalles de confiance) Soit α ∈ (0, 1) fixé. Un intervalle de confiance de niveau asymptotique 1 − α pour I est σ̂n σ̂n −1 −1 ˆ ˆ In − Φ (1 − α/2) √ ; In + Φ (1 − α/2) √ , n n où Φ−1 (1 − α/2) désigne le quantile d’ordre 1 − α/2 de la loi normale centrée réduite. Typiquement α = 0.05 donne Φ−1 (1 − α/2) = q0.975 = 1.96 ≈ 2, qui permet de construire un intervalle de confiance à 95% pour I. Un point de précision en passant : prendre 1.96 plutôt que 2 √ pour le quantile de la loi normale est tout à fait illusoire si le terme σ̂n / n n’est pas déjà lui-même de l’ordre de 0.01 (i.e., pour un écart-type unité, un échantillon de taille au moins 10 000). 1. tout à fait inutile en pratique, puisqu’il existe des formules analytiques bien plus efficaces pour approcher π. Arnaud Guyader Simulations Monte-Carlo 37 2.5 3.0 3.5 4.0 2.1. Exemples et propriétés 0 200 400 600 800 1000 Figure 2.1 – Estimateur Monte-Carlo de π et intervalles de confiance asymptotiques. 2.1.2 Quelques mots sur l’intégration numérique Supposons pour simplifier que, dans l’intégrale définie par (3.1), f soit la densité uniforme sur le pavé C = [0, 1]d , c’est-à-dire que Z ϕ(x)dx. I= [0,1]d Si la fonction ϕ est suffisamment régulière, des méthodes déterministes d’intégration numérique permettent également d’approcher cette intégrale. Commençons par la dimension d = 1 et rappelons quelques résultats classiques : — Dans ce cas, si ϕ est de classe C 1 , la méthode des rectangles sur la subdivision régulière {1/n, . . . , (n − 1)/n, 1} a une précision en O(1/n). Plus précisément, si on convient de noter M1 = supx∈[0,1] |ϕ′ (x)| et Rn l’approximation obtenue, alors |Rn − I| ≤ M1 . 2n — Si ϕ est de classe C 2 , la méthode des trapèzes sur la même subdivision a une précision en O(1/n2 ). Plus précisément, si on note M2 = supx∈[0,1] |ϕ′′ (x)| et Tn l’approximation obtenue, alors M2 |Tn − I| ≤ . 12n2 — La méthode de Simpson consiste à approcher f sur chaque segment [k/n, (k + 1)/n] par un arc de parabole qui coïncide avec f aux deux extrémités et au milieu de ce segment. Si ϕ est de classe C 4 , cette méthode a une précision en O(1/n4 ). Plus précisément, si on note M4 = supx∈[0,1] |ϕ(4) (x)| et Sn l’approximation obtenue, alors |Sn − I| ≤ M4 . 2880n4 — De façon générale, si ϕ est de classe C s , une méthode adaptée à cette régularité (de type Newton-Cotes) permettra d’obtenir une erreur en O(1/ns ). Si l’on compare à l’erreur en √ O(1/ n) de la méthode Monte-Carlo, il est donc clair que les méthodes déterministes sont préférables dès que f est C 1 . Simulations Monte-Carlo Arnaud Guyader 38 Chapitre 2. Intégration Monte-Carlo Passons maintenant au cas d = 2 et focalisons-nous sur la plus simple des méthodes déterministes, à savoir celle des “rectangles” : on somme donc cette fois des volumes de pavés. Pour comparer ce qui est comparable, il faut considérer que les deux méthodes font le même nombre n d’appels à la fonction ϕ 2 . La subdivision {1/n, . . . , (n − 1)/n, 1} de la dimension 1 est donc remplacée par le √ √ √ maillage de n points Ak,ℓ = (k/ n, ℓ/ n), avec 1 ≤ k, ℓ ≤ n. La précision de la méthode s’en √ ressent puisqu’elle est alors logiquement en O(1/ n). De façon générale, si ϕ est de classe C s sur [0, 1]d , alors une méthode déterministe adaptée à cette régularité et faisant n appels à la fonction ϕ permettra d’atteindre une vitesse en O(n−s/d ). Cette vitesse qui s’effondre avec d est symptomatique du fléau de la dimension. A contrario, la √ méthode Monte-Carlo, avec une vitesse en 1/ n, est insensible à la dimension et peut donc s’avérer plus avantageuse dès que l’on travaille en dimension grande ou sur une fonction irrégulière. En fin de chapitre, nous dirons un mot des méthodes quasi Monte-Carlo, lesquelles représentent un intermédiaire entre les méthodes déterministes et les méthodes Monte-Carlo. 2.1.3 Le paradigme bayésien De façon générale, les méthodes Monte-Carlo sont d’usage constant en statistique bayésienne. En particulier, celle-ci requiert régulièrement le calcul d’intégrales du type (3.1). Expliquons pourquoi en quelques mots. Le cadre typique est celui où la loi de la variable X dépend d’un paramètre θ. Dans l’approche fréquentiste, θ est inconnu mais supposé avoir une valeur fixée et les observations (x1 , . . . , xn ) permettent de l’estimer par une méthode donnée, par exemple au maximum de vraisemblance. L’approche bayésienne est différente : elle consiste à considérer que θ est lui-même aléatoire et suit une loi (dite a priori) donnée, les observations (x1 , . . . , xn ) permettant d’affiner cette loi via sa mise à jour au vu des observations. Plus formellement, notons π la densité de la loi a priori de θ (ou prior) et f (x|θ) la densité conditionnelle de x sachant θ (ou vraisemblance). Par la règle de Bayes, la densité a posteriori de θ sachant x (ou posterior) s’écrit alors tout simplement π(θ|x) = Z f (x|θ)π(θ) f (x|t)π(t)dt ∝ f (x|θ)π(θ). 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θ Z E[ϕ(θ)|x] = ϕ(θ)π(θ|x)dθ = . (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 Z n 1X p.s. ϕ(θi )f (x|θi ) −−−→ ϕ(θ)f (x|θ)π(θ)dθ. n→∞ n i=1 2. Un appel pouvant être coûteux dès lors que ϕ est compliquée, ce critère fait sens. Arnaud Guyader Simulations Monte-Carlo 2.2. Réduction de variance 39 L’estimation du dénominateur de (2.4) correspond au cas particulier où ϕ = 1 et se traite donc de la même façon. Au total, l’estimateur Monte-Carlo de I = E[ϕ(θ)|x] s’écrit Pn ϕ(θ )f (x|θi ) Pn i Iˆn = i=1 . i=1 f (x|θi ) En particulier, l’estimateur de Bayes θ̂(x) = Z θ π(θ|x)dθ, qui correspond à la moyenne a posteriori de θ, admet pour estimateur Monte-Carlo Pn i=1 θi f (x|θi ) . θ̂n (x) = P n i=1 f (x|θi ) Voir l’exercice 2.15 pour un exemple d’application. 2.2 Réduction de variance Nous restons dans le cadre de la section précédente, à savoir l’estimation de l’intégrale I = E[ϕ(X)]. √ Son estimation Iˆn par la méthode Monte-Carlo standard aboutit à une erreur en σ/ n. Dès que la dimension de X est grande ou ϕ irrégulière, les méthodes déterministes ou quasi-Monte-Carlo √ ne sont plus concurrentielles et la vitesse en 1/ n apparaît donc incompressible. L’idée est alors de gagner sur le facteur σ, ce qui est précisément l’objet des méthodes de réduction de variance. √ Une remarque élémentaire au préalable : pour une précision ε voulue sur le résultat, donc en σ/ n par Monte-Carlo classique, une méthode de réduction de variance permettant de diviser la variance σ 2 par 2 permet de diviser le nombre n de simulations nécessaires par 2 pour atteindre la même précision. Si la nouvelle méthode n’est pas plus coûteuse en temps de calcul, c’est donc la durée de la simulation qui est ainsi divisée par deux. Si la nouvelle méthode requiert beaucoup plus de calculs, il faut en toute rigueur en tenir compte, par exemple en définissant l’efficacité d’une technique par 1 Efficacité = , Complexité × Variance et en comparant les efficacités des différentes méthodes entre elles. 2.2.1 Echantillonnage préférentiel On souhaite estimer I = E[ϕ(X)] = Z ϕ(x)f (x)dx. Si la fonction ϕ prend ses plus grandes valeurs là où la densité f est très faible, i.e. là où X a très peu de chances de tomber, et réciproquement, l’estimateur Monte-Carlo classique n 1X ϕ(Xi ) Iˆn = n i=1 est très mauvais puisqu’à moins de prendre n très grand, il va estimer environ 0 même si I vaut 1. Exemples : Simulations Monte-Carlo Arnaud Guyader 40 Chapitre 2. Intégration Monte-Carlo 1. Evénements rares : la variable X suivant une loi normale centrée réduite, on veut estimer la probabilité Z x2 1 1x>6 √ e− 2 dx. P(X > 6) = E[1X>6 ] = 2π R 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 x2 1 √ e− 2 dx = 1. ϕ(x)f (x)dx = I = E[ϕ(X)] = 2π R R Or 95% des Xi tombent dans l’intervalle [m − 2, m + 2] tandis que ϕ(m) = exp(−m2 /2) tend très vite vers 0 quand m augmente. Ainsi, dès lors que m est grand, on obtient Iˆn proche de 0, ce qui n’est pas une très bonne approximation de la valeur cherchée I = 1... L’idée de l’échantillonnage préférentiel, ou échantillonnage pondéré, ou importance sampling, est de tirer des points non pas suivant la densité f de X mais selon une densité auxiliaire g réalisant un compromis entre les régions de l’espace où ϕ est grande et où la densité f est élevée, quitte à rétablir le tir ensuite en tenant compte du fait que la loi de simulation g n’est pas la loi initiale f . Mathématiquement, il s’agit simplement d’une réécriture de I sous la forme Z Z Z f (y) ϕ(y)g(y)dy = w(y)ϕ(y)g(y)dy = E[w(Y )ϕ(Y )], I = E[ϕ(X)] = ϕ(x)f (x)dx = g(y) où Y a pour densité g et w(y) = f (y)/g(y) correspond à la pondération (ou rapport de vraisemblance) dû au changement de loi. Pour que celui-ci soit bien défini, il faut s’assurer qu’on ne divise pas par 0, c’est-à-dire que g(y) = 0 implique f (y)ϕ(y) = 0. On peut alors voir w(y) comme la dérivée de Radon-Nikodym de la loi de X par rapport à celle de Y . Ceci supposé, si l’on sait : (a) simuler suivant la densité g, (b) calculer le rapport de vraisemblance w(y) = f (y)/g(y) pour tout y, l’estimateur par échantillonnage préférentiel prend la forme n 1X I˜n = w(Yi )ϕ(Yi ), n i=1 où les Yi sont i.i.d. de densité g. Mutatis mutandis, les résultats vus pour Iˆn s’appliquent à nouveau ici. Proposition 9 (Echantillonnage préférentiel) Si E|w(Y )ϕ(Y )| < ∞, alors l’estimateur I˜n est sans biais et convergent, c’est-à-dire que E[I˜n ] = I et n 1X p.s. w(Yi )ϕ(Yi ) −−−→ E[w(Y )ϕ(Y )] = I. I˜n = n→∞ n i=1 Si de plus E[w2 (Y )ϕ2 (Y )] < ∞, alors √ avec s2 = Var(w(Y )ϕ(Y )) = Arnaud Guyader L n (I˜n − I) −−−→ N (0, s2 ), Z n→∞ w2 (y)ϕ2 (y)g(y)dy − I 2 = E[w(X)ϕ2 (X)] − I 2 . Simulations Monte-Carlo 2.2. Réduction de variance 41 Remarque. Comme précédemment, la variance s2 est naturellement estimée par n s̃2n = 1X 2 w (Yi )ϕ2 (Yi ) − I˜n2 n i=1 pour en déduire des intervalles de confiance asymptotiques. La variance s2 de I˜n est à comparer à la variance σ 2 = E[ϕ2 (X)]−I 2 de Iˆn . Il “suffit” donc de choisir la pondération w, c’est-à-dire la densité instrumentale g, de sorte que le terme E[w(X)ϕ2 (X)] soit le plus petit possible. La bonne nouvelle, c’est que ce problème a une solution explicite, la mauvaise c’est qu’elle est tout à fait hors d’atteinte... Lemme 1 (Loi d’échantillonnage optimale) Pour toute densité g telle que E[w2 (Y )ϕ2 (Y )] < ∞, on a 2 2 2 s = Var(w(Y )ϕ(Y )) ≥ E[|ϕ(X)|] − I = Z |ϕ(x)|f (x)dx 2 − Z ϕ(x)f (x)dx 2 , la borne inférieure étant atteinte pour la densité g ⋆ définie par g⋆ (y) = Z |ϕ(y)|f (y) . |ϕ(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 ) ˜ ϕ(Y ) = ϕ(x)f (x)dx = I. I1 = w(Y )ϕ(Y ) = ⋆ g (Y ) Même si la proposition précédente présente surtout un intérêt théorique, on retrouve l’idée selon laquelle la densité auxiliaire g doit réaliser un compromis entre la fonction à intégrer ϕ et la densité f : autant que possible, g doit mettre du poids là où le produit |ϕ(x)|f (x) est le plus élevé. 2.2.2 Conditionnement On cherche toujours à estimer I = E[ϕ(X)] en supposant E ϕ2 (X) < ∞. L’idée force dans cette section a été vue en cours de probabilités, à savoir : le conditionnement ne change pas la moyenne, mais réduit l’incertitude. Appliqué à notre contexte, ceci signifie que pour toute autre variable aléatoire Y , on a d’une part E[E[ϕ(X)|Y ]] = E[ϕ(X)] = I, et d’autre part σ 2 = Var(ϕ(X)) = Var(E[ϕ(X)|Y ]) + E[Var(ϕ(X)|Y )] ≥ Var(E[ϕ(X)|Y ]). Soit donc Y une variable auxiliaire de densité g dont on sait simuler des réalisations et telle que, pour tout y, on peut calculer ψ(y) = E[ϕ(X)|Y = y]. On considère l’estimateur n n i=1 i=1 1X 1X ψ(Yi ) = E[ϕ(X)|Yi ]. I˜n = n n Ses propriétés découlent de ce qui vient d’être dit. Simulations Monte-Carlo Arnaud Guyader 42 Chapitre 2. Intégration Monte-Carlo Proposition 10 (Estimation par conditionnement) Si E|ϕ(X)| < ∞, alors l’estimateur I˜n est sans biais et convergent, c’est-à-dire que E[I˜n ] = I et n 1X p.s. ψ(Yi ) −−−→ E[ψ(Y )] = E[E[ϕ(X)|Y ]] = I. I˜n = n→∞ n i=1 Si de plus E[ϕ2 (X)] < ∞, alors √ L n (I˜n − I) −−−→ N (0, s2 ), n→∞ avec s2 = Var(E[ϕ(X)|Y ]) = Var(ψ(Y )) = E[ψ 2 (Y )] − I 2 . Remarques : 1. A nouveau, la variance s2 est estimée de façon immédiate par n s̃2n = 1X 2 ψ (Yi ) − I˜n2 n i=1 et les intervalles de confiance asymptotiques en découlent. 2. Ainsi tout conditionnement réduit la variance par rapport au Monte-Carlo classique. Néanmoins, puisque s2 = Var(E[ϕ(X)|Y ]), il faut choisir la variable Y aussi corrélée que possible à ϕ(X). Exemple : surface du quart de disque unité. On revient à l’exemple vu en Section 2.1.1 où I = π/4 est estimée par n 1X ˆ 1D (Xi , Yi ). In = n i=1 Les variables X et Y étant uniformes et indépendantes, on a p p E[1D (X, Y )|X = x] = P(x2 + Y 2 ≤ 1) = P(Y ≤ 1 − x2 ) = 1 − x2 = ψ(x), ce qui conduit à l’estimateur n 1X I˜n = n i=1 q 1 − Xi2 . Sa variance se calcule facilement : s2 = E[ψ 2 (X)] − I 2 = Z 1 0 (1 − x2 )dx − (π/4)2 = 2/3 − (π/4)2 ≈ 0.05. La variance de Iˆn étant de σ 2 = π/4(1 − π/4) ≈ 0.17, on gagne un facteur 2 en écart-type, c’est-à-dire qu’on a un estimateur deux fois plus précis. 2.2.3 Stratification Le principe est le même qu’en sondages : s’il existe une variable auxiliaire Y permettant de partitionner l’espace d’états X = X1 ∪ · · · ∪ XJ en J strates sur chacune desquelles la variable X est “assez homogène”, on a tout intérêt à tirer parti de cette information. Arnaud Guyader Simulations Monte-Carlo 2.2. Réduction de variance 43 Formellement, supposons que l’on connaisse les probabilités pj = P(X ∈ Xj ) et que l’on sache simuler selon les lois conditionnelles L(X|X ∈ Xj ). Par conditionnement, on peut écrire I = E[ϕ(X)] = J X j=1 E[ϕ(X)|X ∈ Xj ]P(X ∈ Xj ) = J X j=1 pj E[ϕ(X)|X ∈ Xj ]. 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 ! nj J X X 1 pj I˜n = ϕ(Xi,j ) nj j=1 i=1 et possède les propriétés suivantes. Proposition 11 (Estimation par conditionnement) Si E|ϕ(X)| < ∞, alors l’estimateur I˜n est sans biais et, si tous les nj tendent vers l’infini, il est convergent, c’est-à-dire que ! nj J X X 1 p.s. ϕ(Xi,j ) −−−−−−−−−→ I. pj I˜n = nj (n1 ,...,nJ )→∞ i=1 j=1 Si de plus E[ϕ2 (X)] < ∞, alors sa variance vaut s2n = Var(I˜n ) = J J X X p2j p2j 2 Var(ϕ(X)|X ∈ Xj ) = σ , nj nj j j=1 avec j=1 σj2 = Var(ϕ(X)|X ∈ Xj ) = E ϕ2 (X)|X ∈ Xj − E [ϕ(X)|X ∈ Xj ]2 . Les estimateurs naturels de σj2 et s2n sont donc respectivement !2 nj J X p2j 2 1 X 2 =⇒ s̃n = σ̃ . ϕ(Xi,j ) nj nj j nj 1 X 2 2 ϕ (Xi,j ) − σ̃j = nj i=1 j=1 i=1 Si l’on convient de noter mj = E[ϕ(X)|X ∈ Xj ] les moyennes par classe, la formule de décomposition en variances intra et inter-classe nous assure que Var(ϕ(X)) = J X pj σj2 + J X j=1 j=1 pj (I − mj )2 . Par ailleurs, si on effectue une allocation proportionnelle en prenant nj = pj × n (abstraction faite des arrondis), il vient pour l’estimateur par stratification J s2n = 1X Var(ϕ(X)) pj σj2 ≤ , n n j=1 la variance inter-strate ayant disparu par rapport au Monte-Carlo standard. Théoriquement, on peut faire encore mieux grâce à l’allocation dite optimale : l’optimisation sous contrainte J X p2j 2 σ inf n1 ,...,nJ nj j j=1 Simulations Monte-Carlo avec n1 + · · · + nJ = n Arnaud Guyader 44 Chapitre 2. Intégration Monte-Carlo admet en effet la solution (n⋆1 , . . . , n⋆J ) = p 1 σ1 PJ j=1 pj σj p J σJ n, . . . , PJ j=1 pj σj n ! 2 J J X p2j 2 1 X =⇒ σ = p j σj . nj j n j=1 j=1 Cette allocation est impossible a priori puisqu’on ne connaît pas les σj . On sait cependant les estimer par les σ̃j déjà croisés, donc on peut envisager une méthode en deux temps : on commence par les estimer grâce à une première simulation, tandis qu’une seconde simulation effectue une allocation quasi-optimale avec ! pJ σ̃J p1 σ̃1 ⋆ ⋆ (ñ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 stratification 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]p j j=1 Elles sont en fait duales : dans un cas on simule la variable auxiliaire Y et on connaît l’espérance conditionnelle sachant celle-ci, dans l’autre on connaît la loi de Y et on estime l’espérance conditionnelle sachant celle-ci. 2.2.4 Variables antithétiques Nous ne présentons pas cette méthode dans le cadre le plus général, mais plutôt par l’intermédiaire d’une application classique. Rappelons que l’estimateur Monte-Carlo standard de I = E[ϕ(X)] s’écrit n n 1X 1X ˆ ϕ(Xi ) = ϕ(F −1 (Ui )), In = n n i=1 i=1 où F −1 , supposée connue, désigne comme au Chapitre 1 l’inverse généralisée de la fonction de répartition F de X. Les variables Ui sont quant à elles i.i.d. selon la loi uniforme sur [0, 1]. Si les variables Xi sont simulées par la méthode d’inversion, c’est en fait sous cette dernière forme que l’estimateur est implémenté. Puisque les variables (1 − Ui ) sont elles-mêmes i.i.d. selon la loi uniforme, l’estimateur n 1 X ϕ(F −1 (Ui )) + ϕ(F −1 (1 − Ui )) I˜n = n 2 i=1 est lui aussi sans biais et convergent. Il est cependant deux fois plus coûteux si l’évaluation ϕ(F −1 (u)) n’est pas immédiate. Quid de sa variance ? Celle de Iˆn a déjà été vue et vaut Var(ϕ(X))/n. Pour I˜n , on a Var(I˜n ) = Arnaud Guyader 1 Var(ϕ(F −1 (U ))) + Cov(ϕ(F −1 (U ), ϕ(F −1 (1 − U ))) × . n 2 Simulations Monte-Carlo 2.3. Méthodes Quasi-Monte-Carlo 45 Or Var(ϕ(F −1 (U ))) = Var(ϕ(X)) et l’inégalité de Cauchy-Schwarz impose que p p Cov(ϕ(F −1 (U ), ϕ(F −1 (1 − U ))) ≤ Var(ϕ(F −1 (U ))) × Var(ϕ(F −1 (1 − U ))) = Var(ϕ(X)), si bien que l’on a toujours, en notant ρ(X, Y ) = Cov(X, Y )/(σ(X)σ(Y )) le coefficient de corrélation linéaire, 1 + ρ(ϕ(F −1 (U ), ϕ(F −1 (1 − U ))) Var(I˜n ) = ≤ 1, 2 Var(Iˆn ) 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 Cov(ϕ(F −1 (U ), ϕ(F −1 (1 − U ))) ≤ 0 =⇒ Var(I˜n ) 1 ≤ . ˆ 2 Var(In ) Ainsi le surcoût algorithmique est au moins compensé par la réduction de variance. Exemple jouet. Supposons que X ∼ U[0,1] et ϕ(x) = x2 . On obtient dans ce cas une division de la variance par 16. 2.3 Méthodes Quasi-Monte-Carlo Revenons au problème d’intégration par rapport à la loi uniforme, autrement dit l’estimation de Z ϕ(x)dx. I= [0,1]d Si d = 1, pour une méthode Monte-Carlo classique, c’est-à-dire lorsque (Xn )n≥1 est une suite de variables i.i.d. uniformes sur [0, 1], l’estimateur n 1X ϕ(Xi ) Iˆn = 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 n kϕ′ k 1 X ∞ ϕ(i/n) − I ≤ , |Rn − 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 Iˆn+1 = n ˆ 1 In + ϕ(Xn+1 ). n+1 n+1 L’idée des méthodes Quasi-Monte-Carlo est de trouver un compromis entre ces deux techniques. Commençons par introduire la notion de discrépance, ou plutôt une notion de discrépance. Simulations Monte-Carlo Arnaud Guyader 46 Chapitre 2. Intégration Monte-Carlo Définition 3 (Discrépance à l’origine) Soit (ξn )n≥1 une suite de [0, 1]d . La discrépance (à l’origine) de (ξn )n≥1 est la suite (Dn⋆ (ξ))n≥1 définie par n 1 X ⋆ 1B (ξi ) − λ(B) , Dn (ξ) = sup |λn (B) − λ(B)| = sup ⋆ ⋆ n B∈R B∈R i=1 R⋆ où = {B = [0, u1 ] × · · · × [0, ud ], 0 ≤ uj ≤ 1 ∀j} est l’ensemble des pavés contenus dans [0, 1]d avec un sommet en l’origine, λ(B) = u1 × · · · × ud est la mesure de Lebesgue d’un tel pavé tandis que λn (B) est sa mesure empirique pour la suite (ξn )n≥1 , i.e. la proportion des n premiers points de cette suite appartenant à B. En dimension d = 1, on a ainsi n 1 X Dn⋆ (ξ) = sup 1[0,u] (ξi ) − u . 0≤u≤1 n i=1 Autrement dit, la discrépance à l’origine mesure la distance en norme sup entre la fonction de répartition empirique et celle de la loi uniforme. Exemples : 1. Suites de van der Corput : en dimension d = 1, on se fixe un nombre entier, par exemple 2, et on part de la suite des entiers naturels que l’on traduit en base 2 : 1 = (1), 2 = (10), 3 = (11), 4 = (100), 5 = (101), 6 = (110), 7 = (111), 8 = (1000), . . . puis on applique la transformation “miroir” suivante : n= B X b=0 B X xb , xb 2 =⇒ ξn = 2b+1 b b=0 ce qui donne, en décomposition binaire : ξ1 = (0.1), ξ2 = (0.01), ξ3 = (0.11), ξ4 = (0.001), ξ5 = (0.101), ξ6 = (0.011), ξ7 = (0.111), . . . d’où, retraduit en décomposition décimale, la suite de van der Corput de base 2 : 1 1 3 1 5 3 7 1 9 5 13 3 11 7 15 1 (ξn )n≥1 = , , , , , , , , , , , , , , , ,... . 2 4 4 8 8 8 8 16 16 16 16 16 16 16 16 32 On peut montrer que Dn⋆ (ξ) = O(log n/n). 2. Suites de Halton : elles correspondent à la généralisation des suites de van der Corput en dimension d supérieure à 1. On considère d nombres premiers entre eux b1 , . . . , bd et on construit les d suites de van der Corput ξ (1) , . . . , ξ (d) de bases respectives b1 , . . . , bd . La suite de Halton associée est alors ξ = (ξn )n≥1 = ξn(1) , . . . , ξn(d) . n≥1 Par exemple, en dimension 2, en prenant b1 = 2 et b2 = 3, les premiers termes de la suite de Halton associée sont (voir aussi figure 2.2) 1 2 3 1 1 4 5 7 3 2 7 5 1 8 1 1 , , , , , , , , , , , , , , , ,... ξ= 2 3 4 3 4 9 8 9 8 9 8 9 8 9 16 9 Pour une suite de Halton en dimension d, on peut montrer que Dn⋆ (ξ) = O((log n)d /n). Arnaud Guyader Simulations Monte-Carlo 47 0.0 0.4 0.4 0.8 + ++ + ++ + + + ++ + + +++ + + +++++ + + +++++ + ++ + + +++ + + + ++ + + +++ + + ++++ ++ + + +++ ++++ + ++ + + +++ ++ + + ++ + + + + ++ +++ + ++++ + ++ +++ ++ + ++ + + + + ++ + + + + ++ ++ +++ ++++ +++ +++++ + +++ +++++ + ++ +++ +++ + ++ + + + + + ++ + + + + ++ + + ++ +++++ + ++++++ +++ +++ + + +++ + + ++ ++++ + ++ + ++ + ++ + + ++ + + +++ + + + ++ +++ + ++ + ++ ++++ + + + + + + + + + + + + + + +++ + + ++ + ++ + + + + + + + ++ + + + + + ++ +++ +++ + ++ ++ + + ++ ++ + + ++ + ++ + +++++ + + + + + ++ + + ++ + + +++ + ++++++ + + + + + + ++++ ++ ++ + + ++ ++ + ++ +++ ++ + + ++ ++ ++++ ++++ ++ +++ +++ + ++ + + ++++ + ++ + + + + ++ + + + + + ++ ++ + ++++ ++ + + + +++ + ++ +++++ + +++ ++ +++ + + + +++ + + + + + + + + ++ +++++++ + + +++ 0.0 0.0 0.4 0.8 2.3. Méthodes Quasi-Monte-Carlo 0.8 ++ + + + +++ + + + ++ +++ + ++ + + ++ + + ++ ++ ++ + ++ + ++ ++++++ + ++ ++++ + ++ ++++ ++++ + + + + ++ + + +++ + ++ + ++ ++ + ++ ++ +++ ++ ++ ++ + + ++ ++ ++ +++ + + + + +++ ++ + + + + ++ + ++ + + ++ + +++ ++ + ++ + ++ ++ ++ + + +++ + + + ++ + + ++ + + ++ + +++++ + ++ ++++++ ++ ++ ++ + ++ + + + + + ++ + + + + ++ + + + + ++ + + + ++ ++ ++ ++ + ++ + + +++ + ++++ +++ + + + + + + + ++ + + + + ++ ++ ++ ++ + + ++ ++++ ++ + ++ +++ + ++ + + + + + + + + + + + + + + ++ + + + + + +++ ++ + + + ++ ++ ++ + ++ ++ ++ + + ++ +++ ++ + +++ + + + ++ + ++ + + ++ + + +++ ++ ++ ++ + + ++ +++ + + + + + + + ++ + + +++ ++ + + + ++ ++ + ++ + +++ + ++ ++ + + ++ +++ + ++ ++ ++++ ++ +++ + ++ ++ ++ ++ + + + + + + + ++ + ++ + ++ + + ++ ++ + +++ +++++ +++ ++ ++ + + + + + + ++ + + + ++ ++++ + + ++ + ++ ++ ++ + + + + + + + + + + + + 0.0 0.4 0.8 Figure 2.2 – Echantillons de n = 500 points d’une suite uniforme et d’une suite de Halton. Avant de voir en quoi la notion de discrépance permet de contrôler l’erreur d’estimation, il faut introduire une notion de variation de la fonction à intégrer. Pour simplifier les choses, nous nous focaliserons sur les fonctions ϕ suffisamment régulières. Définition 4 (Variation de Hardy-Krause) La variation au sens de Hardy-Krause d’une fonction ϕ : [0, 1]d → R de classe C d est V (ϕ) = d X X Z j=1 i1 <···<ij ∂j ϕ (x(i1 , . . . , ij )) dxi1 . . . dxij , [0,1]j ∂xi1 . . . ∂xij avec x(i1 , . . . , ij ) le point de Rd dont toutes les coordonnées valent 1 sauf celles de rangs (i1 , . . . , ij ) qui valent respectivement (xi1 , . . . , xij ). Ainsi, lorsque d = 1, on a tout simplement Z V (ϕ) = 1 0 |ϕ′ (x)|dx = kϕ′ k1 . Pour d = 2, ça se complique un peu : 2 Z 1 Z 1 ZZ ∂ϕ ∂ ϕ ∂ϕ V (ϕ) = (x , 1) (1, x ) (x , x ) dx + dx + 2 1 2 dx1 dx2 . 2 ∂x1 1 1 ∂x2 0 [0,1]2 ∂x1 ∂x2 0 Il est clair qu’en dimension supérieure, estimer la variation de Hardy-Krause devient vite inextricable : somme de (2d − 1) termes, dérivées partielles... Néanmoins, cette notion intervient de façon cruciale pour majorer la qualité d’un estimateur basé sur une séquence (ξn )n≥1 . Théorème 3 (Inégalité de Koksma-Hlawka) Pour toute fonction ϕ : [0, 1]d → R et toute suite (ξn )n≥1 de [0, 1]d , on a Z n 1 X ϕ(x)dx ≤ V (ϕ) × Dn⋆ (ξ), ϕ(ξi ) − n d [0,1] i=1 où V (ϕ) est la variation de ϕ au sens de Hardy-Krause et Dn⋆ (ξ) la discrépance de ξ à l’ordre n. Simulations Monte-Carlo Arnaud Guyader 48 Chapitre 2. Intégration Monte-Carlo L’intérêt de ce résultat est de séparer l’erreur d’estimation en deux termes : l’un faisant intervenir la régularité de ϕ, l’autre les propriétés de (ξn )n≥1 en terme de discrépance. Puisqu’a priori on n’a aucune latitude sur ϕ, l’idée est de prendre (ξn )n≥1 de discrépance minimale. En dimension 1, il est prouvé qu’on ne peut faire mieux qu’une discrépance en O(log n/n). En dimension supérieure, ce problème est encore ouvert à l’heure actuelle : on sait prouver que la discrépance ne peut être plus petite que O((log n)d/2 /n), mais la conjecture est que la meilleure borne possible est en fait en O((log n)d /n). Ceci explique la définition suivante. Définition 5 (Suites à discrépance faible et méthodes Quasi-Monte-Carlo) Une suite (ξn )n≥1 de [0, 1]d vérifiant Dn⋆ (ξ) = O((log n)d /n) est dite à discrépance faible et une méthode d’approximation basée sur ce type de suite est dite Quasi-Monte-Carlo. Exemples. Outre les suites de Halton détaillées ci-dessus, on peut citer les suites de Faure, de Sobol et de Niederreiter comme exemples de suites à discrépance faible. Si l’on revient au problème d’intégration I= Z ϕ(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 ) Iˆn = n i=1 est un estimateur Quasi-Monte-Carlo de l’intégrale I, dont l’erreur (déterministe) est donc en O((log n)d /n). Rappelons qu’une méthode Monte-Carlo classique présente une erreur (moyenne) √ en O(1/ n) et qu’une méthode de de type quadrature a une erreur (déterministe) en O(n−s/d ). Dès lors, les méthodes Quasi-Monte-Carlo sont typiquement compétitives en dimension “intermédiaire” et pour des fonctions suffisamment régulières. C’est du reste leur cadre d’application en mathématiques financières. Reférences. Sur toute cette section, on trouvera compléments et exemples en Chapitre 7 de [18] ainsi qu’en Chapitre 3 de [14]. 2.4 Exercices Exercice 2.1 (Estimation de π) On revient sur la méthode vue en cours de simulation uniforme dans le quart de disque unité. 1. En déduire un estimateur π̂n de π, ainsi qu’un intervalle de confiance asymptotique à 95%. 2. Sur un même graphique, représenter π̂n et les intervalles de confiance en fonction de n pour n allant de 1 à 1000. Ajouter à ce graphique la droite horizontale y = π. 3. Comment choisir n pour obtenir une précision au centième sur π (avec 95% de chances) ? 4. Retrouver ce résultat par simulation. Exercice 2.2 (Estimation de la constante d’Euler) On considère sur R la fonction de répartition F (x) = exp(− exp(−x)). Si X a pour fonction de répartition F , on peut montrer que E[X] = γ ≈ 0.577, constante d’Euler. 1. Par la méthode d’inversion, proposer une méthode pour simuler une variable X de fonction de répartition F . Arnaud Guyader Simulations Monte-Carlo 2.4. Exercices 49 2. Implémenter la méthode précédente pour simuler un échantillon X1 , . . . , Xn de taille n = 104 . En déduire un estimateur γ̂n de γ ainsi qu’un intervalle de confiance asymptotique à 95%. 3. Sur un même graphique, pour n allant de 1 à 1000, représenter γ̂n et les intervalles de confiance asymptotiques à 95% en fonction de n. Ajouter à ce graphique le droite horizontale y = γ en rouge. 4. Si X a pour fonction de répartition F , quelle est sa densité f ? Soit g(x) = 12 exp(−|x|) la densité d’une variable de Laplace : représenter la fonction x 7→ f (x)/g(x) pour x variant de -10 à 10. Au vu de ce graphique, que vaut m = supx∈R f (x)/g(x) ? Le démontrer. 5. Rappeler comment simuler Y selon une loi de Laplace. A partir de la question précédente, implémenter une méthode de rejet pour simuler X de densité f . 6. Des deux méthodes précédentes (inversion et rejet), laquelle choisiriez-vous pour simuler X? Exercice 2.3 (Bayes in memoriam ) Une boule de billard est lancée au hasard uniforme sur une ligne de longueur 1, sa position étant notée θ. Ceci fait, une seconde boule est lancée de la même façon N fois de suite sur cette ligne et x est le nombre de fois où elle arrive à gauche de la première. 1. Avec les notations du cours, préciser la loi a priori π(θ), la vraisemblance f (x|θ) et la loi a posteriori π(θ|x). En déduire, en fonction de x et N , la moyenne a posteriori de θ (ou espérance de θ sachant x). Idem pour la variance a posteriori. 2. Pour N = 10 et x = 7, retrouver ces résultats par simulation. 3. Dans le cas général (i.e. on ne suppose plus N = 10 et x = 7), comparer la variance a posteriori de θ à sa variance a priori. 4. La moyenne a posteriori de θ correspond-elle à l’estimateur au maximum de vraisemblance ? 5. Que dire du mode a posteriori ? Exercice 2.4 (Modèle bayésien gaussien) Les réels τ et σ étant fixés non nuls, on suppose que θ suit une loi normale N (0, τ 2 ) et que, sachant θ, X suit une loi normale N (θ, σ 2 ). 1. Montrer que la densité a posteriori π(θ|x) est celle d’une loi normale dont on précisera moyenne et variance en fonction de x, τ et σ. 2. Comparer la variance a posteriori à la variance a priori. 3. La moyenne a posteriori de θ correspond-elle à l’estimateur au maximum de vraisemblance ? 4. Que dire du mode a posteriori ? Exercice 2.5 (Estimation d’événement rare) On veut retrouver par simulation la valeur de p = P(X ≥ 6) avec X ∼ N (0, 1). 1. Déterminer p grâce à la fonction pnorm de R. 2. Rappeler l’estimateur Monte-Carlo standard basé sur n variables gaussiennes simulées via la fonction rnorm. Estimer p avec n le plus grand possible. 3. Si T suit une loi exponentielle de paramètre 1, donner la densité de l’exponentielle décalée Y = 6 + T . En déduire un estimateur d’échantillonnage préférentiel pour p, le représenter en fonction de n, ainsi que les intervalles de confiance à 95%. Exercice 2.6 (Here comes trouble) On veut retrouver par simulation la valeur de p = P(X ≥ 10) avec X qui suit une loi de Pareto de paramètres (1, 3), c’est-à-dire de densité f (x) = 3x−4 1x≥1 . Simulations Monte-Carlo Arnaud Guyader 50 Chapitre 2. Intégration Monte-Carlo 1. Déterminer la valeur de p. 2. Illustrer comme en exercice précédent la convergence de l’estimateur Monte-Carlo standard. 3. Utiliser une loi exponentielle translatée pour estimer p, représenter la convergence et expliquer ce qui se passe. Exercice 2.7 (Somme d’exponentielles et conditionnement) Soit X et Y deux variables indépendantes suivant respectivement des lois exponentielles de paramètres 1 et 2. On veut estimer p = P(X + Y > 5). 1. Pour un Monte-Carlo classique, représenter l’estimateur de la variance en fonction de n. 2. Soit S = X + Y la somme des deux variables. Préciser E[1S>5 |Y = y] et en déduire une méthode par conditionnement pour estimer p. Représenter le gain en variance par rapport à la question précédente. 3. Déterminer la densité de S et retrouver p. Exercice 2.8 (Décembre 2016) On suppose que Y ∼ N (1, 1) et que, sachant Y = y, X suit une loi normale de moyenne y et de variance 4. On veut estimer I = P(X > 1). 1. En écrivant X comme la somme de deux variables gaussiennes indépendantes, montrer que I = 1/2. 2. Proposer un estimateur Monte-Carlo Iˆn de I ainsi qu’un intervalle de confiance asymptotique à 95%. Sur un même graphique, pour n allant de 1 à 1000, représenter Iˆn et les intervalles de confiance asymptotiques à 95% en fonction de n. Ajouter à ce graphique la droite horizontale y = 1/2 en rouge. 3. Proposer un estimateur I˜n de I par la méthode de conditionnement (rappel : si Y ∼ N (m, s2 ), alors pnorm(q,mean=m,sd=s) correspond à P(Y ≤ q)). Sans faire de calculs, est-il meilleur que Iˆn ? Exercice 2.9 (Vecteur gaussien et exponential tilting) Dans cet exercice, on pourra utiliser le package mvtnorm. On veut estimer p = P((X, Y ) ∈ R) où (X, Y ) est un vecteur gaussien centré de matrice de covariance 4 −1 , Γ= −1 4 et Ra = {(x, y), x ≥ a, y ≥ a}, avec successivement a = 1, a = 3, a = 10. 1. Pour chaque a, estimer p par Monte-Carlo classique. 2. Déterminer le point (x0 , y0 ) de Ra où la densité de la loi normale N (0, Γ) est maximale. 3. Proposer une méthode d’Importance Sampling basée sur la densité N ((x0 , y0 ), Γ) et comparer aux résultats de la première question. 4. Reprendre la question précédente avec des densités instrumentales de la forme N ((x0 , y0 ), δΓ) pour différentes valeurs de δ. Exercice 2.10 (Stratification et supercanonical rate) On étudie ici une méthode d’accélération de la convergence se basant sur un principe de stratification. On commence par l’illustrer sur un exemple jouet, à savoir l’estimation de Z 1 cos xdx. (2.5) I = E[cos X] = 0 1. Rappeler l’estimateur Monte-Carlo classique Iˆn de I. Arnaud Guyader Simulations Monte-Carlo 2.4. Exercices 51 2. Grâce à une représentation log-log, c’est-à-dire avec log n en abscisse et le log de l’écart-type √ empirique en ordonnée, retrouver le fait que la convergence est en 1/ n. 3. L’entier n étant fixé, on considère les n strates Xj = [xj−1 , xj ] = [(j − 1)/n, j/n] et on simule un seul point Uj par strate. Avec les notations du cours, préciser les probabilités pj ainsi que, pour tout j, la loi L(X|X ∈ Xj ). En déduire l’estimateur stratifié I˜n de I et déterminer sa vitesse de convergence grâce à une représentation log-log. 4. En (2.5), on généralise cosinus en une fonction ϕ dérivable telle que M1 = kϕ′ k∞ < ∞. (a) Via les accroissements finis, montrer que si Uj ∼ U[xj−1 ,xj ] , alors Var(ϕ(Uj )) ≤ M12 /n2 . (b) En déduire que l’écart-type de I˜n est en n−3/2 . On parle de “supercanonical rate” par référence à la vitesse canonique en n−1/2 d’une méthode Monte-Carlo classique. Exercice 2.11 (Preuve par couplage de l’inégalité de covariance de Tchebychev) Soit X une variable aléatoire, ϕ une fonction croissante et ψ une fonction décroissante telles que ϕ(X) et ψ(X) soient de carré intégrable. 1. Soit X ′ une variable de même loi que X et indépendante de celle-ci. Montrer que Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = E[(ϕ(X) − ϕ(X ′ ))(ψ(X) − ψ(X ′ )] ≤ 0. 2. Montrer par ailleurs que : Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = 2 Cov(ϕ(X), ψ(X)), et en déduire l’inégalité de covariance de Tchebychev, à savoir que : Cov(ϕ(X), ψ(X)) ≤ 0. 3. En déduire le principe des variables antithétiques en Monte-Carlo, à savoir que si ϕ est monotone et h décroissante telle que h(X) ait même loi que X alors, sous réserve d’existence des variances, 1 ϕ(X) + ϕ(h(X)) ≤ Var(ϕ(X)). Var 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 On s’intéresse à l’estimation de l’intégrale I = 1 eu du. 0 1. Rappeler la formule de l’estimateur Monte-Carlo standard Iˆn . Rappeler le Théorème Central Limite auquel il obéit et calculer la variance σ 2 qu’il fait intervenir. Donner un estimateur σ̂n2 de σ 2 . 2. Illustrer la convergence de σ̂n2 vers σ 2 . 3. Donner un estimateur I˜n de I à base de variables antithétiques. Quelle est sa variance théorique s2 ? Par rapport au Monte-Carlo standard, par combien (environ) a-t-on divisé le temps de calcul pour atteindre la même précision ? 4. Soit c une constante et Xc = exp(U ) + c(U − 1/2), où U ∼ U[0,1] . Quelle est la moyenne de la variable Xc ? Exprimer la variance de Xc en fonction de c et des variances et covariance de U et exp(U ). En déduire la valeur c⋆ de c rendant cette variance minimale et préciser Var(Xc⋆ ). Comparer à s2 . Simulations Monte-Carlo Arnaud Guyader 52 Chapitre 2. Intégration Monte-Carlo Exercice 2.13 (Marche aléatoire avec dérive et échantillonnage préférentiel) Soit (Xn )n≥1 une suite de variables gaussiennes indépendantes N (−m, 1) avec m > 0, et Sn = X1 + · · · + Xn . Les réels a < 0 et b > 0 étant fixés, on considère le temps d’arrêt N = min{n : Sn < a ou Sn > b} et on s’intéresse à la probabilité p = P(SN > b) que la marche aléatoire (Sn ) sorte de l’intervalle [a, b] par le haut. 1. Pour m = 1, a = −50 et b = 5, simuler et représenter une trajectoire (Sn )1≤n≤N . 2. Proposer un estimateur p̂k de p basé sur k simulations successives de trajectoires. L’implémenter pour m = 1, a = −50 et b = 5. Combien trouvez-vous pour p̂k après k = 1000 simulations ? 3. Plutôt que de simuler X suivant la densité f d’une loi N (−m, 1), on simule X ′ suivant la densité g d’une loi N (m, 1). Que vaut le rapport de vraisemblance f (x′ )/g(x′ ) ? En déduire le rapport de vraisemblance fN (x′1 , . . . , x′N )/gN (x′1 , . . . , x′N ) pour une trajectoire entière (Sn′ )1≤n≤N ainsi construite. 4. Déduire de la question précédente un nouvel estimateur p̃k de p basé sur k simulations successives, et illustrer sa convergence en fonction de k pour m = 1, a = −50 et b = 5. 5. Déduire de la forme de p̃k que p ≤ exp(−2mb). Ceci est-il en accord avec le résultat obtenu à la question 2 ? Exercice 2.14 (Méthodes numériques, Monte-Carlo et Quasi-Monte-Carlo) Soient k et d deux entiers naturels non nuls. On veut estimer par plusieurs méthodes l’intégrale Z Z d Y kπ f (x)dx = I(k, d) = 2 sin(kπxj ) dx1 . . . dxd . [0,1]d [0,1]d j=1 1. Calculer à la main la valeur exacte de I(k, d). 2. Importer le package cubature et retrouver cette valeur grâce à la fonction adaptIntegrate pour d = 10 (observer la différence entre k = 1 et k = 2). d Iˆn ) 3. Implémenter l’estimateur Monte-Carlo classique Iˆn de I(k, d) ainsi qu’un estimateur Var( ˆ de sa variance. Calculer à la main la valeur exacte de Var(In ). Pour k = 1 et d = 10, tracer d Iˆn ) en fonction de n. sur un même graphique, en échelle log-log, Var(Iˆn ) et Var( 4. Sur un même graphique, représenter à gauche 500 points distribués selon une loi uniforme dans le carré [0, 1] × [0, 1], et à droite 500 points d’une suite de Halton. 5. Toujours à l’aide d’une suite de Halton, implémenter l’estimateur Quasi-Monte-Carlo I˜n de I(k, d). Sur un même graphique, pour k = 1, représenter I, Iˆn et I˜n en fonction de n. Faire varier d. Exercice 2.15 (Bayes, Cauchy et Gauss) Dans un cadre bayésien, on considère que la loi a priori sur θ est une loi de Cauchy standard et que, sachant θ, les variables Xi sont i.i.d. selon une loi normale de moyenne θ et de variance 1. 1. Donner la formule de la loi a posteriori π(θ|x) = π(θ|x1 , . . . , xN ) et de la moyenne a posteriori θ̂(x). 2. Pour θ0 = 3 et N = 10, générer X1 , . . . , XN selon une loi normale de moyenne θ et de variance 1 pour obtenir une réalisation x = (x1 , . . . , xN ). 3. En déduire un estimateur Monte-Carlo θ̂n (x) de l’estimateur de Bayes (moyenne a posteriori). Comment évolue cet estimateur avec N ? 4. Dans un cadre général, supposons qu’on veuille simuler selon la loi a posteriori π(θ|x). Si on adopte une méthode de rejet avec comme loi instrumentale la loi a priori π(θ), montrer que la constante optimale m est liée à l’estimateur du maximum de vraisemblance θ̂mv . Arnaud Guyader Simulations Monte-Carlo 2.4. Exercices 53 5. Si on revient au cas particulier précédent avec θ0 = 3, N = 10 et x = (x1 , . . . , xN ), en déduire une méthode de rejet pour simuler selon la loi a posteriori. Représenter un échantillon de taille n = 100 selon cette loi a posteriori via un histogramme ou via la fonction density. Idem avec N = 100. Exercice 2.16 (Estimation d’une p-value) On considère un vecteur gaussien en dimension 2, X = [X1 , X2 ]′ ∼ N ([θ1 , θ2 ]′ , I2 ), où I2 est la matrice identité en dimension 2. On veut tester H0 : θ1 = θ2 = 0 contre H1 : ∃j ∈ {1, 2}, θj 6= 0. Pour ce faire, on considère la statistique de test T (X) = max(|X1 |, |X2 |). 1. On notera G la fonction de répartition de la loi N (0, 1) et F celle de la variable aléatoire T (X) sous H0 . Pour tout t ≥ 0, exprimer F (t) en fonction de G(t). Soit α ∈]0, 1[ le risque de première espèce. En déduire q = qα tel que, sous H0 , P(T (X) > q) = α, et un test de niveau α pour décider entre H0 et H1 . 2. Soit x = [x1 , x2 ]′ une réalisation de X. On rappelle que la p-value associée est la probabilité que, sous H0 , α0 (x) = P(T (X) ≥ T (x)). Déduire de la question précédente cette p-value en fonction de T (x). Que vaut-elle pour x = [1, 2]′ ? 3. Toujours pour x = [1, 2]′ , retrouver approximativement cette p-value en simulant un grand nombre de vecteurs aléatoires gaussiens i.i.d. de loi N ([0, 0]′ , I2 ). 4. On suppose maintenant que X= X1 X2 ∼N θ1 θ2 1 2 , , 2 5 et on veut toujours tester H0 : θ1 = θ2 = 0 contre H1 : ∃j ∈ {1, 2}, θj 6= 0, avec la même statistique de test T (X) = max(|X1 |, |X2 |). La formule théorique de la p-value n’est plus aussi simple et on ne cherchera pas à l’expliciter. Par contre, la méthode Monte-Carlo se généralise sans problème. Toujours pour x = [1, 2]′ , déterminer (approximativement) cette p-value en simulant un grand nombre de vecteurs aléatoires gaussiens. Exercice 2.17 (Test du rapport de vraisemblance) Soit X ∼ B(N, θ). On veut tester H0 : θ = θ0 contre H1 : θ 6= θ0 . Le test du rapport de vraisemblance consiste à calculer la statistique de test T (X) = −2 log θ0X (1 − θ0 )N −X θ̂ X (1 − θ̂)N −X , où θ̂ est l’estimateur du maximum de vraisemblance et avec la convention usuelle 00 = 1. 1. Exprimer θ̂ en fonction de X et N . Dans la suite, on considère θ0 = 1/2. 2. Soit x une observation selon la loi B(N, 1/2). La p-value du test est définie par α0 (x) = P(T (X) ≥ T (x)), avec X ∼ B(N, 1/2). Comment estimer α0 (x) par une méthode Monte-Carlo ? Implémenter cette méthode pour N = 10. 3. On peut montrer que, sous H0 , T (X) tend en loi vers une χ21 lorsque N tend vers l’infini. Pour N = 104 , retrouver le résultat de la simulation de la question précédente à partir de la fonction pchisq. 4. Grâce à un développement limité en θ0 autour de θ̂, justifier la convergence vers une loi χ21 de la question précédente. Simulations Monte-Carlo Arnaud Guyader 54 Chapitre 2. Intégration Monte-Carlo 2.5 Corrigés Exercice 2.1 (Estimation de π) On revient sur la méthode vue en cours de simulation uniforme dans le quart de disque unité. 1. Estimateur et intervalle de confiance asymptotique à 95% s’obtiennent comme suit : n=1000 alpha=0.05 q=qnorm(1-alpha/2) U=runif(n) V=runif(n) pihat=4*mean((U^2+V^2<1)) sdhat=sqrt(4*pihat-pihat^2) pihatmin=pihat-q*sdhat/sqrt(n) pihatmax=pihat+q*sdhat/sqrt(n) 2. Aucune difficulté supplémentaire : n=1000 U=runif(n) V=runif(n) T=(U^2+V^2<1) pihat=4*cumsum(T)/(1:n) sdhat=sqrt(4*pihat-pihat^2) alpha=0.05 q=qnorm(1-alpha/2) pihatmin=pihat-q*sdhat/sqrt((1:n)) pihatmax=pihat+q*sdhat/sqrt((1:n)) plot((1:n),pihat,type=’l’) lines((1:n),pihatmin,type=’l’,col=’green’) lines((1:n),pihatmax,type=’l’,col=’green’) abline(h=pi,col=’red’) 3. A 95%, on a une précision au centième si |π̂n −π| < 0.01, c’est-à-dire en prenant q = 1.96 ≈ 2, σ̂n q × √ < 0.01 ⇐⇒ n > 4 · 104 σ̂n2 n or σ̂n2 ≈ 4π − π 2 , donc il faut prendre n > 105 . 4. Par simulation, on utilise l’estimation σ̂n déduite de l’échantillon et on incrémente n de 1000 en 1000 : alpha=0.05 q=qnorm(1-alpha/2) n=1000 r=Inf while(r>0.01){ U=runif(n) V=runif(n) pihat=4*mean((U^2+V^2<1)) sdhat=sqrt(4*pihat-pihat^2) r=q*sdhat/sqrt(n) n=n+1000} Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 55 Exercice 2.2 (Estimation de la constante d’Euler) On considère sur R la fonction de répartition F (x) = exp(− exp(−x)). Si X a pour fonction de répartition F , on peut montrer que E[X] = γ ≈ 0.577, constante d’Euler. 1. Pour tout u ∈]0, 1[, on a F −1 (u) = − log(− log u). Il suffit donc de simuler U ∼ U[0,1] puis de poser X = − log(− log U ). 2. On applique ceci pour simuler un échantillon i.i.d. X1 , . . . , Xn et en déduire l’estimateur n γ̂n = 1X p.s. Xi −−−→ γ. n→∞ n i=1 Par le TCL, on sait que √ L n(γ̂n − γ) −−−→ N (0, σ 2 ), n→∞ avec σ 2 = E[X 2 ] − (E[X])2 = Var(X) que l’on estime grâce au même échantillon par n 1X 2 Xi − σ̂n2 = n i=1 n 1X Xi n i=1 !2 n 1X 2 Xi − γ̂n2 . = n i=1 Un intervalle de confiance asymptotique à 95% en découle : 2σ̂n 2σ̂n γ̂n − √ , γ̂n + √ . n n Ceci donne : n=10^4 X=-log(-log(runif(n))) gammahat=sum(X)/n sdhat=sqrt(sum(X*X)/n-gammahat^2) alpha=0.05 q=qnorm(1-alpha/2) IC=c(gammahat-q*sdhat/sqrt(n),gammahat+q*sdhat/sqrt(n)) 3. De la même façon : n=10^3 X=-log(-log(runif(n))) gammahat=cumsum(X)/(1:n) sdhat=sqrt(cumsum(X*X)/(1:n)-gammahat^2) alpha=0.05 q=qnorm(1-alpha/2) ICmoins=gammahat-q*sdhat/sqrt(1:n) ICplus=gammahat+q*sdhat/sqrt(1:n) plot(1:n,gammahat,type="l",xlab="",ylab="") lines(1:n,ICmoins,type="l",col="green") lines(1:n,ICplus,type="l",col="green") abline(h=0.577,col="red") 4. Si X a pour fonction de répartition F , sa densité est définie sur R par f (x) = exp(−x − exp(−x)). Pour la représentation de f /g : Simulations Monte-Carlo Arnaud Guyader Chapitre 2. Intégration Monte-Carlo 0.2 0.6 1.0 56 0 200 400 600 800 1000 0.0 1.0 2.0 Figure 2.3 – Vraie valeur de γ, estimateur γ̂n et courbes de confiance. −10 −5 0 5 10 Figure 2.4 – Représentation de f /g. Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 57 x=seq(-10,10,.01) y=2*exp(abs(x)-x-exp(-x)) plot(x,y,type="l",col="blue",xlab="",ylab="") Graphiquement, il semble que supx∈R f (x)/g(x) = 2. Démontrons-le. Pour tout x ≥ 0, f (x) f (x) = 2F (x) =⇒ sup = 2. g(x) x≥0 g(x) Pour x < 0, posons t = −x > 0 : puisque l’exponentielle est croissante, f (x) = sup 2 exp(2t − exp t) = 2 exp sup(2t − exp t) , sup t>0 t>0 x<0 g(x) or une rapide étude de fonction montre que sup(2t − exp t) = 2 log 2 − 2 =⇒ sup t>0 x<0 f (x) 8 f (x) = 2 ≈ 1.08 < 2 =⇒ sup = 2. g(x) e x∈R g(x) 5. Pour simuler Y selon une loi de Laplace, il suffit de simuler indépendamment R selon une loi de Rademacher et T selon une loi exponentielle, puis de poser Y = R × T . La méthode de rejet s’écrit comme suit : X=0 while(X==0){ R=2*rbinom(1,1,1/2)-1 # R suit une loi de Rademacher T=rexp(1) Y=R*T # Y suit une loi de Laplace if(runif(1)<exp(-Y-exp(-Y))/(exp(-abs(Y)))){X=Y}} 6. Puisque m = 2, la méthode de rejet conduit à rejeter en moyenne un Y sur deux, tandis que la méthode d’inversion ne pâtit pas de cette perte de temps : on optera donc sans hésiter pour cette dernière. Exercice 2.3 (Bayes in memoriam) Une boule de billard est lancée au hasard uniforme sur une ligne de longueur 1, sa position étant notée θ. Ceci fait, une seconde boule est lancée de la même façon N fois de suite sur cette ligne et x est le nombre de fois où elle arrive à gauche de la première. 1. Avec les notations du cours, la densité a priori π(θ) est celle de la loi uniforme sur [0, 1], la vraisemblance f (x|θ) correspond à une loi binomiale B(N, θ), et la loi a posteriori π(θ|x) est donc par la règle de Bayes : N x θ (1 − θ)N −x θ x (1 − θ)N −x 1[0,1] (θ). π(θ|x) = Z 1 x 1[0,1] (θ) = Z 1 N x x N −x N −x t (1 − t) dt t (1 − t) dt x 0 0 La loi a posteriori est donc une loi Bêta B(x + 1, N − x + 1). L’espérance d’une loi Bêta B(α, β) étant égale à α/(α + β), La moyenne a posteriori vaut donc E[θ|x] = x+1 . N +2 Quant à la variance a posteriori, on déduit à nouveau des propriétés de la loi Bêta qu’elle vaut (x + 1)(N − x + 1) αβ = . Var(θ|x) = 2 (α + β) (α + β + 1) (N + 2)2 (N + 3) Simulations Monte-Carlo Arnaud Guyader 58 Chapitre 2. Intégration Monte-Carlo 2. La moyenne a posteriori s’écrit E[θ|x] = Z 1 θπ(θ|x)dθ = 0 Z 1 0 Z θ x+1 (1 − θ)N −x dθ 0 1 x N −x t (1 − t) . dt 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 X 1 X x+1 θix+1 (1 − θi )N −x θi (1 − θi )N −x n E[θ|x] ≈ i=1n . = i=1n X X 1 x N −x x N −x θi (1 − θi ) θi (1 − θi ) n i=1 i=1 Même principe pour la variance. Pour N = 10 et x = 7, par la question précédente, on a E[θ|x] = 2/3 et Var(θ|x) = 2/117 ≈ 0.017, ce qui se retrouve comme suit : N=10 x=7 n=1000 theta=runif(n) Epost=sum(theta^(x+1)*(1-theta)^(N-x))/sum(theta^x*(1-theta)^(N-x)) Vpost=sum(theta^(x+2)*(1-theta)^(N-x))/sum(theta^x*(1-theta)^(N-x))-Epost^2 3. La variance a priori de θ est celle d’une loi uniforme sur [0, 1], c’est-à-dire 1/12, tandis que sa variance a posteriori vaut Var(θ|x) = (x + 1)(N − x + 1) . (N + 2)2 (N + 3) Or la fonction x 7→ (x + 1)(N − x + 1) est maximale en x = N/2, ce qui donne Var(θ|x) ≤ (N/2 + 1)(N − N/2 + 1) 1 1 = ≤ = Var(θ). 2 (N + 2) (N + 3) 4(N + 3) 12 La variance a posteriori est donc inférieure à la variance a priori quelle que soit la valeur de x. Noter que, dans le cas général, la formule de décomposition de la variance nous dit juste que ceci est vrai en moyenne sur x : Var(θ) = E[Var(θ|x)] + Var(E[θ|x]) =⇒ E[Var(θ|x)] ≤ Var(θ). 4. Par l’approche fréquentiste, la vraisemblance de θ est N x N N −x L(x; θ) = f (x|θ) = θ (1−θ) =⇒ log L(x; θ) = log +x log θ+(N −x) log(1−θ). x x L’estimateur du maximum de vraisemblance est la valeur θ̂ qui maximise celle-ci en θ : x N −x x ∂ log L(x; θ) = − =⇒ θ̂ = , ∂θ θ 1−θ N qui est donc différent de la moyenne a posteriori E[θ|x] = (x + 1)/(N + 2), cette différence s’atténuant avec N . Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 59 5. Pour tous paramètres α et β strictement plus grands que 1, le mode a posteriori d’une loi Bêta B(α, β) est (α − 1)/(α + β − 2), ce qui donne ici x/N . Dans ce cas particulier (loi a priori non informative), le mode a posteriori correspond donc à l’estimateur du maximum de vraisemblance. Exercice 2.4 (Modèle bayésien gaussien) Les réels τ et σ étant fixés non nuls, on suppose que θ suit une loi normale N (0, τ 2 ) et que, sachant θ, X suit une loi normale N (θ, σ 2 ). 1. On a donc π(θ)f (x|θ) ∝ π(θ)f (x|θ), π(θ|x) = f (x) où le symbole ∝ signifie “proportionnel à” et cache une constante indépendante de θ. Toujours en faisant abstraction des constantes de normalisation indépendantes de θ, on en déduit 2 θ2 π(θ|x) ∝ e− 2τ 2 e− (x−θ)2 2σ 2 − 12 ∝e 2 θ2 + θ −2xθ τ2 σ2 2 +τ 2 ) 2σ 2 τ 2 − (σ ∝e θ− τ 2x σ 2 +τ 2 . Autrement dit, sachant x, θ suit une loi normale N (τ 2 x/(σ 2 + τ 2 ), (σ 2 τ 2 )/(σ 2 + τ 2 )). 2. La variance a posteriori Var(θ|x) = τ2 σ2 τ 2 ≤ τ 2 = Var(θ), = τ2 σ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 E[θ|x] = τ 2x . σ2 + τ 2 La vraisemblance s’écrivant L(x; θ) = f (x|θ) = √ 1 2πσ 2 e− (x−θ)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 1Xi ≥6 , p̂ = n i=1 où les Xi sont i.i.d. suivant une loi normale N (0, 1). D’après ce qui précède, il faudrait prendre n de l’ordre d’un milliard, ce qui prend beaucoup trop de temps. Si on prend n plus petit, par exemple Simulations Monte-Carlo Arnaud Guyader 60 Chapitre 2. Intégration Monte-Carlo n=10^8 x=rnorm(n) phat=mean(x>6) on trouve logiquement un estimateur égal à 0 neuf fois sur dix... Bref, même sur un exemple aussi simple, on voit que l’estimation d’un événement rare est infaisable par une méthode Monte-Carlo standard. 3. Si T suit une loi exponentielle de paramètre 1, et Y = 6 + T , alors Y est à valeurs dans [6, +∞) avec pour tout y ≥ 6, FY (y) = P(Y ≤ y) = P(T ≤ y − 6) = 1 − e−(y−6) =⇒ fY (y) = e−(y−6) 1y≥6 , c’est-à-dire que Y suit une loi exponentielle translatée. On en déduit un estimateur par échantillonnage préférentiel où les Yi sont simulées selon fY (ce qui est très facile) : n=10^3 alpha=0.05 q=qnorm(1-alpha/2) y=6+rexp(n) w=exp(y-6-y^2/2)/sqrt(2*pi) ptilde=cumsum(w)/(1:n) sdtilde=sqrt(cumsum(w^2)/(1:n)-ptilde^2) r=q*sdtilde/sqrt((1:n)) ptildemin=ptilde-r ptildemax=ptilde+r plot((1:n),ptilde,type=’l’) lines((1:n),ptildemin,type=’l’,col=’green’) lines((1:n),ptildemax,type=’l’,col=’green’) abline(h=p,col=’red’) Pour n = 1000 comme ici, le résultat est instantané et la précision relative est très bonne puisqu’on constate sur les simulations qu’elle est de l’ordre de 10%. Exercice 2.6 (Here comes trouble) On veut retrouver par simulation la valeur de p = P(X ≥ 10) avec X qui suit une loi de Pareto de paramètres (1, 3), c’est-à-dire de densité f (x) = 3x−4 1x≥1 . 1. La valeur de p est immédiate par intégration de la densité : p = 1/1000. Après avoir installé le package actuar, on peut la retrouver grâce à la fonction ppareto1 : library(actuar) p=1-ppareto1(10,shape=3,min=1) 2. L’estimateur Monte-Carlo standard est basé sur une suite i.i.d. de variables Xi suivant la loi de Pareto, lesquelles peuvent s’obtenir par la méthode d’inversion vue en Exercice 1.2 ou à nouveau via le package actuar. Puisque p = 1/1000, il faut prendre n suffisamment grand pour obtenir une estimation à peu près correcte de cette probabilité. library(actuar) p=1-ppareto1(10,shape=3,min=1) n=10^5 alpha=0.05 q=pnorm(1-alpha/2) x=rpareto1(n,shape=3,min=1) # ou bien x=runif(n)^(-1/3) phat=cumsum((x>10))/(1:n) Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 61 sdhat=sqrt(phat*(1-phat)) r=q*sdhat/sqrt((1:n)) phatmin=phat-r phatmax=phat+r plot((1:n),phat,type=’l’) lines((1:n),phatmin,type=’l’,col=’green’) lines((1:n),phatmax,type=’l’,col=’green’) abline(h=p,col=’red’) 3. Puisqu’on ne s’intéresse qu’à des réalisations des Xi au-delà de 10, on peut tenter un échantillonnage préférentiel à base d’exponentielles translatées comme dans l’exercice précédent, ce qui s’écrit ici : 6e−04 9e−04 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’) 0 200 400 600 800 1000 Figure 2.5 – Estimation de la queue d’une variable de Pareto par échantillonnage préférentiel. On voit que l’estimateur est complètement instable (voir figure 2.5) : ceci est dû au fait que l’hypothèse E[w2 (Y )ϕ2 (Y )] < ∞ de la Proposition 9 n’est pas vérifiée dans ce contexte : 2 2 E[w (Y )ϕ (Y )] = Z ∞ 10 3y −4 e−(y−10) 2 −(y−10) e dy = Z ∞ 10 9y −8 ey−10 dy = ∞. Dit simplement, la loi exponentielle est à queue de distribution plus légère que la loi de Pareto, ce qui explique les sauts dans l’estimateur par échantillonnage préférentiel : dès que Yi prend une “grande valeur”, le rapport w(Yi ) = 3Yi−4 exp(Yi − 10) explose. Morale de l’histoire : pour la méthode d’importance sampling, il ne faut pas prendre comme loi Simulations Monte-Carlo Arnaud Guyader 62 Chapitre 2. Intégration Monte-Carlo instrumentale (i.e. celle de Y ) une loi à queue plus légère que la loi d’origine (i.e. celle de X) ! Exercice 2.7 (Somme d’exponentielles et conditionnement) Soit X et Y deux variables indépendantes suivant respectivement des lois exponentielles de paramètres 1 et 2. On veut estimer p = P(X + Y > 5). 1. Pour un Monte-Carlo classique, on représente en fonction de n l’estimateur de la formule (2.3), à savoir !2 n n 1X 1X 2 2 ϕ (Xi ) − ϕ(Xi ) , σn = n n i=1 i=1 lequel tend presque sûrement vers la variance asympototique Z 2 2 2 σ = Var(ϕ(X)) = E[ϕ (X)] − E[ϕ(X)] = ϕ2 (x)f (x)dx − I 2 . Notons au préalable que la probabilité cherchée peut se calculer facilement (cf. infra) et on obtient p = P(X + Y > 5) = 2e−5 − e−10 ≈ 0.013 =⇒ σ 2 = p(1 − p) ≈ 0.013 En tout état de cause, la probabilité visée étant de l’ordre de 1/100, il faut prendre n assez grand. n=10^4 s=rexp(n,rate=1)+rexp(n,rate=2) phat=cumsum((s>5))/(1:n) vhat=phat*(1-phat) plot((1:n),vhat,type=’l’) 2. Soit S = X + Y la somme des deux variables. Puisque X et Y sont indépendantes, sachant Y = y, la variable S = X + y suit une loi exponentielle de paramètre 1 décalée de y, c’est-à-dire de densité f (s|y) = e−(s−y) 1s≥y . Il vient donc E[1S>5 |Y = y] = P(S > 5|Y = y) = 1y>5 + P(X > 5 − y)1y<5 = 1y>5 + e−(5−y) 1y<5 . La probabilité p peut s’estimer par conditionnement. On simule des Yi i.i.d. selon une loi exponentielle de paramètre 2 et on considère l’estimateur : n n i=1 i=1 1X 1X 1Yi >5 + eYi −5 1Yi <5 . E[ϕ(S)|Yi ] = p̃n = n n Ce qui donne : n=10^4 y=rexp(n,rate=2) ec=(y>5)+exp(y-5)*(y<5) ptilde=cumsum(ec)/(1:n) vtilde=cumsum(ec^2)/(1:n)-ptilde^2 plot((1:n),vtilde,type=’l’) Par rapport à un Monte-Carlo standard, on a divisé la variance d’estimation par (environ) 40. Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 63 3. La variable S est à valeurs positives et sa densité se calcule par convolution des densités de X et Y puisque celles-ci sont indépendantes. Pour tout s ≥ 0, Z s Z +∞ e−x × 2e−2(s−x) dx, fX (x)fY (s − x)dx = fS (s) = 0 −∞ ce qui donne fS (s) = 2 e−s − e−2s 1s≥0 . La probabilité cherchée en découle à peu de frais : Z +∞ p = P(S > 5) = 2 e−s − e−2s ds = 2e−5 − e−10 ≈ 0.013. 5 Exercice 2.8 (Décembre 2016) On suppose que Y ∼ N (1, 1) et que, sachant Y = y, X suit une loi normale de moyenne y et de variance 4. On veut estimer I = P(X > 1). 1. Soit Y ∼ N (1, 1) et W ∼ N (0, 4) indépendantes, alors par construction de X, on a l’égalité en loi 1 L X = Y + W ∼ N (1, 5) =⇒ I = P(X > 1) = . 2 2. Pour estimer I de façon naïve, il suffit de simuler n variables Y1 , . . . , Yn i.i.d. selon la loi N (1, 1), puis de simuler n variables X1 , . . . , Xn selon les lois N (Yi , 4) et de calculer n 1X 1Xi >1 . Iˆn = n i=1 n=10^3 alpha=0.05 q=qnorm(1-alpha/2) y=rnorm(n,mean=1,sd=1) x=rnorm(n,mean=y,sd=2) Ihat=cumsum(x>1)/(1:n) sdhat=sqrt(Ihat*(1-Ihat)) r=q*sdhat/sqrt((1:n)) Ihatmin=Ihat-r Ihatmax=Ihat+r plot((1:n),Ihat,type=’l’) lines((1:n),Ihatmin,type=’l’,col=’green’) lines((1:n),Ihatmax,type=’l’,col=’green’) abline(h=1/2,col=’red’) 3. Sachant Y = y, la valeur P(X > 1) s’obtient tout simplement par la commande "1pnorm(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 Pi . I˜n = n i=1 n=10^3 y=rnorm(n,mean=1,sd=1) px=1-pnorm(1,mean=y,sd=2) Simulations Monte-Carlo Arnaud Guyader 64 Chapitre 2. Intégration Monte-Carlo Itilde=cumsum(px)/(1:n) plot(1:n,Itilde,type="l") abline(h=1/2,col=’red’) Comme pour toute méthode par conditionnement, la variance de I˜n est plus petite que celle de Iˆn . Exercice 2.9 (Vecteur gaussien et exponential tilting) On veut estimer p = P((X, Y ) ∈ R) où (X, Y ) est un vecteur gaussien centré de matrice de covariance 4 −1 Γ= , −1 4 et Ra = {(x, y), x ≥ a, y ≥ a}, avec successivement a = 1, a = 3, a = 10. 1. Par Monte-Carlo classique, on trouve successivement pour a = 1, 3, 10, les probabilités P(R1 ) ≈ 0.065, P(R3 ) ≈ 0.0014 et P(R10 ) = ?, l’événement R10 étant trop rare pour être estimé par Monte-Carlo standard (c’est-à-dire qu’avec des n raisonnables, on trouve toujours 0). library(mvtnorm) m=c(0,0) gamma=matrix(c(4,-1,-1,4),nrow=2) a=3 n=10^6 ech=rmvnorm(n,m,gamma) phat=cumsum((ech[,1]>a)*(ech[,2]>a))/(1:n) plot((1:n),phat,type=’l’) 2. La commande eigen(gamma) montre que les vecteurs propres de Γ sont [1, 1]′ et [1, −1]′ . Les courbes de niveau de la densité 1 1 1 1 −1 ′ 2 2 √ √ f (x, y) = exp − 2x + xy + 2y . exp − [x, y]Γ [x, y] = 2 15 2π 15 2π det Γ sont donc des ellipses d’axes y = x et y = −x. On en déduit que le point (x0 , y0 ) de Ra où cette densité est maximale est tout simplement (a, a). On peut représenter ces courbes de niveau et la région Ra de la façon suivante (voir figure 2.6) : f=function(x,y){exp(-(2*x^2+x*y+2*y^2)/15)/(2*pi*sqrt(15))} x=seq(-5,5,length=200) y=x z=outer(x,y,f) contour(x,y,z) lines(x,x,col=’red’) lines(x,-x,col=’red’) a=1 segments(a,a,5,a,col="blue") segments(a,a,a,5,col="blue") 3. L’implémentation de l’Importance Sampling à partir de la loi instrumentale N ((a, a), Γ) est élémentaire à l’aide des fonctions rmvnorm et dmvnorm de la librairie mvtnorm : Arnaud Guyader Simulations Monte-Carlo 65 −4 −2 0 2 4 2.5. Corrigés −4 −2 0 2 4 Figure 2.6 – Ellipses de confiance de la gaussienne et domaine Ra . a=10 m0=c(a,a) n=10^5 ech=rmvnorm(n,m0,gamma) w=dmvnorm(ech,m,gamma)/dmvnorm(ech,m0,gamma) ptilde=cumsum(w*(ech[,1]>a)*(ech[,2]>a))/(1:n) plot((1:n),ptilde,type=’l’) On trouve en particulier que P(R10 ) ≈ 10−17 , probabilité qui était en effet impossible à estimer avec un Monte-Carlo classique... 4. La mise en œuvre est tout aussi simple. On représente cette fois la variance pour avoir une idée du réglage du paramètre δ : a=10 m0=c(a,a) delta=0.1 gamma0=delta*gamma n=10^4 ech=rmvnorm(n,m0,gamma0) w=dmvnorm(ech,m,gamma)/dmvnorm(ech,m0,gamma0) ptilde=cumsum(w*(ech[,1]>a)*(ech[,2]>a))/(1:n) vtilde=cumsum(w^2*(ech[,1]>a)*(ech[,2]>a))/(1:n)-ptilde^2 plot((1:n),vtilde,type=’l’) On voit que prendre δ < 1 améliore la précision, mais si on le prend trop petit, par exemple δ < 0.01, alors l’estimation devient instable : c’est le même phénomène qu’en Exercice 2.6, la loi instrumentale étant à queue bien plus légère que la loi d’origine. A contrario, prendre δ > 1 détériore la variance, donc la précision. La valeur δ = 0.1 semble un bon compromis : on pourra effectuer une boucle balayant différentes valeurs de δ pour affiner cette estimation. Remarque. La raison pour laquelle il est judicieux de prendre δ < 1 est que la restriction d’une gaussienne au-delà d’un seuil est très concentrée autour de celui-ci : ici, pour a = 10, presque toute la probabilité de R10 est concentrée autour de (10, 10), d’où l’idée d’effectuer des tirages autour de ce seul point. Exercice 2.10 (Stratification et supercanonical rate) On étudie ici une méthode d’accélération de la convergence se basant sur un principe de stratifiSimulations Monte-Carlo Arnaud Guyader 66 Chapitre 2. Intégration Monte-Carlo cation. On commence par l’illustrer sur un exemple jouet, à savoir l’estimation de Z 1 cos xdx. I = E[cos X] = 0 1. L’estimateur Monte-Carlo classique prend la forme suivante : n 1X Iˆn = cos Xi , n i=1 avec les Xi i.i.d. selon la loi uniforme U[0,1] . √ 2. On illustre la convergence en 1/ n de l’écart-type comme suit : n=10^3 nsim=10^2 hatI=matrix(0,nrow=nsim,ncol=n) for (k in 1:nsim){ X=runif(n) hatI[k,]=cumsum(cos(X))/(1:n)} sigmahatI=apply(hatI,2,sd) plot(log(1:n),log(sigmahatI),type=’l’) reg=lm(log(sigmahatI)~log(1:n)) reg$coef # on trouve une pente de l’ordre de -1/2 x=log(1:n) y=reg$coef[1]+reg$coef[2]*x # droite des moindres carrés lines(x,y,col=’red’) 3. L’entier n étant fixé, on considère les n strates Xj = [xj−1 , xj ] = [(j − 1)/n, j/n] et on simule un seul point Uj par strate. Avec les notations du cours, les probabilités pj sont donc toutes égales et valent pj = P(X ∈ Xj ) = P(xj−1 ≤ X ≤ xj ) = 1 . n De plus, pour tout j, on a L(X|X ∈ Xj ) = U[xj−1 ,xj ] . L’estimateur stratifié I˜n de I s’écrit donc dans ce cadre I˜n = n n X 1 1X cos Uj = cos Uj , n n j=1 j=1 avec Uj ∼ U[xj−1 ,xj ] . La simulation suivante montre que la vitesse de convergence est en fait en n−3/2 , donc bien meilleure qu’un Monte-Carlo standard : N=10^3 nsim=10^2 tildeI=matrix(0,nrow=nsim,ncol=N) for(k in 1:nsim){ for(n in 1:N){ U=((0:(n-1))+runif(n))/n tildeI[k,n]=mean(cos(U))}} sigmatildeI=apply(tildeI,2,sd) plot(log(1:n),log(sigmatildeI),type=’l’) Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 67 reg=lm(log(sigmatildeI)~log(1:n)) reg$coef # on trouve une pente de l’ordre de -3/2 x=log(1:n) y=reg$coef[1]+reg$coef[2]*x # droite des moindres carrés lines(x,y,col=’red’) 4. On généralise cosinus en une fonction ϕ dérivable telle que M1 = kϕ′ k∞ < ∞. (a) Le théorème des accroissements finis implique qu’il existe une variable aléatoire θj ∈ (xj−1 , Uj ) telle que ϕ(Uj ) = ϕ(xj−1 ) + (Uj − xj−1 )ϕ′ (θj ). Or ϕ(xj−1 ) est déterministe donc Var(ϕ(Uj )) = Var(ϕ(xj−1 ) + (Uj − xj−1 )ϕ′ (θj )) = Var((Uj − xj−1 )ϕ′ (θj )). Par ailleurs, il est clair que si |X| ≤ a, alors Var(X) ≤ a2 , d’où 2 (Uj − xj−1 )ϕ′ (θj ) ≤ M1 =⇒ Var(ϕ(Uj )) ≤ M1 . n n2 (b) Les variables Uj étant indépendantes, la variance de l’estimateur stratifié s’en déduit : n n X 1 1 X M2 ˜ Var(In ) = Var Var (ϕ(Uj )) ≤ 31 . ϕ(Uj ) = 2 n n n j=1 j=1 On en déduit que l’écart-type de I˜n est en n−3/2 . Remarque. Non seulement cette méthode va plus vite qu’un Monte-Carlo classique, mais elle est aussi plus précise qu’une méthode numérique supposant uniquement la fonction ϕ dérivable, c’est-à-dire la méthode des rectangles, laquelle donne seulement une vitesse en 1/n. Il faut bien noter cependant que la méthode des rectangles donne un encadrement absolu, c’est-à-dire qu’on a toujours |Rn − I| ≤ M1 , 2n tandis que de l’encadrement proposé ci-dessus ne découlent “que” des intervalles de confiance... Bref, tout ça n’est pas si étonnant. Exercice 2.11 (Preuve par couplage de l’inégalité de covariance de Tchebychev) Soit X une variable aléatoire, ϕ une fonction croissante et ψ une fonction décroissante telles que ϕ(X) et ψ(X) soient de carré intégrable. 1. Puisque X et X ′ ont même loi, il en va de même pour les variables ϕ(X) et ϕ(X ′ ) d’une part, et ψ(X) et ψ(X ′ ) d’autre part, lesquelles ont donc la même moyenne, d’où Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = E[(ϕ(X) − ϕ(X ′ ))(ψ(X) − ψ(X ′ )] − E[ϕ(X) − ϕ(X ′ )]E[ψ(X) − ψ(X ′ ] = E[(ϕ(X) − ϕ(X ′ ))(ψ(X) − ψ(X ′ )] Z = (ϕ(X(ω)) − ϕ(X ′ (ω)))(ψ(X(ω)) − ψ(X ′ (ω))P(dω) Ω et de deux choses l’une : ou bien X(ω) ≤ X ′ (ω) =⇒ ϕ(X(ω)) − ϕ(X ′ (ω)) ≤ 0 et ψ(X(ω)) − ψ(X ′ (ω)) ≥ 0, Simulations Monte-Carlo Arnaud Guyader 68 Chapitre 2. Intégration Monte-Carlo ou bien X(ω) ≥ X ′ (ω) =⇒ ϕ(X(ω)) − ϕ(X ′ (ω)) ≥ 0 et ψ(X(ω)) − ψ(X ′ (ω)) ≤ 0. Quoi qu’il en soit (ϕ(X(ω)) − ϕ(X ′ (ω)))(ψ(X(ω)) − ψ(X ′ (ω)) ≤ 0, donc Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) ≤ 0. 2. Puisque X et X ′ sont indépendantes, toute fonction de X est indépendante de toute fonction de X ′ , donc Cov(ϕ(X), ψ(X ′ )) = Cov(ϕ(X ′ ), ψ(X)) = 0. La bilinéarité de la covariance donne Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = Cov(ϕ(X), ψ(X)) + Cov(ϕ(X ′ ), ψ(X ′ )), et le fait que X et X ′ ont même loi assure donc que Cov(ϕ(X) − ϕ(X ′ ), ψ(X) − ψ(X ′ )) = 2 Cov(ϕ(X), ψ(X)). De cette égalité et de l’inégalité de la question précédente, on déduit bien l’inégalité de covariance de Tchebychev : Cov(ϕ(X), ψ(X)) ≤ 0. 3. Si ϕ est croissante (resp. décroissante) et h décroissante, alors ϕ ◦ h est décroissante (resp. croissante). Dans tous les cas, ϕ et ϕ ◦ h ont des monotonies opposées donc, d’après le résultat précédent, Cov(ϕ(X), ϕ(h(X))) ≤ 0. Or, par bilinéarité, 1 ϕ(X) + ϕ(h(X)) = (Var(ϕ(X)) + 2 Cov(ϕ(X), ϕ(h(X))) + V (ϕ(h(X)))) , Var 2 4 d’où Var ϕ(X) + ϕ(h(X)) 2 ≤ 1 1 (Var(ϕ(X)) + V (ϕ(h(X))) = Var(ϕ(X)), 4 2 la dernière égalité étant due au fait que ϕ(X) et ϕ(h(X)) ont même loi par hypothèse. 4. Si X ∼ N (0, 1), alors h(X) = −X ∼ N (0, 1). La fonction h étant décroissante, la fonction exponentielle croissante, on peut appliquer ce qui précède. L’estimateur antithétique s’écrit n 1 X eXi + e−Xi , I˜n = n 2 (2.6) i=1 où les Xi sont i.i.d. gaussiennes centrées réduites. Pour illustrer la réduction de variance obtenue par rapport à une méthode Monte-Carlo classique, on commence par analyser celleci. Sa variance asymptotique est égale à σ 2 = Var(exp X) = E[exp 2X] − E[exp X] = e2 − e, la dernière égalité se déduisant par exemple de la fonction génératrice des moments d’une loi normale centrée réduite, à savoir E[exp tX] = exp(t2 /2). Pour l’estimateur antithétique défini par (2.6), on peut estimer la variance par simulation : Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 69 n=10^5 nsim=10^2 Itilde=matrix(0,nrow=nsim,ncol=n) for (k in 1:nsim){ X=rnorm(n) Itilde[k,]=cumsum(0.5*(exp(X)+exp(-X)))/(1:n)} vtilde=apply(Itilde,2,var)*(1:n) plot(1:n,vtilde,type=’l’) Notons que la convergence de σ̃n2 vers la variance asymptotique 1 (Var(exp X) + Cov(exp X, exp(−X))) 2 est très lente. Néanmoins, celle-ci est facile à calculer et donne σ̃ 2 = σ̃ 2 e−1 1 (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 σ̃ 2 = 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 p̃n = 1 X 1− log(1−Ui )− 21 log(1−Vi )>5 + 1− log Ui − 21 log Vi >5 . n 2 i=1 La variance asymptotique de cet estimateur est difficile à calculer de façon exacte. On peut toutefois l’estimer : n=10^5 nsim=10^2 Panti=matrix(0,nrow=nsim,ncol=n) for (k in 1:nsim){ U=runif(n) V=runif(n) S=-log(U)-log(V)/2 Sa=-log(1-U)-log(1-V)/2 Panti[k,]=cumsum(0.5*((S>5)+(Sa>5)))/(1:n)} Vanti=apply(Panti,2,var)*(1:n) plot(1:n,Vanti,type=’l’) Ici encore, la convergence de l’estimateur de la variance est très lente : la limite semble se situer entre 0.005 et 0.01, à peine mieux que la variance du Monte-Carlo standard (0.013) si l’on tient compte du surcoût algorithmique, et en tout état de cause nettement moins bonne que la méthode par conditionnement (2 · 10−4 ). Bref, l’approche par variables antithétiques n’apporte à peu près rien dans ce cas. Much ado about nothing... Simulations Monte-Carlo Arnaud Guyader 70 Chapitre 2. Intégration Monte-Carlo Exercice 2.12 (Variables antithétiques) On s’intéresse à l’estimation de l’intégrale Z 1 eu du = e − 1. I= 0 1. L’estimateur de Monte-Carlo standard est n 1 X Ui e , Iˆn = n i=1 où les Ui sont i.i.d. uniformes sur [0, 1]. On a alors √ L n Iˆn − I −−−→ N (0, σ 2 ), n→∞ avec 1 σ 2 = Var(exp U ) = E[exp(2U )] − (E[exp U ])2 = (e2 − 1) − (e − 1)2 ≈ 0.242. 2 Un estimateur naturel de σ 2 est n σ̂n2 = 1 X 2Ui e n i=1 ! n − 1 X Ui e n i=1 !2 . 2. Illustration de la convergence de σ̂n2 vers σ 2 : n=10^3 sigma2=(exp(2)-1)/2-(exp(1)-1)^2 U=runif(n) sigma2hat=cumsum(exp(2*U))/(1:n)-(cumsum(exp(U))/(1:n))^2 plot((1:n),sigma2hat,type=’l’) abline(h=sigma2,col=’red’) 3. Puisque la fonction exponentielle est monotone, on va nécessairement gagner en variance grâce à l’estimateur antithétique n 1 X eUi + e1−Ui I˜n = . n 2 i=1 La variance est cette fois U 1 e + e1−U 2 = (Var(exp U ) + Cov(exp U, exp(1 − U ))) . s = Var 2 2 Le premier terme a déjà été calculé, c’est σ 2 . Pour le second, puisque U et (1− U ) ont même loi, Cov(exp U, exp(1 − U )) = E[exp(U ) exp(1 − U )] − E[exp(U )]E[exp(1 − U )] = e − I 2 , d’où 1 2 σ + 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. s2 = Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 71 4. De E[U ] = 1/2, on déduit que pour toute constante c, E[Xc ] = E[exp(U )] = I. Pour la variance, il vient Var(Xc ) = Var(U )c2 + 2Cov(U, exp U )c + Var(exp U ), quantité minimale en c = c⋆ = − Cov(U, exp U ) , Var(U ) qui donne Var(Xc⋆ ) = Var(exp U ) − Cov(U, exp U )2 . 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 1 Var(Xc⋆ ) = σ − 12 1 − (e − 1) = 0.00394 . . . 2 2 A très peu de choses près, la réduction de variance est donc la même que celle de l’estimateur antithétique. Exercice 2.13 (Marche aléatoire avec dérive et échantillonnage préférentiel) 1. Représentation d’une trajectoire pour m = 1, a = −50 et b = 5 : m=1 a=-50 b=5 n=1 S=rnorm(1,-m,1) I=(S<a)+(S>b) while(I==0){ S=cbind(S,S[n]+rnorm(1,-m,1)) n=n+1 I=(S[n]<a)+(S[n]>b)} plot(1:n,S,type=’l’) 2. On simule k trajectoires S(1), . . . , S(k), avec pour tout j entre 1 et k, S(j) = (Sn (j))1≤n≤N (j) la trajectoire obtenue à la j-ème simulation. Pour celle-ci, notons 0 si sN (j) < a I(j) = 1 si sN (j) > b L’estimateur Monte-Carlo standard de p s’écrit alors p̂k = k 1X I(j). k j=1 L’implémentation se déduit de celle de la question précédente : k=10^3 m=1 a=-50 Simulations Monte-Carlo Arnaud Guyader Chapitre 2. Intégration Monte-Carlo −30 −50 S −10 72 0 10 20 30 40 50 60 1:n Figure 2.7 – Exemple de trajectoire de la marche aléatoire avec dérive. b=5 n=1 compteur=rep(0,k) for(j in (1:k)){ n=1 S=rnorm(1,-m,1) I=(S<a)+(S>b) while(I==0){ S=cbind(S,S[n]+rnorm(1,-m,1)) n=n+1 I=(S[n]<a)+(S[n]>b)} compteur[j]=(S[n]>b)} p=sum(compteur)/k Après 1000 simulations, on trouve en général p̂k = 0, c’est-à-dire qu’aucune des 1000 trajectoires simulées n’est sortie par le haut. 3. Les rapports de vraisemblance valent respectivement N Y fN (x′1 , . . . , x′N ) f (x′ ) ′ ′ −2mx′ e−2mxn = e−2msn . =⇒ = e = ′ ′ ′ 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 I ′ (j) = ( 0 1 si s′N (j) < a si s′N (j) > b Pour un total de k simulations, on en déduit l’estimateur par échantillonnage préférentiel k 1X ′ I (j) exp(−2ms′N (j) ). p̃k = k j=1 Avec ce qui précède, l’implémentation est immédiate : Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 73 k=10^3 m=1 a=-50 b=5 n=1 p=rep(0,k) for(j in (1:k)){ n=1 S=rnorm(1,m,1) I=(S<a)+(S>b) while(I==0){ S=cbind(S,S[n]+rnorm(1,m,1)) n=n+1 I=(S[n]<a)+(S[n]>b)} p[j]=(S[n]>b)*exp(-2*m*S[n])} ptilde=cumsum(p)/(1:k) plot(1:k,ptilde,type=’l’) 5. Puisque I ′ (j) = 1 lorsque s′N (j) > b, il vient que pour tout k, p̃k ≤ k 1 X −2mb e = e−2mb =⇒ p = E[p̃k ] ≤ e−2mb . k j=1 Pour m = 1 et b = 5, ceci donne p ≤ 4.5 × 10−5 . Il était donc clair que les 1000 simulations de la question 2 ne suffisaient pas du tout pour voir ne serait-ce qu’une trajectoire sortir de [a, b] par le haut. Exercice 2.14 (Méthodes numériques, Monte-Carlo et Quasi-Monte-Carlo) Soient k et d deux entiers naturels non nuls. On veut estimer par plusieurs méthodes l’intégrale I(k, d) = Z f (x)dx = [0,1]d Z [0,1]d d Y j=1 kπ 2 sin(kπxj ) dx1 . . . dxd . 1. Les variables étant séparables, l’intégrale du produit peut s’écrire comme un produit d’intégrales, ce qui donne I(k, d) = Z 0 1 kπ 2 sin(kπx)dx d = − 21 1 d cos(kπx) 0 = 1 − (−1)k 2 d = 1 − (−1)k . 2 2. Pour la fonction adaptIntegrate, il faut préciser le nombre maximal d’appels à f via l’argument MaxEval : library(cubature) k=1 d=10 f=function(x){prod(k*pi/2*sin(k*pi*x))} adaptIntegrate(f,rep(0,d),rep(1,d),maxEval=10^4) paste("Valeur théorique de I =", (1-(-1)^k)/2) Pour k = 1, l’intégrale vaut 1 mais son estimation est proche de 10, donc très mauvaise. Par contre, il n’y a pas de problème pour k = 2. Simulations Monte-Carlo Arnaud Guyader 74 Chapitre 2. Intégration Monte-Carlo 3. Puisqu’on a choisi de fixer le nombre maximal d’appels à f à 10000 pour la méthode déterministe de la question précédente, on fait le même choix pour l’estimateur MonteCarlo. On voit que tout se passe bien, quelle que soit la parité de k : k=1 d=10 n=10^4 f=function(x){prod(k*pi/2*sin(k*pi*x))} Xunif=matrix(runif(n*d),nrow=n) fXunif=rep(0,n) for (i in 1:n){fXunif[i]=f(Xunif[i,])} Ihat=cumsum(fXunif)/(1:n) plot(1:n,Ihat,type="l",ylab="") abline(h=(1-(-1)^k)/2,col="red") La variance théorique de l’estimateur s’écrit : 1 Var(Iˆn ) = n Z [0,1]d f (x)2 dx − I(k, d)2 ! , avec comme ci-dessus : d 2 2 d Z 1 Z k π 2 2 k2 π2 (sin(kπx)) dx = . f (x) dx = 4 8 0 [0,1]d d Iˆn ) se représentent donc comme suit : En échelle log-log, Var(Iˆn ) et Var( k=1 d=10 n=10^4 f=function(x){prod(k*pi/2*sin(k*pi*x))} Xunif=matrix(runif(n*d),nrow=n) fXunif=rep(0,n) for (i in 1:n){fXunif[i]=f(Xunif[i,])} Ihat=cumsum(fXunif)/(1:n) Vhat=(cumsum(fXunif^2)/(1:n)-Ihat^2)/(1:n) Vtheo=((k^2*pi^2/8)^d-((1-(-1)^k)/2)^2)/(1:n) plot(log(1:n),log(Vhat),type="l",ylab="") lines(log(1:n),log(Vtheo),type="l",col="red") La variance théorique est une droite de pente égale à -1 vers laquelle tend la variance estimée. 4. Par défaut, la suite de Halton en dimension 2 prend pour bases les deux premiers nombres premiers, soit (b1 , b2 ) = (2, 3), comme expliquée en Section 2.3. library(randtoolbox) n=500 par(mfrow=c(1,2)) plot(runif(n),runif(n),pch="+",xlab="",ylab="",main="Suite uniforme") plot(halton(n,dim=2),pch="+",xlab="",ylab="",main="Suite de Halton") par(mfrow=c(1,1)) 5. L’estimateur Quasi-Monte-Carlo I˜n s’implémente de la même façon que l’estimateur MonteCarlo Iˆn : Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 75 k=1 d=10 f=function(x){prod(k*pi/2*sin(k*pi*x))} n=10000 Xunif=matrix(runif(n*d),nrow=n) Xhalton=matrix(halton(n,dim=d),nrow=n) fXunif=rep(0,n) fXhalton=rep(0,n) for (i in 1:n){ fXunif[i]=f(Xunif[i,]) fXhalton[i]=f(Xhalton[i,])} Ihat=cumsum(fXunif)/(1:n) Itilde=cumsum(fXhalton)/(1:n) plot(1:n,Ihat,type="l",col="blue",ylab="") lines(1:n,Itilde,type="l",col="green") abline(h=(1-(-1)^k)/2,col="red") On remarque que, lorsque la dimension augmente (prendre par exemple d = 20), l’estimateur Quasi-Monte-Carlo devient moins bon que l’estimateur Monte-Carlo. Exercice 2.15 (Bayes, Cauchy et Gauss) Dans un cadre bayésien, on considère que la loi a priori sur θ est une loi de Cauchy standard et que, sachant θ, les variables Xi sont i.i.d. selon une loi normale de moyenne θ et de variance 1. 1. La densité a posteriori s’obtient par la formule de Bayes : N X Cx 1 π(θ)f (x|θ) 2 = (x − θ) exp , − π(θ|x) = j 2 f (x) 1 + θ2 j=1 où, comme d’habitude, la constante de normalisation Z N 1X 1 2 Cx = dt exp (x − t) − j 2 2 R 1+t 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)dθ = Cx (x − θ) exp dθ. θ̂(x) = − j 2 2 R 1+θ R 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 N n 1X X (xj − θi )2 θi exp − Pn 2 j=1 i=1 i=1 θi f (x|θi ) θ̂n (x) = P . = n n N 1X i=1 f (x|θi ) X exp − (xj − θi )2 2 i=1 Simulations Monte-Carlo j=1 Arnaud Guyader 76 Chapitre 2. Intégration Monte-Carlo Pour simuler θ suivant une loi de Cauchy standard, on se sert du résultat vu en exercice 1.5. n=1000 num=rep(0,n) den=rep(0,n) for (i in 1:n){ theta=tan(pi*(runif(1)-0.5)) lik=exp(-0.5*sum((x-theta)^2)) num[i]=theta*lik den[i]=lik} thetahat=cumsum(num)/cumsum(den) plot(1:n,thetahat,type="l") abline(h=theta0,col="red") Sans surprise, plus N est grand, plus l’estimateur θ̂(x), lui-même estimé par θ̂n (x), est proche de 3. 4. Dans un cadre général, supposons qu’on veuille simuler selon la loi a posteriori π(θ|x). Si on adopte une méthode de rejet avec comme loi instrumentale la loi a priori π(θ), on cherche donc à majorer le rapport π(θ|x)/π(θ) pour tout θ. Or π(θ|x) f (x|θ) f (x|θ̂mv ) = ≤m= π(θ) f (x) f (x) par définition même de l’estimateur du maximum de vraisemblance θ̂mv . Pour une méthode de rejet, il suffit donc de simuler selon la loi a priori π(θ) et de calculer le rapport d’acceptation f (x|θ̂mv ) π(θ|x) = . 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 o n 1 PN 2 (x − θ) exp − j=1 j 2 f (x|θ̂mv ) n o = exp − N2 (x̄ − θ)2 . = P N f (x|θ) exp − 1 (x − x̄)2 2 j=1 j Si on revient au cas particulier précédent avec θ0 = 3, N = 10 et x = (x1 , . . . , xN ), on peut donc construire un échantillon de taille n = 100 selon la loi a posteriori π(θ|x) comme suit : theta0=3 N=100 n=100 x=rnorm(N,mean=theta0,sd=1) xbar=mean(x) ech=rep(0,n) for (i in 1:n){ while (ech[i]==0){ theta=tan(pi*(runif(1)-0.5)) if(runif(1)<exp(-N*(xbar-theta)^2/2)){ech[i]=theta}}} plot(density(ech),col="red",xlab="",ylab="",main="") Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 77 Plus on prend N grand, plus la densité se concentre autour de la vraie valeur du paramètre θ0 = 3. Exercice 2.16 (Estimation d’une p-value) On considère un vecteur gaussien en dimension 2, X = [X1 , X2 ]′ ∼ N ([θ1 , θ2 ]′ , I2 ), où I2 est la matrice identité en dimension 2. On veut tester H0 : θ1 = θ2 = 0 contre H1 : ∃j ∈ {1, 2}, θj 6= 0. Pour ce faire, on considère la statistique de test T (X) = max(|X1 |, |X2 |). 1. On se place sous H0 , i.e. X est un vecteur gaussien standard en dimension 2. Puisque T (X) est une variable aléatoire positive, on a F (t) = 0 pour t ≤ 0. Pour t ≥ 0, on voit facilement que F (t) = (2G(t) − 1)2 . Pour tout α ∈]0, 1[, on a donc −1 P(T (X) > q) = α ⇐⇒ 1 − F (q) = α ⇐⇒ q = G 1+ √ 1−α 2 Pour une réalisation x = [x1 , x2 ]′ , on calcule T (x) = max(|x1 |, |x2 |). Si T (x) ≤ q, on accepte H0 , sinon on rejette H0 . Ceci constitue un test de niveau de risque α. 2. Si x = [1, 2]′ , alors T (x) = 2 et α0 (x) = P(T (X) ≥ 2) = 1 − F (2) = 1 − (2G(2) − 1)2 , ce qui donne 1-(2*pnorm(2)-1)^2 3. Il suffit de simuler des échantillons i.i.d. de vecteurs gaussiens centrés réduits, de prendre le max des valeurs absolues des 2 coordonnées et de compter le nombre de fois où ce max est plus grand que 2. n=10^5 m=c(0,0) gamma=matrix(c(1,0,0,1),nrow=2) library(MASS) ech=mvrnorm(n,m,gamma) X=apply(abs(ech),1,max) pvalue=sum(X>2)/n On retrouve approximativement la p-value ci-dessus : pvalue 4. On procède, mutatis mutandis, de la même façon : n=10^5 m=c(0,0) gamma=matrix(c(1,2,2,5),nrow=2) library(MASS) ech=mvrnorm(n,m,gamma) X=apply(abs(ech),1,max) pvalue=sum(X>2)/n pvalue Simulations Monte-Carlo Arnaud Guyader 78 Chapitre 2. Intégration Monte-Carlo Exercice 2.17 (Test du rapport de vraisemblance) Soit X ∼ B(N, θ). On veut tester H0 : θ = θ0 contre H1 : θ 6= θ0 . Le test du rapport de vraisemblance consiste à calculer la statistique de test T (X) = −2 log θ0X (1 − θ0 )N −X θ̂ X (1 − θ̂)N −X , où θ̂ est l’estimateur du maximum de vraisemblance. 1. On montre sans problème que, dans ce modèle, l’estimateur du maximum de vraisemblance correspond à θ̂ = X/N puisque la log-vraisemblance s’écrit N X X − Nθ ℓN (θ) = log =⇒ θ̂ = . + X log θ + (N − X) log(1 − θ) =⇒ ℓ′N (θ) = X θ(1 − θ) N 2. Soit x une observation selon la loi B(N, 1/2). La p-value du test est définie par α0 (x) = P(T (X) ≥ T (x)), avec X ∼ B(N, 1/2). Pour estimer α0 (x), il suffit donc de générer des variables Xi i.i.d. selon une loi B(N, 1/2) et de compter la proportion des fois où la valeur T (Xi ) obtenue est plus grande que T (x) : n 1X α̂0 (x) = 1T (Xi )≥T (x) . n i=1 Avec N = 10, ceci s’écrit : theta0=1/2 N=10 x=rbinom(1,N,theta0) thetahat=x/N Tobs=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0))) n=1000 T=rep(0,n) for (i in 1:n){ x=rbinom(1,N,theta0) thetahat=x/N T[i]=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0)))} alpha0hat=mean(T>=Tobs) 3. Pour N = 104 , on a donc α̂0 (x) ≈ 1 − F (T (x)), où F est la fonction de répartition associée à la loi χ21 . Ceci donne : theta0=1/2 N=10^4 x=rbinom(1,N,theta0) thetahat=x/N Tobs=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0))) n=1000 T=rep(0,n) for (i in 1:n){ x=rbinom(1,N,theta0) thetahat=x/N Arnaud Guyader Simulations Monte-Carlo 2.5. Corrigés 79 T[i]=2*(x*(log(thetahat)-log(theta0))+(N-x)*(log(1-thetahat)-log(1-theta0)))} alpha0hat=mean(T>=Tobs) alpha0theo=1-pchisq(Tobs,df=1) 4. Notre but est de montrer que, sous H0 : θ = θ0 , T (X) = −2 log θ0X (1 − θ0 )N −X θ̂ X (1 − θ̂)N −X L −−−−→ χ21 . N →∞ En remarquant que X = N θ̂ et en se plaçant sous H0 , la statistique de test s’écrit encore n o T (X) = 2N θ̂(log θ̂ − log θ0 ) + (1 − θ̂)(log(1 − θ̂) − log(1 − θ0 )) . Le développement limité log x = log x0 + x − x0 (x − x0 )2 − + o((x − x0 )2 ) x0 2x20 appliqué en x = θ0 et x0 = θ̂ donne log θ0 = log θ̂ + θ0 − θ̂ θ̂ − (θ0 − θ̂)2 2θ̂ 2 + (θ̂ − θ0 )2 εN , 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 log(1 − θ0 ) = log(1 − θ̂) + θ̂ − θ0 1 − θ̂ (θ̂ − θ0 )2 − 2(1 − θ̂)2 + (θ̂ − θ0 )2 δN , où (δN ) est une suite de variables aléatoires tendant en probabilité vers 0 lorsque N tend vers l’infini. Revenant à l’expression de T (X), on obtient après simplifications ( ) 1 T (X) = − θ̂εN − (1 − θ̂)δN × N (θ̂ − θ0 )2 . θ̂(1 − θ̂) Puisque θ̂ = X/N avec X ∼ B(N, θ0 ), on a d’une part P θ̂ −−−−→ θ0 , N →∞ et d’autre part √ L N (θ̂ − θ0 ) −−−−→ N (0, θ0 (1 − θ0 )), donc par le théorème de continuité N× Puisque 1 θ̂(1 − θ̂) N →∞ (θ̂ − θ0 )2 L −−−−→ χ2 . θ0 (1 − θ0 ) N →∞ 1 P − θ̂εN − (1 − θ̂)δN −−−−→ N →∞ 1 , θ0 (1 − θ0 ) le Lemme de Slutsky permet de conclure. De façon générale, ce résultat reste vrai dès que θ̂ est l’estimateur du maximum de vraisemblance dans un modèle régulier au sens de l’information de Fisher. Simulations Monte-Carlo Arnaud Guyader Chapitre 3 Monte-Carlo par Chaînes de Markov Introduction Le premier chapitre exposait quelques méthodes pour simuler des variables aléatoires X1 , X2 , . . . i.i.d. selon une loi f donnée. Ceci étant supposé possible, le deuxième chapitre en donnait une application classique pour l’estimation de Z I = E[ϕ(X)] = ϕ(x)f (x)dx, (3.1) en premier lieu par l’estimateur Monte-Carlo standard n 1X ϕ(Xi ). Iˆn = n (3.2) i=1 Ceci étant, la convergence de Iˆn vers I est encore valable si les variables Xn ne sont plus i.i.d., mais constituent par exemple une chaîne de Markov de loi stationnaire f . On parle alors de méthodes Monte-Carlo par chaînes de Markov (MCMC), dont l’algorithme de Metropolis-Hastings est l’exemple le plus connu. Afin de simplifier les choses, ce chapitre en présente les idées dans le cadre d’un espace d’états fini, mais tout est transposable dans un cadre plus général. 3.1 Rappels sur les chaînes de Markov Soit (Xn ) une suite de variables aléatoires quement E = {1, 2, . . . , M }. E est appelé de Markov homogène si pour tout n ≥ 1 P(X0 = i0 , . . . , Xn−1 = in−1 , Xn = i) > 0, on à valeurs dans un ensemble E supposé fini, typil’espace d’états. On dit que (Xn ) est une chaîne et toute suite (i0 , i1 , . . . , in−1 , i, j) de E telle que a l’égalité suivante : P(Xn+1 = j|X0 = i0 , . . . , Xn−1 = in−1 , Xn = i) = P(Xn+1 = j|Xn = i) = P(X1 = j|X0 = i). Autrement dit, sachant le présent, le futur est indépendant du passé. Ou encore : l’état présent étant connu, toute information sur le passé est inutile pour prévoir l’état futur. On appelle alors probabilité de transition de l’état i vers l’état j la quantité pij = P(X1 = j|X0 = i), et matrice de transition de la chaîne la matrice P = [pij ]1≤i,j≤M de taille M × M . Cette matrice vérifie les propriétés suivantes : — Encadrement des coefficients : ∀(i, j) ∈ {1, . . . , M }2 , 0 ≤ pij ≤ 1. 81 82 Chapitre 3. Monte-Carlo par Chaînes de Markov — Somme par ligne : pour tout i ∈ {1, . . . , M }, on a M X pij = 1. j=1 — Spectre : P admet la valeur propre 1, le vecteur e = [1, . . . , 1]′ étant un vecteur propre associé. Le sous-espace propre associé à la valeur propre 1 n’est pas nécessairement de dimension égale à 1. Pour preuve l’exemple trivial de la matrice identité : noter que cet exemple correspondrait à une chaîne qui ne change jamais d’état, il ne présente donc pas un grand intérêt. Par ailleurs, la spécification de la loi initiale, c’est-à-dire des P(X0 = i) pour tout i ∈ {1, . . . , M }, et des probabilités de transition pij permet d’écrire très simplement la loi jointe du vecteur aléatoire (X0 , . . . , Xn ), puisque : P(X0 = i0 , X1 = i1 , . . . , Xn = in ) = P(X0 = i0 )P(X1 = i1 |X0 = i0 )...P(Xn = in |Xn−1 = in−1 ) = P(X0 = i0 )pi0 i1 . . . pin−1 in . A toute chaîne de Markov peut être associé un graphe de transition de la façon suivante : les sommets du graphe sont les états 1, . . . , M de la chaîne et il existe un arc, étiqueté pij , de i vers j si pij > 0. Cette construction est commode lorsque M n’est pas trop grand ou lorsque la matrice P est très creuse, autrement dit lorsque d’un état on ne peut transiter que vers un petit nombre d’états. 1 2 1 2 0 1 2 3 1 3 Figure 3.1 – Graphe de transition de la ligne téléphonique. Exemple : la ligne téléphonique. On considère une ligne de téléphone. L’état Xn de cette ligne à l’étape n est 0 si elle est libre et 1 si elle occupée. Entre deux instants successifs, il y a une probabilité 1/2 pour qu’un appel arrive. Si la ligne est occupée et qu’un appel arrive, cet appel est perdu. La probabilité pour que la ligne se libère entre l’instant n et l’instant (n + 1) est 1/3. Le graphe de transition de cette chaîne de Markov est donné figure 3.1. La matrice de transition est la suivante : 1/2 1/2 P = . 1/3 2/3 Les probabilités de transition en n étapes sont en fait complètement déterminées par les probabilités de transition en un coup, c’est-à-dire par la matrice de transition. Ceci est explicité par les équations de Chapman-Kolmogorov, que nous allons voir maintenant. Notation. La probabilité d’aller de l’état i à l’état j en n coups est notée : (n) pij = P(Xn = j|X0 = i), et la matrice de transition en n coups est notée : i h (n) P (n) = pij 1≤i,j≤M . On adopte aussi la convention P (0) = IM , matrice identité de taille M . Arnaud Guyader Simulations Monte-Carlo 3.1. Rappels sur les chaînes de Markov 83 Proposition 12 (Equations de Chapman-Kolmogorov) Pour tout n ≥ 0, la matrice de transition en n coups est la puissance n-ème de la matrice de transition de la chaîne, c’est-à-dire : P (n) = P n . Remarque. On en déduit que pour tout couple d’entiers naturels (n1 , n2 ) : P (n1 +n2 ) = P n1 +n2 = P n1 × P n2 = P (n1 ) × P (n2 ) . C’est plutôt cette équation qu’on appelle relation de Chapman-Kolmogorov. Ce qu’on traduit comme suit : aller de i à j en (n1 + n2 ) pas, c’est d’abord aller de i à un certain k en n1 pas, puis de k à j en n2 pas. Notation. Tout comme les transitions de la chaîne, la position initiale X0 peut être aléatoire. On convient de noter la loi de X0 comme un vecteur ligne de taille M : µ = [µ1 , . . . , µM ] = [P(X0 = 1), . . . , P(X0 = M )] . De même, on notera en vecteur ligne la loi de Xn : P(Xn ) = [P(Xn = 1), . . . , P(Xn = M )] . Corollaire 1 (Loi marginale de la chaîne) Soit (Xn ) une chaîne de Markov de loi initiale µ et de matrice de transition P , alors pour tout entier naturel n, la loi de Xn est : P(Xn ) = µP n . Pour une suite de variables aléatoires (Xn ) à valeurs dans l’ensemble fini E = {1, . . . , M }, la convergence en loi correspond simplement à la convergence du vecteur ligne P(Xn ) de taille M , c’est-à-dire à la convergence de chacune de ses M composantes. Puisque P(Xn ) = µP n , une condition suffisante pour la convergence en loi de (Xn ) est donc la convergence de la suite (P n ) des puissances de la matrice P . Tant qu’à faire, on aimerait avoir convergence de la loi de (Xn ) vers une loi indépendante de la loi µ, phénomène connu sous le nom d’oubli de la condition initiale. Mentionnons deux situations pathologiques : 0 1 1 0 P = et Q= = I2 . (3.3) 1 0 0 1 Dans le premier cas, on a P 2n = I2 et P 2n+1 = P , donc (P n ) ne converge pas et, a fortiori, P(Xn ) = µP n non plus sauf dans le cas très particulier µ = [1/2, 1/2] d’équidistribution initiale. On a ici un problème de périodicité. Dans le second cas, on a P(Xn ) = µQn = µ trivialement convergente, mais on n’oublie pas la loi initiale pour autant. C’est un problème de communication entre états auquel on a cette fois affaire. Afin d’éviter ces désagréments, nous nous focaliserons sur les chaînes irréductibles et apériodiques. Une chaîne est dite irréductible si tous les états communiquent entre eux, autrement dit : pour tout couple de sommets du graphe de transition, il existe un chemin allant de l’un à l’autre en suivant le sens des flèches. Elle est dite apériodique si ∀i ∈ {1, . . . , M }, Simulations Monte-Carlo di = pgcd(n ≥ 1, P n (i, i) > 0) = 1. Arnaud Guyader 84 Chapitre 3. Monte-Carlo par Chaînes de Markov La quantité di est appelée période de l’état i. Lorsqu’une chaîne est irréductible, tous les états ont même période d. Pour une chaîne irréductible, une condition suffisante d’apériodicité est qu’il existe un état sur lequel elle puisse boucler, c’est-à-dire un indice j tel que pjj > 0. En (3.3), la chaîne de matrice de transition P est irréductible mais pas apériodique (période 2), tandis que celle correspondant à Q est apériodique, mais pas irréductible. Théorème 4 (Convergence des chaînes irréductibles et apériodiques) Si (Xn ) est une chaîne de Markov irréductible de matrice de transition P sur E = {1, . . . , M }, il existe une unique mesure de probabilité π = [π1 , . . . , πM ] invariante pour cette chaîne, c’est-à-dire telle que πP = π. Cette mesure est telle que πj > 0 pour tout j et, pour toute fonction ϕ : E → R, on a alors M n X 1X p.s. ϕ(j)πj ϕ(Xk ) −−−→ Eπ (ϕ) = n→∞ n j=1 k=1 et √ n ! n 1X L ϕ(Xk ) − Eπ (ϕ) −−−→ N (0, σ 2 (ϕ)). n→∞ n k=1 Si, en outre, la chaîne est apériodique, alors il y a convergence à vitesse géométrique de P n vers la matrice Π dont les M lignes sont égales à π : il existe des constantes C > 0 et α ∈ [0, 1) telles que ∀n ≥ 0, ∀(i, j) ∈ E × E, |P n (i, j) − πj | ≤ Cαn . La constante α est liée au spectre de la matrice de transition P : c’est un majorant de la plus grande des valeurs propres (en module) autres que 1. La propriété de convergence géométrique semble donc une excellente nouvelle, mais lorsque l’espace d’états est très grand, C peut être très grande et α très proche de 1 : ce résultat n’a alors plus aucune implication pratique. On parle indifféremment de loi invariante, ou loi stationnaire ou encore de loi d’équilibre, pour π vérifiant πP = π. Si l’on revient à l’exemple de la matrice de transition P en (3.3), qui est irréductible, l’unique loi stationnaire est π = [1/2, 1/2]. D’après le théorème, cette chaîne vérifie donc une loi des grands nombres, à savoir n 1X 1 p.s. ϕ(Xk ) −−−→ (ϕ(1) + ϕ(2)) , n→∞ 2 n k=1 ainsi qu’un théorème central limite, mais certainement pas de convergence en loi. La raison est intuitivement claire : la moyennisation sur une trajectoire de la chaîne permet de tuer le phénomène de périodicité, ce qui n’est pas le cas de la convergence en loi. Sous la seule hypothèse d’irréductibilité, la mesure d’équilibre π peut s’interpréter comme la proportion 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. −−−→ Eπ (1M ) = πM . 1M (Xk ) = 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 M M X X ϕ(j)πj , ϕ2 (j)πj − Varπ (ϕ) = j=1 j=1 1. #A désigne le cardinal de l’ensemble A. Arnaud Guyader Simulations Monte-Carlo 3.1. Rappels sur les chaînes de Markov 85 qui correspondrait à la variance “limite”, i.e. celle de ϕ(X) lorsque X a pour loi π. Il faut en effet tenir compte des dépendances entre les variables Xn de la chaîne, ce qui complique tout... Définition 6 (Réversibilité) Soit π = [π1 , . . . , πM ] une mesure de probabilité et (Xn ) une chaîne de Markov de matrice de transition P . On dira que π est réversible pour la chaîne si elle vérifie les équations d’équilibre détaillé, à savoir πi pij = πj pji ∀1 ≤ i, j ≤ M. Une interprétation est la suivante : considérons la mesure initiale µ = [µ1 , . . . , µM ] comme une répartition de masses sur les M points de l’espace d’états, la masse totale valant donc 1. Entre l’instant 0 et l’instant 1, une proportion pij de la masse µi présente en i part en j, et ce pour tout couple de sommets (i, j). Il est facile de voir que la répartition des masses à l’instant 1 est µP , c’est-à-dire la loi de X1 . Ainsi, de façon générale, dire que π est une mesure d’équilibre pour P (c’est-à-dire que πP = π), signifie que si l’on part de cette mesure à un instant donné, tout ce qui quitte l’état i est égal à tout ce qui arrive dans l’état i : la répartition des masses ne change donc pas d’un instant au suivant. Dire que π est réversible pour P est plus fort : sous la loi π, ce qui part de l’état i pour aller vers l’état j est égal à ce qui part de l’état j pour aller vers l’état i. Le terme de réversibilité s’explique comme suit : si X0 ∼ π, alors les équations d’équilibre détaillé permettent d’écrire pour la loi jointe P(X0 = i0 , X1 = i1 , . . . , Xn = in ) = πi0 pi0 i1 . . . pin−1 in = pi1 i0 . . . pin in−1 πin = πin pin in−1 . . . pi1 i0 = P(X0 = in , X1 = in−1 , . . . , Xn = i0 ) = P(Xn = i0 , Xn−1 = i1 , . . . , X0 = in ). Autrement dit, la chaîne retournée dans le temps a la même loi : L(X0 , . . . , Xn ) = L(Xn , . . . , X0 ). Exemple : marche aléatoire sur un graphe. Supposons donné un graphe non orienté de sommets numérotés de 1 à M et, pour chaque sommet i ∈ {1, . . . , M }, notons di le nombre d’arêtes connectées à celui-ci. Considérons maintenant la chaîne de Markov suivante : partant du sommet i, on va vers l’un des di sommets voisins de façon équiprobable. Il est facile de vérifier que la mesure # " dM d1 , . . . , PM π = PM d j j=1 j=1 dj est réversible pour cette chaîne. Cette marche aléatoire est l’un des ingrédients du fameux algorithme PageRank de Google, les sommets correspondant aux pages web et les arêtes aux liens entre celles-ci. Lemme 1 (Réversibilité ⇒ stationnarité) Soit (Xn ) une chaîne de Markov de matrice de transition P . Si la mesure π est réversible pour la chaîne, alors elle est invariante, c’est-à-dire que πP = π. La vérification est immédiate. Parmi les chaînes de Markov, les chaînes réversibles constituent donc un cadre d’étude privilégié. Ce sont elles qui vont nous intéresser dans la suite. Simulations Monte-Carlo Arnaud Guyader 86 Chapitre 3. Monte-Carlo par Chaînes de Markov 3.2 Algorithme de Metropolis-Hastings En section précédente, considérant une chaîne de Markov définie d’une façon ou d’une autre, nous cherchions sa loi stationnaire π. Désormais, la démarche est inverse : on part d’une loi π donnée et on cherche à construire une chaîne de Markov dont π est la mesure stationnaire. 3.2.1 Algorithme de Metropolis Nous présentons en premier lieu l’algorithme proposé par Metropolis et ses co-auteurs en 1953 [12] avant de passer à sa généralisation par Hastings en 1970 [10]. On veut simuler une chaîne de Markov de loi stationnaire π, la difficulté venant du fait que cette loi n’est connue qu’à une constante de normalisation près : ∀j ∈ {1, . . . , M } πj = Cπju πju = PM u i=1 πi , (3.4) où π u signifie “π unnormalized”. Ce problème est tout sauf artificiel : il est par exemple récurrent en statistique bayésienne et en physique statistique. Nous supposerons pour simplifier que πj > 0 pour tout j. Pour construire cette chaîne, il nous faut spécifier une matrice de transition P ayant π comme loi stationnaire. A l’instar des méthodes de rejet et d’échantillonnage préférentiel, l’idée est d’utiliser un mécanisme de proposition auxiliaire (ou instrumental) et de corriger le tir ensuite. Soit donc Q = [qij ]1≤i,j≤M une matrice de transition telle que : — symétrie : pour tout couple (i, j), on a qij = qji ; — partant de tout état i, on sait simuler facilement selon la loi qi. = [qi1 , . . . , qiM ]. Comme dans les méthodes précédentes, l’algorithme fonctionne alors en plusieurs étapes : 1. partant de Xn = i, simuler Y = j selon la loi qi. = [qi1 , . . . , qiM ] ; 2. calculer le rapport d’acceptation rij = πj /πi ; 3. tirer une loi uniforme U ∼ U[0,1] , et poser Xn+1 = Y = j si U ≤ rij , Xn+1 = Xn = i sinon. Dit autrement, si partant de Xn = i, la proposition Y = j est plus vraisemblable au vu de π (i.e. πj ≥ πi ), alors la transition est systématiquement acceptée ; dans le cas contraire, elle n’est acceptée qu’avec une probabilité égale à rij = πj /πi . Dans le premier cas, il est cohérent de favoriser les transitions vers les états les plus vraisemblables selon π puisque celle-ci est notre loi cible ; dans le second cas, il ne faut pas refuser systématiquement une transition vers un état moins vraisemblable, sans quoi on resterait bloqué dans les maxima locaux de π vis-à-vis du système de voisinage induit par le graphe de transition de Q. Achtung ! Dans la construction de la chaîne (Xn ), il faut tout conserver, y compris les fois où l’on reste sur place (c’est-à-dire Xn+1 = Xn ), sans quoi tout est biaisé. Le point diabolique de cet algorithme est de ne faire intervenir que les rapports πj /πi = πju /πiu . Il ne requiert donc nullement la connaissance de la constante de normalisation C de la formule (3.4). Proposition 13 (Réversibilité de Metropolis) Si la matrice de transition Q est irréductible, alors la chaîne (Xn ) produite par l’algorithme de Metropolis est irréductible et π est réversible pour cette chaîne. En particulier, π est son unique mesure d’équilibre. Arnaud Guyader Simulations Monte-Carlo 3.2. Algorithme de Metropolis-Hastings 87 Concernant le phénomène lourdingue de périodicité, la preuve va montrer qu’elle est en fait à peu près exclue ici, si ce n’est le cas très particulier où π est uniforme sur E et Q elle-même périodique : autant dire qu’il faut vraiment le faire exprès. Preuve. Notons P = [pij ] la matrice de transition de la chaîne (Xn ). On veut montrer que πi pij = πj pji pour tout couple d’indices (i, j). Supposons sans perte de généralité que πj ≥ πi , alors par définition de l’algorithme et puisque qij = qji , πj πi qji πi pij = qij × min , 1 = qij et pji = qji × min ,1 = =⇒ πi pij = πj pji . πi πj πj L’irréductibilité de la chaîne (Xn ) se déduit de celle induite par Q : s’il existe un chemin de i vers j dans le graphe de transition associé à Q, alors ce chemin reste de probabilité non nulle pour le graphe de transition associé à P . Passons à l’apériodicité : supposons la chaîne (Xn ) non apériodique, alors en particulier pii = 0 pour tout i, ce qui implique d’une part que qii = 0, d’autre part que πj ≥ πi pour tout Q-voisin j de i. Puisque Q est irréductible, ceci implique de proche en proche que tous les πi sont égaux à 1/M . Dans cette situation, toutes les propositions sont acceptées, on a donc P = Q et Q est elle-même périodique. Exemple pathologique. Considérons E = {1, 2}, π = [1/2, 1/2], Q= 0 1 1 0 , alors P = Q et la chaîne de Metropolis est périodique de période 2. Rappelons enfin que la dynamique instrumentale définie par Q est choisie par l’utilisateur : il suffit donc de prendre Q irréductible et apériodique pour que tout se passe bien, c’est-à-dire que le Théorème 4 s’applique. 3.2.2 Généralisation : méthode de Metropolis-Hastings Dans l’algorithme précédent, la dynamique définie par la matrice de transition Q était supposée agir symétriquement sur l’espace d’états, à savoir que qij = qji ∀(i, j) ∈ E × E, Autrement dit, sous Q, la probabilité d’aller de i vers j est la même que celle d’aller de j vers i. Cette condition n’est pas nécessaire. Pour s’en émanciper, il suffit de tenir compte de l’éventuelle dissymétrie de Q dans le rapport rij . C’est ainsi que Hastings a proposé de généraliser l’algorithme de Metropolis. Par rapport à ce dernier, les ingrédients sont les mêmes, le prix à payer pour cette généralisation étant simplement de supposer que : — partant de tout état i, on sait simuler facilement selon la loi qi. = [qi1 , . . . , qiM ]. — pour tout couple (i, j), on a qij > 0 implique qji > 0 ; — pour tout couple (i, j) tel que qij > 0, on sait calculer (πj qji )/(πi qij ). L’algorithme de Metropolis-Hastings fonctionne alors comme suit : 1. partant de Xn = i, simuler Y = j selon la loi qi. = [qi1 , . . . , qiM ] ; 2. calculer le rapport de Metropolis-Hastings rij = Simulations Monte-Carlo πj qji , πi qij Arnaud Guyader 88 Chapitre 3. Monte-Carlo par Chaînes de Markov 3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = j si U ≤ rij , et Xn+1 = Xn = i sinon. Proposition 14 (Réversibilité de Metropolis-Hastings) Si la matrice de transition Q est irréductible et apériodique, alors la chaîne (Xn ) produite par l’algorithme de Metropolis est irréductible, apériodique et π est réversible pour cette chaîne. La preuve se fait de la même façon que pour l’algorithme de Metropolis. Par ailleurs, tout ce qui a été dit dans le cas d’un espace d’états fini se généralise à un espace d’états infini, qu’il soit dénombrable ou continu. Dans le cas d’un espace d’états continu, disons Rd , le but est de simuler selon la densité f (x) = Cfu (x) = Z fu (x) , (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 r(x, y) = f (y)q(y, x) , f (x)q(x, y) 3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = y si U ≤ r(x, y), et Xn+1 = Xn = x sinon. Sous des hypothèses raisonnables sur le noyau de transition q, la chaîne (Xn ) a pour unique loi stationnaire f . L’étude théorique requiert cependant des connaissances sur les chaînes de Markov à espace d’états continu et dépasse de loin le cadre de ce cours. L’algorithme s’implémente par contre sans problème. 3.3 Exemple d’application : le recuit simulé Supposons que l’on veuille minimiser une fonction V (x) sur l’espace d’états E fini. On sait calculer V (x) pour tout x mais l’espace E est trop gros pour qu’on puisse trouver ce minimum par recherche exhaustive et V possède par ailleurs de nombreux minima locaux, ce qui rend toute méthode à base de gradient vouée à l’échec : penser par exemple au voyageur de commerce où #E = (N − 1)! avec N le nombre de villes à parcourir. Arnaud Guyader Simulations Monte-Carlo 3.3. Exemple d’application : le recuit simulé 89 Pour tout paramètre T > 0, la minimisation de V est équivalente à la maximisation de 1 1 fT (x) = exp − V (x) ZT T dite mesure de Gibbs associée au potentiel V et à la température T , où X 1 ′ ZT = exp − V (x ) T ′ x ∈E est la constante de normalisation, encore appelée fonction de partition en physique statistique. Selon sa valeur, le paramètre T a tendance à accentuer ou à lisser les extrema de V . Exemple. Caricaturalement, prenons E = {1, 2, 3}, avec V (1) = 0, V (2) = 1 et V (3) = −1. On vérifie facilement les deux comportements extrêmes suivants 1 1 1 fT −−−→ [0, 0, 1] et fT −−−−−→ , , . T →0 T →+∞ 3 3 3 En particulier, lorsque la température tend vers 0, la mesure de Gibbs se concentre sur le minimum de V . Ce résultat est général et l’idée sous-jacente est la même que pour la méthode de Laplace en analyse. Lemme 2 (Principe de Laplace) Soit M⋆ l’ensemble des points où V atteint son minimum. Lorsque la température tend vers zéro, la mesure de Gibbs fT se concentre uniformément sur ceux-ci, c’est-à-dire que 0 si x ∈ / M⋆ lim fT (x) = 1 ⋆ T →0+ #M⋆ si x ∈ M où #M⋆ désigne le cardinal de l’ensemble M⋆ . En particulier, si V atteint son minimum global en un unique point x⋆ , ceci signifie que la mesure de Gibbs se concentre en x⋆ lorsque la tempétaure tend vers 0 (cf. exemple précédent avec x⋆ = 3). Preuve. Soit V ⋆ le minimum de V , alors pour tout x de E, exp − T1 (V (x) − V⋆ ) exp − T1 (V (x) − V⋆ ) = , fT (x) = P P 1 ′ #M⋆ + x′ ∈E\M⋆ exp − T1 (V (x′ ) − V⋆ ) x′ ∈E exp − T (V (x ) − V⋆ ) avec ′ ⋆ ∀x ∈ E \ M , 1 ′ 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 ∀x ∈ E fT (x) −−−−−→ T →+∞ 1 , #E c’est-à-dire que la mesure de Gibbs converge vers la loi uniforme sur E à haute température. Puisqu’à basse température, la mesure de Gibbs se concentre sur les minima globaux de V , une idée consiste à se donner une suite de températures (Tn ) décroissant vers 0 et, pour tout n, à simuler une chaîne de Markov (Xn ) ayant pour loi stationnaire fTn . Pour une matrice de transition Q(x, y) donnée et vérifiant les propriétés requises par Metropolis-Hastings (irréductibilité et apériodicité), nous avons donc l’algorithme suivant, appelé recuit simulé 2 : 2. simulated annealing, expression venant de la metallurgie. Simulations Monte-Carlo Arnaud Guyader 90 Chapitre 3. Monte-Carlo par Chaînes de Markov 1. partant de Xn = x, simuler Y = y selon la loi Q(x, ·) ; 2. calculer le rapport de Metropolis-Hastings fTn (y)Q(y, x) 1 Q(y, x) r(x, y) = × exp − (V (y) − V (x)) , = fTn (x)Q(x, y) Q(x, y) Tn 3. tirer une loi uniforme U ∼ U[0,1] , poser Xn+1 = Y = y si U ≤ r(x, y), et Xn+1 = Xn = x sinon. Remarque. Comme pour Metropolis-Hastings, (Xn ) est bien une chaîne de Markov, mais elle n’est plus homogène en raison des changements de températures Tn . Si les transitions sont symétriques, i.e. Q(x, y) = Q(y, x), on retrouve l’algorithme de Metropolis avec le rapport 1 r(x, y) = exp − (V (y) − V (x)) , Tn lequel est supérieur ou égal à 1 dès lors que V (y) ≤ V (x). On accepte donc systématiquement une transition vers une valeur de V plus basse, mais on ne refuse pas systématiquement une transition vers une valeur plus élevée, ceci afin d’éviter de rester piégé dans un minimum local de V . On voit aussi que, à x et y fixés tels que V (y) > V (x), plus la température Tn sera basse, moins on acceptera de transiter vers une valeur plus élevée. Ainsi, il est clair que le schéma de température (Tn ) joue un rôle essentiel dans cette histoire. Le résultat suivant fournit une réponse partielle à la question du réglage de la suite (Tn ). Théorème 5 (Convergence du Recuit Simulé) Si Q est irréductible, il existe une constante C dépendant de la fonction V et de la matrice de transition Q telle que l’algorithme précédent appliqué avec le schéma de température Tn = C/ log n converge bien vers M⋆ : lim P(Xn ∈ M⋆ ) = 1. n→∞ En particulier, si V atteint son minimum global en un unique point x⋆ , ceci signifie que P Xn −−−→ x⋆ . n→∞ Si ce résultat est satisfaisant théoriquement, il l’est moins en pratique car la convergence est très lente. C’est cependant une question très délicate en toute généralité. Quoi qu’il en soit, il est indispensable de stocker toutes les valeurs intermédiaires V (Xn ) et, en fin d’algorithme (disons après nf étapes), de considérer non pas la dernière valeur V (Xnf ) mais la valeur minimale min1≤n≤nf V (Xn ) parmi toutes celles rencontrées. Cette règle de bon sens est en fait très difficile à prendre en compte en théorie. 3.4 Echantillonneur de Gibbs Il s’agit d’un cas particulier de Metropolis-Hastings où toutes les transitions sont acceptées ! Il requiert néanmoins beaucoup plus de connaissance sur la loi cible f . Comme précédemment, celleci est supposée connue uniquement à une constante de normalisation près. Plaçons-nous par exemple dans le cas d’un espace d’états continu Rd ou un sous-ensemble de Rd . La densité cible s’écrit f (x) = f (x1 , . . . , xd ). Pour tout indice ℓ entre 1 et d, on note x−ℓ = (x1 , . . . , xℓ−1 , xℓ+1 , . . . , xd ) Arnaud Guyader Simulations Monte-Carlo 3.4. Echantillonneur de Gibbs 91 le d-uplet correspondant à x privé de sa ℓ-ème composante. On convient alors d’écrire la densité jointe f (x) = f (xℓ , x−ℓ ), tandis que f (·|x−ℓ ) est la densité conditionnelle correspondant à (d − 1) coordonnées gelées et f (x−ℓ ) la densité marginale de ces (d − 1) coordonnées. L’hypothèse cruciale est la suivante : pour tout ℓ et tout (d − 1)-uplet x−ℓ , on sait simuler suivant la densité conditionnelle f (·|x−ℓ ). L’échantillonneur de Gibbs fonctionne alors comme suit : 1. partant de Xn = x, tirer au hasard uniformément une coordonnée ℓ entre 1 et d ; 2. simuler x′ℓ selon la loi f (·|x−ℓ ) ; 3. poser Xn+1 = (x′ℓ , x−ℓ ). Lemme 3 L’échantillonneur de Gibbs correspond à un algorithme de Metropolis-Hastings où toutes les transitions sont acceptées, c’est-à-dire r(x, y) = 1 à chaque étape. Preuve. Si l’on reprend les notations de Metropolis-Hastings, l’algorithme précédent revient à proposer Y = y = (x′ℓ , x−ℓ ) partant de Xn = x = (xℓ , x−ℓ ) avec la densité de transition q(x, y) = 1 1 f (x′ℓ , x−ℓ ) 1 f (y) f (x′ℓ |x−ℓ ) = × = × . d d f (x−ℓ ) d f (x−ℓ ) Réciproquement, la transition de y vers x a donc pour densité q(y, x) = f (x) 1 × . d f (x−ℓ ) Ceci étant établi, le rapport de Metropolis-Hastings vaut donc dans ce cas r(x, y) = f (y)q(y, x) = 1, f (x)q(x, y) et il est donc normal d’accepter toutes les transitions proposées. La méthode qui vient d’être présentée est appelée échantillonnage de Gibbs par balayage aléatoire, car l’indice ℓ est tiré au hasard à chaque étape. Le balayage déterministe (ou systématique) consiste à tirer les d coordonnées successivement : 1. partant de Xn = x, pour ℓ allant de 1 à d, simuler x′ℓ selon la loi f (·|x′1 , . . . , x′ℓ−1 , xℓ+1 , . . . , xd ) ; 2. poser Xn+1 = x′ = (x′1 , . . . , x′d ). Ainsi, lors d’une “étape” du Gibbs systématique, i.e. pour le passage de Xn à Xn+1 , toutes les coordonnées ont été modifiées. Par contre, pour le passage de Xn à Xn+1 dans le Gibbs aléatoire, une seule d’entre elles a changé. On peut donc voir le Gibbs systématique comme un Gibbs aléatoire à d coups “en moyenne”. On trouvera des détails en fin d’Exercice 3.16. Remarque. Comme le montre l’Exercice 3.12, il ne faut pas remettre toutes les coordonnées à jour simultanément, sans quoi on risque de ne plus converger vers la loi cible ! Simulations Monte-Carlo Arnaud Guyader 92 Chapitre 3. Monte-Carlo par Chaînes de Markov 3.5 Exercices Exercice 3.1 (Modèle de diffusion d’Ehrenfest) On considère deux urnes A et B, contenant M boules à elles deux, numérotées de 1 à M . A chaque instant, on choisit un numéro j ∈ {1, . . . , M } de façon équiprobable et on change d’urne à la boule numéro j. L’état Xn de la chaîne est le nombre de boules à l’instant n dans l’urne A. 1. Donner le graphe de transition de la chaîne (Xn ). 2. Cette chaîne est-elle irréductible ? apériodique ? 3. Montrer que (Xn ) admet pour loi stationnaire π une loi binomiale dont on précisera les paramètres. 4. En fixant par exemple M = 10, retrouver π par simulation grâce à une seule réalisation (très longue) de la chaîne. En d’autres termes, illustrer la loi des grands nombres du cours. 5. Toujours pour M = 10, retrouver π grâce à plusieurs réalisations de la chaîne. En d’autres termes, illustrer la convergence en loi du cours. 6. Supposons M grand. Approcher la loi π par une loi normale dont on précisera les paramètres. En déduire un intervalle [m1 , m2 ] tel qu’asymptotiquement, la chaîne passe 95% de son temps entre ces deux valeurs. 7. Vérifier ce résultat par simulation. A 2 3 4 1 5 6 D B 0 9 8 7 C Figure 3.2 – Tétraèdre et Monopoly Exercice 3.2 (Bistochasticité et Monopoly) 1. On dit qu’une matrice de transition (ou matrice stochastique) P est bistochastique si la somme de chaque colonne est aussi égale à 1. Soit (Xn ) une chaîne de Markov dont la matrice de transition est bistochastique : vérifier que la loi uniforme est une loi stationnaire. Est-elle nécessairement unique ? 2. Un jeu du genre Monopoly a dix cases (voir figure 3.2 à droite). On part de la case 0 et on lance un dé équilibré à six faces pour avancer le pion. Xn est la position du pion après le n-ème lancer. (a) Déterminer la matrice de transition de la chaîne de Markov (Xn ). (b) La chaîne est-elle irréductible ? apériodique ? (c) Déterminer la (ou les) loi(s) stationnaire(s). Exercice 3.3 (Le scarabée) Un scarabée se déplace sur les arêtes d’un tétraèdre régulier (voir figure 3.2 à gauche). Quel que soit le sommet où il se trouve à un instant donné, il choisit au hasard et de façon équiprobable le Arnaud Guyader Simulations Monte-Carlo 3.5. Exercices 93 sommet vers lequel il va se diriger. Il lui faut une unité de temps pour l’atteindre. On suppose de plus que le scarabée se déplace en continu, c’est-à-dire qu’il ne s’arrête jamais en un sommet. Xn est la position du scarabée à l’instant n. 1. Déterminer la matrice de transition de la chaîne de Markov (Xn ). Loi(s) stationnaire(s) ? 2. A-t-on convergence en loi de (Xn ) ? 3. Illustrer cette convergence par simulation. 4. Le scarabée paye 1e chaque fois qu’il passe au sommet A, 2e chaque fois qu’il passe au sommet B, 3e chaque fois qu’il passe au sommet C, 4e chaque fois qu’il passe au sommet D. Soit Cn le coût de sa trajectoire jusqu’à l’instant n. Que dire de la convergence de Cn /n ? L’illustrer par simulation. 5. Supposons maintenant qu’en chaque sommet, le scarabée reste sur place avec probabilité 7/10 ou parte vers un des autres sommets de façon équiprobable. Quid de la convergence en loi ? 6. On considère maintenant que les déplacements du scarabée sont régis par la matrice de transition : 0 2/3 0 1/3 1/3 0 2/3 0 P = 0 1/3 0 2/3 . 2/3 0 1/3 0 (a) Vérifier la loi des grands nombres. (b) Que dire de la convergence en loi ? 7. Tirer “au hasard” une matrice de transition P à l’aide de la fonction runif. Vérifier que la loi des grands nombres et la convergence en loi permettent de trouver un même vecteur probabilité ligne π. Retrouver cette loi d’équilibre grâce à la fonction eigen et en utilisant sa propriété caractéristique : π est un vecteur propre à gauche de P associé à la valeur propre 1. Exercice 3.4 (Le coup du parapluie) Un employé lambda, Franz Kafka, se rend chaque matin de son appartement à son bureau et fait le contraire le soir. Il dispose en tout de 3 parapluies, certains chez lui, les autres au bureau. A Prague, il pleut 2 fois sur 3 lorsqu’il fait le trajet, et ce indépendamment du passé. Soit Xn le nombre de parapluies à son domicile durant la nuit. 1. Déterminer la matrice de transition de la chaîne de Markov associée. 2. Quelle est la proportion du temps où Kafka est mouillé en arrivant au bureau le matin ? 3. Généraliser avec n parapluies. Exercice 3.5 (Metropolis : exemple jouet) On veut simuler une loi normale centrée réduite grâce à l’algorithme de Metropolis. La loi de proposition est uniforme sur [−1/2, 1/2]. Par rapport au cours, nous sommes donc dans un espace d’états continu. 1. L’équivalent de la matrice de transition qij est le noyau de transition q(x, y) qui correspond à la densité de Y = x + U , densité de probabilité d’aller en y sachant qu’on part du point x. Déterminer q(x, y). En déduire q(y, x). 2. Traduire l’algorithme de Metropolis-Hastings dans ce cadre. 3. En partant de X0 suivant une loi uniforme sur [−3, 3], simuler alors une chaîne de Markov (X0 , . . . , Xn ) par l’algorithme de Metropolis-Hastings. Simulations Monte-Carlo Arnaud Guyader 94 Chapitre 3. Monte-Carlo par Chaînes de Markov 4. Pour la réalisation de cette chaîne, déterminer la moyenne empirique, l’écart-type empirique, représenter un histogramme des Xi auquel on superposera la densité de la loi normale centrée réduite. 5. Grâce à la fonction unique, donner le taux d’acceptation du Metropolis-Hastings. 6. Observer ce qui se passe lorsque la condition initiale est X0 = 10. 7. Revenons à X0 ∼ U[−3,3] . Plutôt qu’une loi de proposition uniforme sur [−1/2, 1/2], considérer une loi uniforme sur [−10, 10]. Qu’observez-vous ? Et avec une loi uniforme sur [−0.1, 0.1] ? Exercice 3.6 (Metropolis vs Rejet) On considère sur R2 la densité g(u, v) = c × f (u, v), où c est une constante de normalisation et f (u, v) = (cos u)2 (sin v)2 exp −0.05(u2 + v 2 ) . 1. Sur [−5, 5] × [−5, 5], donner une représentation 3d de f (par exemple par persp(u,v,z)) et une représentation 2d par lignes de niveau de f (par exemple par image(u,v,z)). 2. On veut simuler selon la densité g en utilisant l’algorithme de Metropolis-Hastings. Partant de x = (u, v), on considère le noyau de transition q(x, x′ ) qui correspond à la densité de X ′ = x + σW , où σ > 0 est un paramètre de réglage et W ∼ N ([0, 0]′ , I2 ), loi gaussienne centrée réduite dans R2 . Expliquer pourquoi q(x, x′ ) = q(x′ , x), c’est-à-dire qu’on est dans le cadre de l’algorithme de Metropolis. 3. Implémenter l’algorithme de Metropolis. On utilisera le noyau de transition q(x, x′ ) ci-dessus avec σ = 1. On pourra par exemple prendre comme initialisation X1 = (0, 0) et considérer une chaîne (Xk )1≤k≤n de longueur n = 104 . 4. Sur le graphe de f par lignes de niveau (via image(u,v,z)), superposer les points de la chaîne par exemple par la commande points(X,pch=3,cex=.1). Faire la même chose avec σ grand, par exemple σ = 10, et commenter. Idem avec σ petit, par exemple σ = 0.1. 5. Proposer une méthode de rejet pour simuler suivant g à partir d’une loi instrumentale gaussienne. Comme en question précédente, superposer un échantillon de grande taille simulé par cette méthode aux niveaux de la fonction f pour vérifier visuellement le bon fonctionnement de l’algorithme. 6. Des deux méthodes, laquelle vous semble préférable ? Exercice 3.7 (Metropolis-Hastings : méthode de Roberts et Rosenthal (1998)) On veut maintenant simuler un mélange équiprobable de deux lois normales réduites, centrées respectivement en m = 3 et −m = −3. 1. Rappeler la densité f correspondante. Quelle est sa moyenne ? déterminer son écart-type, à la main ou grâce à la fonction integrate. 2. Simuler une chaîne de Markov de densité d’équilibre f par la même méthode que dans l’exercice précédent, mais avec une loi de proposition gaussienne centrée d’écart-type σ = 1. Donner la moyenne empirique, l’écart-type empirique, représenter un histogramme des Xi auquel on superposera la densité f . 3. Observer ce qui se passe lorsque X0 = m. D’où vient le problème ? 4. Essayer d’améliorer les choses en modifiant l’écart-type σ. 5. On ne considère plus un noyau de transition symétrique. Partant de x, la proposition est désormais σ 2 f ′ (x) × + σW, Y =x+ 2 f (x) où W suit une loi normale centrée réduite. Arnaud Guyader Simulations Monte-Carlo 3.5. Exercices 95 (a) Quelles transitions sont favorisées par ce noyau de transition ? (b) Expliciter le rapport de Metropolis-Hastings r(x, y). (c) Simuler la chaîne de Markov correspondant à cet algorithme de Metropolis-Hastings. Exercice 3.8 (Metropolis indépendant et optimisation) On veut trouver le maximum sur [0, 1] de la fonction fu (x) = (cos(50x) + sin(20x))2 . 1. Représenter fu et déterminer ce maximum numériquement grâce à la fonction optimize. 2. Une autre idée, plus artisanale, est de construire une chaîne de Markov ayant pour loi stationnaire la densité f proportionnelle à fu . Quelle est l’idée sous-jacente ? 3. Dans un premier temps, prenons le noyau de transition correspondant à Y = x+U (mod 1) où U ∼ U[0,1] . Quelle est la loi de Y ? Construire l’algorithme de Metropolis correspondant : on parle de Metropolis indépendant, pourquoi ? 4. Donner une estimation du maximum de f grâce à une longue réalisation de la chaîne. 5. Estimer de même le minimum en considérant la fonction exp(−fu (x)). Exercice 3.9 (Recuit simulé) On veut estimer par recuit simulé le minimum sur R de la fonction V (x) = x2 (2 + (sin(100x))2 ). 1. Représenter V (x) pour x variant entre -2 et 2. Quel est le minimum de V sur R ? 2. Pour une température T > 0 fixé, on considère sur R la densité fT (x) = où Z exp(−V (x)/T )dx. ZT = 1 ZT exp(−V (x)/T ) R En quel(s) point(s) fT admet-elle son maximum sur R ? 3. Sur une même figure, pour x variant entre -1 et 1, représenter à gauche x 7→ exp(−V (x)/T ) pour T = 10, et à droite pour T = 0.1. 4. On note U une loi uniforme sur [−1/2, 1/2]. Partant d’un point x, on considère le noyau de transition q(x, y) qui correspond à la densité de Y = x + U . Déterminer q(x, y). En déduire q(y, x) et le rapport de Metropolis-Hastings r(x, y) pour une température T > 0 fixée. 5. Implémenter l’algorithme du recuit simulé pour le noyau de transition q et le schéma de température Tk = 1/(1 + log k) pour k allant de 1 à n = 1000. On pourra prendre comme initialisation X1 ∼ U[−10,10] . On donnera en sortie la valeur V (Xn ) ainsi que le minimum observé sur toutes les valeurs V (Xk ) pour k ∈ {1, . . . , n}. Exercice 3.10 (Le voyageur de commerce) Un commercial doit passer par N villes et revenir à son point de départ, il se déplace en avion et il y a des vols directs entre toutes les villes. Le but est de trouver le trajet optimal, c’est-à-dire la distance minimale à parcourir. 1. Pourquoi la solution exacte est-elle difficile à trouver quand N n’est pas petit ? 2. Simuler N = 10 points (M1 , . . . , MN ) uniformément dans le carré [0, 1] × [0, 1]. Les représenter, ainsi que les trajets (M1 , M2 ), . . . , (MN −1 , MN ), (MN , M1 ). 3. Construire la matrice N × N des distances entre toutes les villes. Simulations Monte-Carlo Arnaud Guyader 96 Chapitre 3. Monte-Carlo par Chaînes de Markov 4. On considère le groupe SN des permutations de l’ensemble {1, . . . , N }. A chaque permutation σ = (σ(1), . . . , σ(N )) est associée la distance totale parcourue par le voyageur de commerce, c’est-à-dire en notant d(A, B) la distance euclidienne entre A et B : Dσ = N X d(Mσ(ℓ) , Mσ(ℓ+1) ), ℓ=1 avec la convention σ(N + 1) = σ(1). Dans ce qui précède, on avait donc σ = (1, 2, . . . , N − 1, N ). Reformuler le problème d’optimisation avec ces notations. ′ 5. La permutation σ étant donnée, on note σ ℓ,ℓ la permutation consistant à inverser l’ordre de visite des villes ℓ et ℓ′ , autrement dit : ′ σ = (σ(1), . . . , σ(ℓ), . . . , σ(ℓ′ ), . . . , σ(N )) =⇒ σ ℓ,ℓ = (σ(1), . . . , σ(ℓ′ ), . . . , σ(ℓ), . . . , σ(N )). ′ Partant de σ, comment tirer uniformément parmi les σ ℓ,ℓ ? ′ 6. Implémenter l’algorithme de Metropolis correspondant aux transitions Q(σ, σ ℓ,ℓ ) ci-dessus et de loi stationnaire proportionnelle à exp(−Dσ ) sur l’espace d’états SN . 7. Déterminer le meilleur trajet obtenu par cette méthode et le représenter. 8. On adopte la technique du recuit simulé : par rapport à ce qui précède, il suffit donc de tenir compte de la température Tn à chaque étape. Pour comparer les schémas de température, on utilisera la fonction set.seed (permettant de fixer en début de simulation la graine du générateur aléatoire) et on comparera les performances sur un nombre représentatif de simulations, par exemple une centaine. Le nombre N de villes ne devra pas être pris trop grand, contrairement à la longueur n de la chaîne... (a) Implémenter le recuit simulé avec un schéma de température en Tn = 1/ log n. Comparer à ce qui était obtenu avec la température fixe T = 1 de la question 7. (b) Même question avec un schéma de température à décroissance polynomiale, c’est-à-dire de type Tn = n−γ , pour plusieurs valeurs de γ. Exercice 3.11 (Refroidissement trop rapide) Considérons l’exemple d’un espace à 3 états pour expliquer la décroissance de la température en 1/ log n dans le recuit simulé. Soit donc E = {1, 2, 3}, avec V (1) = 0, V (2) = 1 et V (3) = −1. L’exploration se fait comme suit : partant des états 1 ou 3, on propose systématiquement d’aller en 2, tandis que partant de 2, on propose d’aller en 1 ou 3 de façon équiprobable. On considère l’algorithme du recuit simulé avec un schéma de température noté (Tn ). 1. Minimum local de V ? Minimum global ? Donner le graphe de transition de la matrice de transition Q. 2. On part du point X0 = 1 et on veut contrôler P(∃k ≤ n, Xk = 3). Majorer cette quantité en fonction de la probabilité que la chaîne ne bouge pas de sa position initiale. 3. Grâce à la propriété de Markov, déterminer P(∀k ≤ n, Xk = 1) en fonction des Tk . Qn−1 Pn−1 4. On rappelle que si les xk sont des nombres entre 0 et 1, alors k=0 (1 − xk ) ≥ 1 − k=0 xk . En déduire une majoration de P(∃n, Xn = 3) par la somme d’une série dépendant du schéma de température. Que se passe-t-il si Tn ≤ c/ log n avec c trop petit ? Exercice 3.12 (Gibbs simultané = Gibbs vérolé) On considère sur E = {(0, 0), (0, 1), (1, 0), (1, 1)} la distribution π = [2/5, 1/5, 1/5, 1/5]. Sur cet espace d’états, on considère la chaîne de Markov (Xn ) régie par les transitions suivantes : partant de X = (x1 , x2 ), le point suivant est X ′ = (x′1 , x′2 ) où x′1 est tiré suivant la loi conditionnelle π(·|x2 ) et, indépendamment, x′2 est tiré suivant la loi conditionnelle π(·|x1 ). Cette façon de se déplacer dans l’espace d’états s’apparente donc à un échantillonneur de Gibbs où toutes les coordonnées seraient remises à jour simultanément. Arnaud Guyader Simulations Monte-Carlo 3.5. Exercices 97 1. Donner la matrice de transition P de la chaîne de Markov (Xn ). Cette chaîne est-elle irréductible ? apériodique ? 2. Montrer que que l’algorithme proposé ne converge pas vers ce qu’on veut. 3. Donner la matrice de transition Pa de l’échantillonneur de Gibbs par balayage aléatoire. Vérifier que π est stationnaire pour Pa . Est-elle réversible ? 4. Mêmes questions pour la matrice Pd de l’échantillonneur de Gibbs par balayage déterministe. Exercice 3.13 (Somme d’exponentielles contrainte) Soit X1 , . . . , Xd des variables exponentielles indépendantes de paramètres λ1 , . . . , λd donnés. Soit S = X1 + · · · + Xd leur somme et m > 0 une constante fixée. 1. Donner la densité fm du vecteur aléatoire (X1 , . . . , Xd ) sachant S > m. 2. Soit (x2 , . . . , xd ) fixé. Comment simuler X1 sachant que X1 + x2 + · · · + xd > m ? 3. En déduire un échantillonneur de Gibbs pour simuler un échantillon (X1 , . . . , Xd ) conditionnellement au fait que S > m. Exercice 3.14 (Cas d’école pour Gibbs) On considère la densité y 2 x2 (1 + y + y 2 ) f (x, y) = C exp − − 2 2 . 1. Loi de X sachant Y = y ? Loi de Y sachant X = x ? 2. En déduire un échantillonneur de Gibbs de loi cible f . Exercice 3.15 (Simulation d’un couple) Soit (X, Y ) un couple aléatoire de densité jointe f (x, y) = e−y 10≤x≤y . 1. Déterminer la densité marginale de X, notée f (x). Quelle loi reconnaissez-vous ? 2. Sachant X = x ≥ 0, déterminer la densité conditionnelle f (y|x). Quelle loi reconnaissezvous ? 3. En déduire une méthode pour simuler une réalisation du couple aléatoire (X, Y ). L’implémenter pour simuler un échantillon de couples (X1 , Y1 ), . . . , (Xn , Yn ) de taille n = 1000. Représenter le nuage de points ainsi obtenu. 4. Sachant Y = y ≥ 0, déterminer la densité conditionnelle f (x|y). Quelle loi reconnaissezvous ? 5. En partant par exemple du point (x0 , y0 ) = (0, 1), implémenter un échantillonneur de Gibbs à balayage déterministe pour obtenir un échantillon (X1 , Y1 ), . . . , (Xn , Yn ) de taille n = 1000 de loi cible f . Représenter le nuage de points ainsi obtenu. 6. Des deux méthodes proposées, laquelle choisiriez-vous pour simuler selon la densité f (x, y) ? Exercice 3.16 (Balayage aléatoire vs balayage déterministe) On considère un espace d’états E fini de cardinal M , une densité cible π = [π1 , . . . , πM ] avec tous les πi strictement positifs, et une matrice de transition Q = [qij ] avec tous les qij strictement positifs. 1. Dans l’algorithme de Metropolis-Hastings, quelle est la probabilité αij qu’une loi uniforme soit inférieure à rij ? Simulations Monte-Carlo Arnaud Guyader 98 Chapitre 3. Monte-Carlo par Chaînes de Markov 2. En déduire le coefficient pij de la matrice P correspondant aux transitions de la chaîne (Xn ) construite par l’algorithme (attention aux termes diagonaux). 3. Vérifier que π est réversible pour P . En déduire que π est stationnaire pour P . 4. Vérifier que c’est encore vrai si au lieu de prendre α(r) = min(1, r) comme ci-dessus, on considère n’importe quelle fonction α :]0, ∞[→]0, 1] telle que α(r) = r × α(1/r). 5. Reformuler tout ce qui précède dans le cadre d’un espace d’états continu. 6. Dans l’échantillonneur de Gibbs, notons P1 , . . . , Pd les noyaux de transition en jeu, c’est-àdire que la transition de x vers x′ peut avoir lieu seulement si x et x′ ne diffèrent que par une coordonnée, disons ℓ, c’est-à-dire x−ℓ = x′−ℓ , auquel cas ceci arrive avec la densité de probabilité Pℓ (x, x′ ) = f (x′ℓ |x−ℓ ). (a) Vérifier que la densité f est réversible pour le noyau Pℓ . En déduire que f est stationnaire pour le noyau Pℓ . (b) Pour le balayage aléatoire, exprimer le noyau de transition P en fonction des Pℓ . En déduire que la densité f est réversible pour le noyau P . (c) Pour le balayage déterministe, exprimer le noyau de transition P en fonction des Pℓ . En déduire que f est stationnaire pour P . La densité f est-elle réversible pour le noyau P ? Exercice 3.17 (Modèle d’Ising) Soit N entier naturel fixé. On considère le carré C = {(i, j), 1 ≤ i, j ≤ N }, chaque site (i, j) ne pouvant prendre que deux valeurs Sij = ±1 (son spin). A une configuration de spins S = (Sij )1≤i,j≤N donnée est alors associée l’énergie X V (S) = − Sij Skℓ avec (i, j) ∼ (k, ℓ) ⇔ |i − k| + |j − ℓ| = 1. (i,j)∼(k,ℓ) Autrement dit, dans la somme définissant V interviennent toutes les paires de sites voisins dans le carré C. 1. Quelles sont les configurations minimisant l’énergie ? 2. Pour tenir compte de la température T > 0, on associe à V la mesure de Gibbs 1 1 exp − V (S) , µT (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 (uniforme) et on propose de changer Si0 j0 en −Si0 j0 . On note S (i0 ,j0 ) cette nouvelle configuration où seul un spin a changé de signe. Que vaut Q(S, S (i0 ,j0 ) ) ? Et Q(S (i0 ,j0 ) , S) ? Calculer le rapport de Metropolis-Hastings r(S, S (i0 ,j0 ) ). 5. Expliquer brièvement pourquoi la chaîne de Markov ainsi construite est irréductible et apériodique. 6. Pour N = 40 et T = 0.1, implémenter l’algorithme de Metropolis-Hastings permettant de simuler une chaîne de mesure stationnaire µT . On ne demande pas de garder tout l’historique de la chaîne, mais seulement la mise à jour de S = (Sij )1≤i,j≤N . Représenter la configuration S obtenue après 104 étapes via la commande image(S). Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 99 7. Faire de même pour T = 10. Interpréter la différence entre les deux figures obtenues. Exercice 3.18 (Débruitage d’image) Soit N entier naturel fixé. On considère la grille C = {(i, j), 1 ≤ i, j ≤ N }, chaque pixel (i, j) ne pouvant prendre que deux valeurs Sij = ±1 (blanc pour -1, noir pour +1). L’image initiale Σ = (σij )1≤i,j≤N , supposée connue, va être modifiée en une nouvelle image S = (Sij )1≤i,j≤N visant à minimiser l’énergie X X V (S) = α (Sij −σij )2 −β Sij Skℓ avec (i, j) ∼ (k, ℓ) ⇔ |i−k|+|j−ℓ| = 1, 1≤i,j≤N (i,j)∼(k,ℓ) où α et β sont deux constantes positives. Dans la seconde somme définissant V interviennent donc toutes les paires de sites voisins dans le carré C. 1. Si α > 0 et β = 0, quelle(s) configuration(s) minimise(nt) V ? Même question si α = 0 et β > 0. 2. On suppose dans toute la suite que α et β sont tous deux strictement positifs fixés et permettent d’effectuer un compromis entre deux contraintes : l’attache à l’image initiale Σ et l’obtention de contours nets (élimination du bruit). On veut alors minimiser V , en supposant ⋆) ce minimum atteint pour une unique configuration S ⋆ = (Sij 1≤i,j≤N . On introduit pour cela un paramètre de température T > 0 et on associe à V la mesure de Gibbs 1 1 exp − V (S) , µT (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 MetropolisHastings 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 allant de 1 à n = 104 . L’image à retrouver est Σ0 dont tous les pixels sont à -1 sauf le carré central de côté 20 dont tous les pixels sont à 1. L’image initiale est sa version bruitée Σ = (σij )1≤i,j≤N où, partant de Σ0 , chaque pixel est changé de signe avec probabilité 1/4, indépendamment les uns des autres. Pour l’implémentation du recuit simulé, on pourra s’inspirer du code vu pour le modèle d’Ising. 3.6 Corrigés Exercice 3.1 (Modèle de diffusion d’Ehrenfest) On considère deux urnes A et B, contenant M boules à elles deux, numérotées de 1 à M . A chaque instant, on choisit un numéro j ∈ {1, . . . , M } de façon équiprobable et on change d’urne à la boule numéro j. L’état Xn de la chaîne est le nombre de boules à l’instant n dans l’urne A. 1. Il peut y avoir de 0 à M boules dans l’urne A donc l’espace d’états est E = {0, 1, . . . , M }. De l’état 0 (resp. M ), on ne peut aller que vers l’état 1 (resp. M −1). De l’état j ∈ {1, . . . , M −1}, on peut transiter vers les états (j − 1) et (j + 1) avec les probabilités respectives j/M et (M − j)/M . Le graphe de transition est représenté Figure 3.3 dans le cas particulier M = 3. 2. Cette chaîne est irréductible et périodique de période 2. Simulations Monte-Carlo Arnaud Guyader 100 Chapitre 3. Monte-Carlo par Chaînes de Markov 2/3 1 0 1 1/3 1/3 2 2/3 3 1 Figure 3.3 – Graphe de transition pour le modèle d’Ehrenfest avec M = 3. 3. Puisque la chaîne est irréductible, elle admet une unique loi stationnaire π. Notons P la matrice de transition de la chaîne : elle est donc de taille (M + 1) × (M + 1), tridiagonale et à diagonale nulle. Le vecteur ligne π est l’unique vecteur de probabilité solution de πP = π. La résolution de ce système, de proche en proche, donne M (M − 1) M M π1 = M π0 ⇒ π2 = π0 = π0 ⇒ . . . ⇒ πj = π0 . 2 2 j Trouver π0 ne pose pas problème puisque les πj somment à 1 : 1= M X j=0 πj = π0 M X M j=0 j = 2M π0 =⇒ πj = M j . M 2 C’est exactement dire que π correspond à la loi binomiale B(M, 1/2). 4. Pour simuler la chaîne d’Ehrenfest, on utilise le package markovchain. Une fois déclarés l’espace d’états et la matrice de transition, on simule une réalisation de la chaîne de longueur n et on compare la fréquence empirique de passage par chaque état à sa fréquence théorique donnée par π (en rouge). M=10 states=as.character(0:M) P=matrix(0,nrow=M+1,ncol=M+1,dimnames=list(states,states)) P[1,2]=1 P[M+1,M]=1 for (j in 2:M){ P[j,j-1]=(j-1)/M P[j,j+1]=(M-j+1)/M } library(markovchain) mc=new("markovchain",transitionMatrix=P) n=10^4 X0=sample(states,1) X=rmarkovchain(n,mc,t0=X0) Xq=factor(X,levels=states) pihat=summary(Xq)/n plot((0:M),pihat,type="h") pi=dbinom((0:M),M,1/2) par(new=T) plot((0:M),pi,col=’red’,xlab=’’,ylab=’’,axes=F) par(new=F) 5. La chaîne étant périodique, on n’a pas convergence en loi : si X0 est pair, alors X2n le sera aussi tandis que X2n+1 sera impair. Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 101 6. Pour M grand, la loi binomiale est très bien approchée par une loi normale de mêmes moyenne et variance : π = B(M, 1/2) ≈ N (M/2, M/4) En remplaçant 1.96 √ par 2, la chaîne √ passe donc asymptotiquement 95% de son temps entre les valeurs M/2 − M et M/2 + M . Exemple : si M = 100, il y aura entre 40 et 60 boules dans les 2 urnes 95% du temps. Considérer de grandes valeurs pour M fait sens puisqu’Ehrenfest 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 A 2 3 4 1 5 6 D B 0 9 8 7 C Figure 3.4 – Tétraèdre et Monopoly Exercice 3.2 (Bistochasticité et Monopoly) 1. Soit P une matrice bistochastique de taille M × M et 1 1 π= ,..., M M Simulations Monte-Carlo Arnaud Guyader 102 Chapitre 3. Monte-Carlo par Chaînes de Markov la loi uniforme, alors il est clair que πP = π. Cependant, la loi uniforme n’est pas nécessairement 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 P = 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 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 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 . (b) On peut aller de n’importe quelle case à n’importe quelle autre en au plus deux coups, donc la chaîne est irréductible. Partant de 0, on peut y revenir en 2 coups (par exemple : 0 → 6 → 0) ou en 3 coups (par exemple : 0 → 6 → 9 → 0), ce qui prouve que la période de l’état 0 est 1. La chaîne étant irréductible, tous les états ont même période, elle est donc apériodique. (c) La matrice P étant bistochastique et irréductible, l’unique loi stationnaire est la loi uniforme. Ceci ne faisait a priori aucun doute : si on se promène indéfiniment, il n’y aucune raison qu’on passe plus de temps sur une case que sur une autre... Exercice 3.3 (Le scarabée) Un scarabée se déplace sur les arêtes d’un tétraèdre régulier (voir figure 3.4 à gauche). Quel que soit le sommet où il se trouve à un instant donné, il choisit au hasard et de façon équiprobable le sommet vers lequel il va se diriger. Il lui faut une unité de temps pour l’atteindre. On suppose de plus que le scarabée se déplace en continu, c’est-à-dire qu’il ne s’arrête jamais en un sommet. Xn est la position du scarabée à l’instant n. 1. La matrice de transition P de la chaîne de Markov (Xn ) a des coefficients 1/3 partout sauf sur sa diagonale. Cette chaîne est une marche aléatoire sur un graphe connexe, et l’unique loi stationnaire est la loi uniforme π = [0.25, 0.25, 0.25, 0.25]. Ceci n’est pas étonnant puisqu’on peut tout aussi bien remarquer que la matrice P est bistochastique (cf Exercice 3.2). 2. Partant du sommet A, on peut y revenir en 2 coups, 3 coups, 4 coups, etc. Donc A est apériodique. Puisque tous les sommets communiquent, ils sont tous apériodiques et la chaîne est apériodique. On a donc convergence de la loi de (Xn ) vers π. 3. Une façon d’illustrer cette convergence en loi est la suivante : states=c("A","B","C","D") P=matrix(1/3,nrow=4,ncol=4,dimnames=list(states,states)) for (j in 1:4){P[j,j]=0} library(markovchain) mc=new("markovchain",transitionMatrix=P) Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 103 n=50 nsim=400 X=matrix(0,nsim,n) for(l in (1:nsim)){ X0=sample(states,1) X[l,]=rmarkovchain(n,mc,t0=X0) } Xn=X[,n] plot(factor(Xn)) 4. La chaîne étant irréductible, la loi des grands nombres du Théorème 4 s’applique avec la fonction ϕ définie par ϕ(A) 1 ϕ(B) 2 ϕ(C) = 3 , 4 ϕ(D) ce qui donne n Cn 1X 5 1 p.s. = ϕ(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 convergence en loi vers la loi uniforme. 6. On considère maintenant que les déplacements du scarabée sont régis par la matrice de transition : 0 2/3 0 1/3 1/3 0 2/3 0 P = 0 1/3 0 2/3 . 2/3 0 1/3 0 (a) Une interprétation : le scarabée se déplace cette fois sur un carré et, à chaque instant, il avance avec probabilité 2/3 et recule avec probabilité 1/3. La chaîne étant irréductible et la matrice P bistochastique, l’unique loi stationnaire est toujours la loi uniforme et la loi des grands nombres est vérifiée. (b) La chaîne est cette fois périodique de période 2, donc il n’y a plus convergence en loi. Simulations Monte-Carlo Arnaud Guyader 104 Chapitre 3. Monte-Carlo par Chaînes de Markov 7. Voici une façon de tirer “au hasard” une matrice de transition P (il y en a d’autres) : M=4 P=matrix(runif(M^2),nrow=M) s=apply(P,1,sum) S=matrix(rep(s,M),nrow=M) P=P/S Cette matrice n’ayant aucun coefficient nul, elle correspond à une chaîne irréductible et apériodique, donc ayant une unique loi stationnaire π pour laquelle tant la loi des grands nombres que la convergence en loi s’appliquent. Commençons par la loi des grands nombres : states=as.character(1:M) library(markovchain) mc=new("markovchain",transitionMatrix=P) n=10^4 X0=sample(states,1) X=rmarkovchain(n,mc,t0=X0) Xq=factor(X,levels=states) pihatlgn=summary(Xq)/n plot((1:M),pihatlgn,col=’green’,xlab=’’,ylab=’’) Retrouvons une estimation de π via la convergence en loi : n=500 nsim=200 X=matrix(0,nsim,n) for(l in (1:nsim)){ X0=sample(states,1) X[l,]=rmarkovchain(n,mc,t0=X0)} Xq=factor(X[,n],levels=states) pihatloi=summary(Xq)/nsim par(new=T) plot((1:M),pihatloi,col=’blue’,xlab=’’,ylab=’’,axes=F) Quant à retrouver π par sa caractérisation spectrale, c’est immédiat : pi=eigen(t(P))$vectors[,1]/sum(eigen(t(P))$vectors[,1]) par(new=T) plot((1:M),pi,type="h",col=’red’,xlab=’’,ylab=’’,axes=F) Exercice 3.4 (Le coup du parapluie) Un employé lambda, Franz Kafka, se rend chaque matin de son appartement à son bureau et fait le contraire le soir. Il dispose en tout de 3 parapluies, certains chez lui, les autres au bureau. A Prague, il pleut 2 fois sur 3 lorsqu’il fait le trajet, et ce indépendamment du passé. Soit Xn le nombre de parapluies à son domicile avant de partir le matin. 1. La chaîne de Markov associée a pour matrice de transition : 1/3 2/3 0 0 2/9 5/9 2/9 0 P = 0 2/9 5/9 2/9 . 0 0 2/9 7/9 2. Cette chaîne est irréductible et apériodique. L’unique loi stationnaire π est le vecteur probabilité ligne solution de πP = π, que l’on peut trouver en résolvant le système à la main Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 105 ou via la fonction eigen comme dans l’Exercice 3.3. On trouve 1 3 3 3 , , , . π= 10 10 10 10 Sur un trajet du matin, Kafka est mouillé s’il n’a aucun parapluie chez lui et qu’il pleut : 1 1 × 23 = 15 . Sur un trajet du soir, il est mouillé s’il n’a aucun ceci arrive avec probabilité : 10 parapluie au bureau (i.e. ils étaient tous au domicile le matin et il faisait beau le matin) et 1 3 × 13 × 32 = 15 . Que ce soit le matin ou le soir, qu’il pleut : ceci arrive avec probabilité : 10 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 Et que ce soit à l’aller ou au retour, Kafka est mouillé avec probabilité 2 9n+3 . Exercice 3.5 (Metropolis : exemple jouet) On veut simuler une loi normale centrée réduite grâce à l’algorithme de Metropolis. La loi de proposition est uniforme sur [−1/2, 1/2]. Par rapport au cours, nous sommes donc dans un espace d’états continu. 1. Sachant qu’on part du point x, la variable aléatoire Y suit une loi uniforme sur [x − 1/2, x + 1/2], donc q(x, y) = 1 si |y − x| ≤ 1/2, et q(x, y) = 0 sinon. On en déduit que q(y, x) = 1 si |y − x| ≤ 1/2, et q(x, y) = 0 sinon. Autrement dit, le noyau de transition q est symétrique : nous sommes dans le cadre d’application de l’algorithme de Metropolis, cas particulier de Metropolis-Hastings. 2. L’algorithme fonctionne donc comme suit : (a) partant de Xn = x, on simule W ∼ U[−1/2,1/2] et on pose Y = y = x + w ; (b) en notant ϕ la densité de la gaussienne centrée réduite, on calcule le rapport d’acceptation x2 −y 2 ϕ(y) =e 2 , r(x, y) = ϕ(x) (c) on tire une loi uniforme U ∼ U[0,1] , et on pose Xn+1 = Y = y si U ≤ r(x, y), sinon on reste sur place : Xn+1 = Xn = x. 3. Une façon de l’implémenter : n=10^4 x=rep(0,n) w=runif(n,min=-0.5,max=0.5) u=runif(n) x[1]=runif(1,min=-3,max=3) for (k in 1:(n-1)){ y=x[k]+w[k+1] r=exp((x[k]^2-y^2)/2) x[k+1]=x[k]+w[k+1]*(u[k+1]<r)} 4. Il suffit de compléter ce qui précède : Simulations Monte-Carlo Arnaud Guyader 106 Chapitre 3. Monte-Carlo par Chaînes de Markov mean(x) sd(x) hist(x,nclass=50,prob=T) t=seq(-4,4,by=0.01) lines(t,dnorm(t),col=’red’) 5. La commande length(unique(x))/n montre un taux d’acceptation très élevé, de l’ordre de 90%. 6. Lorsque X0 = 10, il faut plus de temps à la chaîne pour oublier la condition initiale, c’està-dire pour se rapprocher du ventre mou de la gaussienne. 7. Lorsque la loi de proposition est une loi uniforme sur [−10, 10], le taux d’acceptation tombe à 15% environ : les pas de la marche aléatoire sont trop grands. Partant d’un point vraisemblable 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 uniforme sur [−0.1, 0.1], le taux d’acceptation est de l’ordre de 98%, mais la convergence est très lente : la marche aléatoire fait des pas de fourmi donc met beaucoup trop de temps à explorer la région d’intérêt, i.e. l’intervalle [−3, 3]. Exercice 3.6 (Metropolis vs Rejet) On considère sur R2 la densité g(u, v) = c × f (u, v), où c est une constante de normalisation et f (u, v) = (cos u)2 (sin v)2 exp −0.05(u2 + v 2 ) . 1. Représentation de f : f=function(u,v)(cos(u))^2*(sin(v))^2*exp(-0.05*(u^2+v^2)) u=seq(-5,5,0.1) v=seq(-5,5,0.1) z = outer(u,v,f) par(mfrow=c(1,2)) persp(u,v,z,theta=30) image(u,v,z) 2. Puisque X ′ = x+σW , q(x, x′ ) est, vue comme une fonction de x′ , la densité d’une gaussienne centrée en x et de matrice de covariance σ 2 I2 , c’est-à-dire en notant k·k la norme euclidienne : 1 1 ′ ′ 2 q(x, x ) = exp − 2 kx − xk . 2πσ 2 2σ Cette formule étant symétrique en x et x′ , il est clair que q(x, x′ ) = q(x′ , x), donc on est dans le cadre de l’algorithme de Metropolis. 3. Implémentation avec σ = 1 : n=10^4 sigma=1 X=matrix(0,2*n,nrow=n,ncol=2) for(k in 1:(n-1)){ uprop=X[k,1]+sigma*rnorm(1) vprop=X[k,2]+sigma*rnorm(1) r=f(uprop,vprop)/f(X[k,1],X[k,2]) U=runif(1) if(U<r){X[k+1,]=c(uprop,vprop)}else{X[k+1,]=X[k,]}} txaccept1=length(unique(X[,1]))/n Arnaud Guyader Simulations Monte-Carlo 107 −4 −2 v v z u 0 2 4 3.6. Corrigés −4 0 2 4 u Figure 3.5 – Représentation de f (u, v) = (cos u)2 (sin v)2 exp −0.05(u2 + v 2 ) . 4. Représentation des points visités par la chaîne pour σ = 1 : image(u,v,z) points(X,pch=3,cex=.1) Lorsque σ est grand, par exemple σ = 10, il y a beaucoup de propositions là où la densité est faible et qui ont donc toutes les chances d’être refusées. La densité f est donc nettement moins bien échantillonnée. A contrario, lorsque σ est petit, par exemple σ = 0.1, chaque proposition est très proche du point précédent donc a de grandes chances d’être acceptée. Cependant la chaîne bouge très lentement donc là encore la densité f est mal échantillonnée. Tout ceci est illustré en figure 3.6. 5. On commence par noter que ∀(u, v) ∈ R 2 Soit donc 1 2 2 f (u, v) ≤ exp −0.05(u + v ) = exp − (u + v ) . 20 2 2 1 2 1 2 exp − (u + v ) h(u, v) = 20π 20 la densité d’une loi normale centrée et de matrice de covariance 10I2 . On a ainsi ∀(u, v) ∈ R2 ou encore ∀(u, v) ∈ R2 g(u, v) ≤ 20π × c × h(u, v), g(u, v) = 20π(cos u)2 (sin v)2 ≤ 20π. h(u, v) La simulation selon g par méthode de rejet avec h comme loi instrumentale s’en déduit. Simulations Monte-Carlo Arnaud Guyader −4 −2 0 2 4 u 4 2 −4 −2 v 0 2 0 −4 −2 v 0 −2 −4 v 2 4 Chapitre 3. Monte-Carlo par Chaînes de Markov 4 108 −4 −2 0 2 4 u −4 −2 0 2 4 u Figure 3.6 – Echantillons obtenus par Metropolis avec σ = 1/10, σ = 1 et σ = 10. nprop=10^4 n=floor(nprop/(20*pi)) X=matrix(0,2*n,nrow=n,ncol=2) for(i in (1:n)){ while (X[i,1]==0){ U=rnorm(1,mean=0,sd=sqrt(10)) V=rnorm(1,mean=0,sd=sqrt(10)) if(runif(1)<(cos(U))^2*(sin(V))^2/(20*pi)){ X[i,1] = U X[i,2] = V }}} image(u,v,z) points(X,pch=3,cex=.1) 6. Pour ce qui est du choix entre les 2 méthodes, on peut par exemple considérer la taille réelle de l’échantillon pour l’algorihme de Metropolis avec σ = 1, c’est-à-dire la proportion de propositions acceptées. Celle-ci est très raisonnable : txaccept1 [1] 0.4321 Par contre, pour l’algorithme de rejet, puisque m = 20π, on sait que sur n simulations selon la loi instrumentale, en moyenne seulement n/(20π) d’entre elles sont acceptées. Il y a donc énormément de gâchis et cette méthode est à proscrire. Exercice 3.7 (Metropolis-Hastings : méthode de Roberts et Rosenthal (1998)) On veut maintenant simuler un mélange équiprobable de deux lois normales réduites, centrées respectivement en −3 et 3. Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 109 1. La densité f correspondante est (cf. Exercice 1.13) f (x) = (x+3)2 (x−3)2 1 1 1 1 × √ e− 2 + × √ e− 2 . 2 2 2π 2π Sa √ moyenne est bien entendu 0. Pour son écart-type, un calcul simple montre qu’il vaut 10, ce que l’on peut retrouver grâce à la fonction integrate : m=3 carre=function(x){x^2*(dnorm(x-m)/2+dnorm(x+m)/2)} sqrt(integrate(carre,lower=-Inf,upper=Inf)$value) 2. L’implémentation se fait comme dans l’exercice précédent (on part de 0) : m=3 n=10^4 x=rep(0,n) w=rnorm(n,sd=1) u=runif(n) x[1]=0 for (k in 1:(n-1)){ y=x[k]+w[k+1] r=(dnorm(y,mean=-m)+dnorm(y,mean=+m))/(dnorm(x[k],mean=-m)+dnorm(x[k],mean=+m)) x[k+1]=x[k]+w[k+1]*(u[k+1]<r)} hist(x,nclass=50,prob=T) t=seq(-m-4,m+4,by=0.01) lines(t,0.5*(dnorm(t,mean=-m)+dnorm(t,mean=+m)),col=’red’) mean(x) sd(x) length(unique(x))/n 3. Lorsque X0 = m, avec par exemple m = 5, σ = 1 et n = 104 , la chaîne reste grenouiller très longtemps temps autour de m : à moins de prendre n très grand, elle ne visite qu’un mode de la distribution cible, ce qui est bien entendu hautement non désirable. 4. Restons avec m = 5. Une façon de s’en sortir est de faire de plus grands pas, donc de prendre σ plus grand dans le noyau de proposition. Par exemple, la valeur σ = 3 donne expérimentalement des résultats satisfaisants. 5. On ne considère plus un noyau de transition symétrique. Partant de x, la proposition est désormais Y =x+ σ 2 f ′ (x) × + σW, 2 f (x) (3.6) où W suit une loi normale centrée réduite. (a) Ce noyau de transition favorise les propositions vers des valeurs plus élevées de f , donc vers des régions plus intéressantes : ceci est dû au signe de f ′ (x). De plus, le rapport f ′ (x)/f (x) assure qu’on peut appliquer cette méthode à des densités connues uniquement à une constante multiplicative près. (b) La variable Y définie par (3.6) suit une loi normale N (x + q(x, y) = √ 1 2πσ 2 Simulations Monte-Carlo y − x+ exp − f ′ (x) σ2 2 × f (x) 2σ 2 2 σ2 2 × f ′ (x) 2 f (x) , σ ), donc w2 1 exp − , = √ 2 2πσ 2 Arnaud Guyader 110 Chapitre 3. Monte-Carlo par Chaînes de Markov tandis que q(y, x) = √ 1 2πσ 2 x − y+ exp − σ2 2 2σ 2 et le rapport de Metropolis-Hastings en découle : r(x, y) = × f ′ (y) f (y) 2 , f (y)q(y, x) . f (x)q(x, y) (c) La chaîne de Markov correspondant à cet algorithme de Metropolis-Hastings se simule comme suit : n=10^4 m=3 sigma=2 f=function(x,m){dnorm(x-m)+dnorm(x+m)} fprime=function(x,m){-(x-m)*dnorm(x-m)-(x+m)*dnorm(x+m)} x=rep(0,n) w=rnorm(n,sd=1) u=runif(n) x[1]=m for (k in 1:(n-1)){ y=x[k]+sigma^2/2*fprime(x[k],m)/f(x[k],m)+sigma*w[k+1] qxy=dnorm(w[k+1]) qyx=dnorm((x[k]-y-sigma^2/2*fprime(y,m)/f(y,m))/sigma) r=(f(y,m)*qyx)/(f(x[k],m)*qxy) x[k+1]=x[k]*(u[k+1]>r)+y*(u[k+1]<r)} hist(x,nclass=50,prob=T) t=seq(-m-4,m+4,by=0.01) lines(t,0.5*(dnorm(t,mean=-m)+dnorm(t,mean=+m)),col=’red’) mean(x) sd(x) length(unique(x))/n Exercice 3.8 (Metropolis indépendant et optimisation) On veut trouver le maximum sur [0, 1] de la fonction fu (x) = (cos(50x) + sin(20x))2 . 1. La représentation de fu est immédiate : f=function(x)(cos(50*x)+sin(20*x))^2 t=seq(0,1,by=0.0001) plot(t,f(t),type=’l’) On voit qu’il y a deux maxima globaux, l’un inférieur à 1/2, l’autre supérieur à 1/2. Le premier peut s’obtenir par la fonction optimize : optimize(f,lower=0,upper=1,maximum=T) Il est en x=0.38 et vaut environ 3.83. Le second peu s’obtenir de la façon suivante : optimize(f,lower=0.4,upper=1,maximum=T) Il est en x=0.56. Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 111 2. L’idée sous-jacente est que la chaîne va passer plus de temps là où la densité proportionnelle à fu prend ses valeurs les plus grandes, donc bien explorer ce voisinage. 3. Si Y = x + U (mod 1) avec U ∼ U[0,1] , alors Y suit tout simplement une loi uniforme sur [0, 1]. Cette loi est indépendante du point de départ x, c’est pourquoi on parle de Metropolis indépendant. En particulier, ce noyau de transition est symétrique, le rapport de Metropolis-Hastings correspond au rapport de Metropolis et il vaut tout simplement r(x, y) = fu (y)/fu (x). 4. Le code suivant donne l’un ou l’autre des deux extrema globaux : n=10^4 x=rep(0,n) y=runif(n) u=runif(n) x[1]=runif(1) for (k in 1:(n-1)){ r=f(y[k+1])/f(x[k]) x[k+1]=x[k]*(u[k+1]>r)+y[k+1]*(u[k+1]<r)} x[which.max(f(x))] max(f(x)) 5. Pour le minimum, il vaut 0 et est atteint en plusieurs endroits : optimize(f,lower=0,upper=1,maximum=F) La minimisation de f est équivalente la maximisation de exp(−f ), le ratio de Metropolis valant donc cette fois r(x, y) = exp(f (x) − f (y)). n=10^4 x=rep(0,n) y=runif(n) u=runif(n) x[1]=runif(1) for (k in 1:(n-1)){ r=exp(f(x[k])-f(y[k+1])) x[k+1]=x[k]*(u[k+1]>r)+y[k+1]*(u[k+1]<r)} x[which.min(f(x))] min(f(x)) Exercice 3.9 (Recuit simulé) On veut estimer par recuit simulé le minimum sur R de la fonction V (x) = x2 (2 + (sin(100x))2 ). 1. Pour la représentation : V=function(x){x^2*(2+sin(100*x)*sin(100*x))} x=seq(-2,2,by=0.001) plot(x,V(x),type="l",col="blue") La fonction V est positive (carrés, blablabla) et ne s’annule qu’en 0, comme on le voit sur la représentation graphique de V . Celle-ci montre par ailleurs que V a énormément de minima locaux. 2. Le maximum de fT (x) sur R est donc atteint en un unique point : l’origine. 3. Pour les représentations : Simulations Monte-Carlo Arnaud Guyader Chapitre 3. Monte-Carlo par Chaînes de Markov 6 0 2 4 V(x) 8 12 112 −2 −1 0 1 2 x Figure 3.7 – Fonction V à minimiser. x=seq(-1,1,by=0.001) par(mfrow=c(1,2)) T=10 plot(x,exp(-V(x)/T),type="l",main="T=10",col="blue",ylab="") T=0.1 plot(x,exp(-V(x)/T),type="l",main="T=0.1",col="blue",ylab="") Le froid 0.0 0.4 0.8 0.75 0.85 0.95 Le chaud −1.0 0.0 0.5 1.0 −1.0 x 0.0 0.5 1.0 x Figure 3.8 – Fonctions x 7→ exp(−V (x)/T ) pour différentes T = 10 et T = 0.1. 4. On a de façon générale q(x, y) = 1|y−x|≤1/2 = q(y, x). Si y = x + U , on a donc |y − x| ≤ 1/2 et r(x, y) = 1 fT (y) = exp − (V (y) − V (x)) . fT (x) T 5. Implémentation du recuit simulé : n=1000 X=rep(0,n) Vobs=rep(0,n) X[1]=runif(1,min=-10,max=10) Vobs[1]=V(X[1]) for(k in 1:(n-1)){ T=1/(1+log(k)) Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 113 Xprop=X[k]+runif(1,min=-1/2,max=1/2) r=exp((V(X[k])-V(Xprop))/T) u=runif(1) X[k+1]=Xprop*(u<r)+X[k]*(u>r) Vobs[k+1]=V(X[k+1])} Vobs[n] min(Vobs) Exercice 3.10 (Le voyageur de commerce) Un commercial doit passer par N villes et revenir à son point de départ, il se déplace en avion et il y a des vols directs entre toutes les villes. Le but est de trouver le trajet optimal, c’est-à-dire la distance minimale à parcourir. 1. Il y a (N − 1)! façons possibles d’effectuer le trajet. Il est donc clairement impossible d’effectuer une recherche exhaustive si N n’est pas petit. 2. Pour 10 villes, voici un exemple de représentation : N=10 M=matrix(runif(2*N),nrow=N,ncol=2) trajini=rbind(M,M[1,]) plot(trajini,type=’l’,xlab=’’,ylab=’’) Ce parcours n’est pas franchement optimal... 3. Construction de la matrice dist des distances entre villes : distx=(M[,1]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,1]))^2 disty=(M[,2]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,2]))^2 dist=sqrt(distx+disty) 4. On cherche donc argmin Dσ = argmin σ∈SN σ∈SN N X d(Mσ(ℓ) , Mσ(ℓ+1) ). ℓ=1 5. Partant de σ, il suffit de tirer ℓ et ℓ′ uniformément entre 1 et N , puis d’inverser σ(ℓ) et ′ σ(ℓ′ ) dans le vecteur définissant σ. Ceci définit sans ambiguïté la permutation σ ℓ,ℓ (égale à l’identité si ℓ = ℓ′ ). Notons que cette transition est symétrique : la probabilité de passer de ′ ′ σ à σ ℓ,ℓ est égale à celle de passer de σ ℓ,ℓ à σ, à savoir 2/N 2 . Notons aussi qu’il y a bien d’autres façons d’explorer l’espace SN , la littérature foisonne sur ce sujet. 6. Pour l’implémentation de l’algorithme, on commence par construire une fonction associant à une permutation σ la distance du parcours correspondant : D=function(perm,dist){ d=dist[perm[N],perm[1]] for (i in 1:(N-1)){d=d+dist[perm[i],perm[i+1]]} return(d)} On peut alors passer à l’algorithme de Metropolis proprement dit : n=10^4 sigma=matrix(0,nrow=n,ncol=N) Dist=rep(0,n) sigma[1,]=1:N Dist[1]=D(sigma[1,],dist) u=runif(n) Simulations Monte-Carlo Arnaud Guyader 114 Chapitre 3. Monte-Carlo par Chaînes de Markov for (k in 1:(n-1)){ l=ceiling(N*runif(1)) lprime=ceiling(N*runif(1)) sigmaprop=sigma[k,] sigmaprop[lprime]=sigma[k,l] sigmaprop[l]=sigma[k,lprime] r=exp(D(sigma[k,],dist)-D(sigmaprop,dist)) sigma[k+1,]=sigma[k,]*(u[k+1]>r)+sigmaprop*(u[k+1]<r) Dist[k+1]=D(sigma[k+1,],dist)} 7. Ceci fait, on peut déterminer le meilleur trajet obtenu par cette méthode et le représenter : min(Dist) sigmaopt=sigma[which.min(Dist),] Mopt=rbind(M[sigmaopt,],M[sigmaopt[1],]) plot(Mopt,type=’l’,xlab=’’,ylab=’’) 8. Pour le recuit simulé, par rapport à ce qui précède, il suffit de tenir compte de la température Tn dans le ratio de Metropolis, lequel devient donc à l’étape n : Dσ − Dσ′ ′ r(σ, σ ) = exp . Tn Autrement dit, tout le travail a déjà été fait. (a) Pour un schéma de température en Tn = 1/ log n, le programme complet est donné ci-dessous. On note qu’il fonctionne bien mieux que le Metropolis précédent (i.e. température fixe). # Initialisation des paramètres set.seed(1234) N=20 n=10^4 M=matrix(runif(2*N),nrow=N,ncol=2) trajini=rbind(M,M[1,]) plot(trajini,type=’l’,xlab=’’,ylab=’’) # Matrice des distances distx=(M[,1]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,1]))^2 disty=(M[,2]%*%matrix(1,nrow=1,ncol=N)-matrix(1,nrow=N,ncol=1)%*%t(M[,2]))^2 dist=sqrt(distx+disty) # Fonction distance D=function(perm,dist){ d=dist[perm[N],perm[1]] for (i in 1:(N-1)){d=d+dist[perm[i],perm[i+1]]} return(d)} # Schéma de température + déclaration-initialisation des objets T=1/log(1+(1:n)) sigma=matrix(0,nrow=n,ncol=N) Dist=rep(0,n) sigma[1,]=1:N Dist[1]=D(sigma[1,],dist) Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 115 u=runif(n) # Exploration de l’espace des permutations par recuit simulé for (k in 1:(n-1)){ l=ceiling(N*runif(1)) lprime=ceiling(N*runif(1)) sigmaprop=sigma[k,] sigmaprop[lprime]=sigma[k,l] sigmaprop[l]=sigma[k,lprime] r=exp((D(sigma[k,],dist)-D(sigmaprop,dist))/T[k]) sigma[k+1,]=sigma[k,]*(u[k+1]>r)+sigmaprop*(u[k+1]<r) Dist[k+1]=D(sigma[k+1,],dist)} 0.0 0.4 0.8 0.0 0.4 0.8 # 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.2 0.6 1.0 0.2 0.6 1.0 Figure 3.9 – Voyageur de commerce : trajet initial et meilleur trajet obtenu par recuit simulé. (b) Pour Tn = n−γ , un choix γ > 1/2 semble correspondre à un refroidissement trop rapide, lequel ne fait pas mieux en général que le schéma (lent) en 1/ log n. La valeur γ = 1/4 donne des résultats comparables à celui-ci. (c) Le schéma à décroissance géométrique par paliers est illustré sur la page suivante (ainsi que bien d’autres illustrations sur les méthodes Monte-Carlo) : http://www-sop.inria.fr/mefisto/java/tutorial1/tutorial1.html D’autres schémas sont bien sûr envisageables, par exemple une décroissance en sigmoïde 3 . Exercice 3.11 (Refroidissement trop rapide) 1. Le potentiel V a un minimum local en 1 et son minimum global en 3. Le graphe de transition sur cet espace à 3 états est élémentaire. 2. On part du point X0 = 1. On a P(∃k ≤ n, Xk = 3) = 1 − P(∀k ≤ n, Xk ∈ {1, 2}) ≤ 1 − P(∀k ≤ n, Xk = 1), 3. http://toddwschneider.com/posts/traveling-salesman-with-simulated-annealing-r-and-shiny/ Simulations Monte-Carlo Arnaud Guyader 116 Chapitre 3. Monte-Carlo par Chaînes de Markov où P(∀k ≤ n, Xk = 1) = P(X0 = 1, X1 = 1, . . . , Xn = 1) est la probabilité que la chaîne ne bouge pas. 3. La propriété de Markov donne P(∀k ≤ n, Xk = 1) = P(X0 = 1)P(X1 = 1|X0 = 1) . . . P(Xn = 1|Xn−1 = 1), avec P(X0 = 1) = 1 par hypothèse. Par ailleurs, partant de Xk = 1, l’état proposé est nécessairement Y = 2 : si Xk+1 = 1, c’est que cette proposition a été refusée, donc que la variable uniforme U était supérieure au rapport de Metropolis 1 1 1 Q(Y, Xk ) × exp − (V (Y ) − V (Xk )) = exp − r(Xk , Y ) = < 1. Q(Xk , Y ) Tk 2 Tk Or, puisque U suit une loi uniforme, P(Xk+1 = 1|Xk = 1) = P(U ≥ r(Xk , Y )) = 1 − 1 1 exp − . 2 Tk Au total, on a donc P(∀k ≤ n, Xk = 1) = 4. De la propriété Qn−1 k=0 (1 − xk ) ≥ 1 − Pn−1 k=0 n−1 Y k=0 1 1 exp − . 2 Tk 1− xk , on déduit que n−1 1X 1 P(∀k ≤ n, Xk = 1) ≥ 1 − , exp − 2 Tk k=0 d’où n−1 1 1X . exp − P(∃k ≤ n, Xk = 3) ≤ 2 Tk k=0 Par continuité monotone croissante, on en déduit que n−1 ∞ 1X 1 1X 1 P(∃n, Xn = 3) = lim P(∃k ≤ n, Xk = 3) ≤ lim exp − . = exp − n→∞ n→∞ 2 Tk 2 n=0 Tn k=0 Faisant abstraction des deux premiers termes, si Tn ≤ c/ log n, alors ∞ 1 X −1/c n , P(∃n, Xn = 3) ≤ 2 n=2 quantité qui est strictement inférieure à 1 dès que 0 < c ≤ c0 . Autrement dit, si la température décroît trop vite, la chaîne peut rester piégée ad vitam æternam dans l’état initial X0 = 1 et ne jamais visiter le minimum global. Ceci justifie des schémas de température dont la décroissance est d’ordre logarithmique même si, dans les faits, les praticiens optent souvent pour des profils de refroidissement plus rapides. Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 117 Exercice 3.12 (Gibbs simultané = Gibbs vérolé) 1. Sur E = {(0, 0), (0, 1), (1, 0), (1, 1)}, la chaîne de Markov associée a pour matrice de transition : 4/9 2/9 2/9 1/9 1/3 1/6 1/3 1/6 P = 1/3 1/3 1/6 1/6 . 1/4 1/4 1/4 1/4 Cette chaîne est irréductible et apériodique, elle admet donc une unique loi stationnaire vers laquelle il y a convergence en loi. 2. Puisque πP 6= π, la chaîne (Xn ) ne converge pas en loi vers π. 3. La matrice de transition de l’échantillonneur de Gibbs par balayage aléatoire s’écrit : 2/3 1/6 1/6 0 1/3 5/12 0 1/4 . Pa = 1/3 0 5/12 1/4 0 1/4 1/4 1/2 Conformément à ce qui est expliqué dans le cours, on vérifie les équations d’équilibré détaillé, à savoir que pour tout couple (i, j), on a πi Pa (i, j) = πj Pa (j, i). Ainsi π est réversible pour Pa , et en particulier stationnaire. 4. Pour l’échantillonneur de Gibbs par balayage déterministe, on obtient 4/9 1/3 Pd = 4/9 1/3 2/9 1/6 2/9 1/6 1/6 1/4 1/6 1/4 1/6 1/4 . 1/6 1/4 On a encore πPd = π, par contre la réversibilité est perdue : par exemple π1 Pd (1, 3) = 4 1 6= π3 Pd (3, 1) = . 15 45 Exercice 3.13 (Somme d’exponentielles contrainte) Soit X1 , . . . , Xd des variables exponentielles indépendantes de paramètres λ1 , . . . , λd donnés. Soit S = X1 + · · · + Xd leur somme et m > 0 une constante fixée. 1. La densité fm du vecteur aléatoire (X1 , . . . , Xd ) sachant S > m n’est rien d’autre que la restriction de la densité f du vecteur (X1 , . . . , Xd ) à la région S > m, soit : fm (x1 , . . . , xd ) = 1x1 +···+xd >m × f (x1 , . . . , xd ), P(X1 + · · · + Xd > m) et puisque les variables X1 , . . . , Xd sont indépendantes, ceci s’écrit encore : d fm (x1 , . . . , xd ) = Y 1x1 +···+xd >m × λℓ e−λℓ xℓ . P(X1 + · · · + Xd > m) ℓ=1 2. On cherche la loi de X1 sachant que X1 + x2 + · · · + xd > m. A priori, deux situations sont à envisager : — si x2 + · · · + xd > m, alors il n’y a aucune contrainte sur X1 , qui suit tout naturellement sa loi initiale, c’est-à-dire une exponentielle de paramètre λ1 ; Simulations Monte-Carlo Arnaud Guyader 118 Chapitre 3. Monte-Carlo par Chaînes de Markov — si au contraire x2 +· · ·+xd < m, alors X1 suit la restriction d’une exponentielle au-dessus de la constante m − (x2 + · · · + xd ), ce qui correspond à une exponentielle translatée de cette constante. En notant x+ = max(x, 0) la partie positive de x, on peut résumer les deux cas en un seul : L(X1 |X1 + x2 + · · · + xd > m) = (m − (x2 + · · · + xd ))+ + E(λ1 ), dont la simulation est triviale. 3. On en déduit un échantillonneur de Gibbs pour simuler un échantillon (X1 , . . . , Xd ) conditionnellement au fait que S > m. Pour l’initialisation, on peut par exemple partir du point X 0 = (m/d, . . . , m/d). Pour un balayage déterministe, on commence par mettre la première coordonnée à jour en simulant m + E(λ1 ), d X1′ = x′1 = (m − (x2 + · · · + xd ))+ + E(λ1 ) = puis la deuxième en simulant X2′ = x′2 = (m − (x′1 + x3 + · · · + xd ))+ + E(λ2 ), et ainsi de suite jusqu’à obtenir X 1 = (x′1 , . . . , x′d ), auquel on réapplique la même recette pour obtenir X 2 = (x′′1 , . . . , x′′d ), etc. On construit ainsi une chaîne de Markov (X n ) de loi stationnaire fm . Exercice 3.14 (Cas d’école pour Gibbs) On considère la densité 2 x2 (1 + y + y 2 ) y . 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 L(X|Y = y) = N De même, l’écriture 1 0, 1 + y + y2 1 + x2 f (x, y) = Cx exp − 2 montre que L(Y |X = x) = N . x2 y+ 2(1 + x2 ) 1 x2 , − 2 2(1 + x ) 1 + x2 2 ! . 2. Un échantillonneur de Gibbs de loi cible f est alors très facile à construire puisqu’il suffit de simuler des variables gaussiennes. Pour un balayage aléatoire, si Xn = (x, y), alors on tire à Pile ou Face pour savoir quelle coordonnée on change : — si Pile on change la première, c’est-à-dire qu’on tire 1 ′ ′ , X = x ∼ N 0, 1 + y + y2 et on pose Xn+1 = (x′ , y) ; Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 119 — si Face on change la seconde, c’est-à-dire qu’on tire 1 x2 ′ ′ , , Y =y ∼N − 2(1 + x2 ) 1 + x2 et on pose Xn+1 = (x, y ′ ). Pour un balayage déterministe, partant de Xn = (x, y) : — on tire ′ ′ X =x ∼N — ceci fait, on tire Y =y ∼N − ′ — on pose Xn+1 = (x′ , y ′ ). ′ 1 0, 1 + y + y2 ; 1 x′2 , 2(1 + x′2 ) 1 + x′2 ; Pour l’initialisation, on peut par exemple partir de X0 = (0, 0). Exercice 3.15 (Simulation d’un couple) Soit (X, Y ) un couple aléatoire de densité jointe f (x, y) = e−y 10<x<y . 1. X suit une loi exponentielle de paramètre 1. 2. Sachant X = x > 0, Y = x + T avec T ∼ E(1), autrement dit Y suit une loi exponentielle translatée de x. 3. Pour obtenir une réalisation du couple aléatoire (X, Y ), il suffit donc de simuler X selon une loi exponentielle de paramètre 1, puis Y = X + T , où T suit une loi exponentielle de paramètre 1. L’implémentation peut donc se faire de la manière suivante : 6 0 2 4 Y 8 n=1000 X=rexp(n) Y=X+rexp(n) plot(X,Y,pch=3,col="blue") 0 2 4 6 8 X Figure 3.10 – Echantillon de couples (X, Y ) de densité f (x, y) = e−y 10<x<y . 4. Sachant Y = y > 0, X ∼ U[0,y] , loi uniforme sur [0, y]. 5. Pour passer de (Xk , Yk ) à (Xk+1 , Yk+1 ), il suffit donc de simuler Xk+1 selon une loi uniforme sur [0, Yk ], puis Yk+1 = Xk+1 + Tk+1 , où Tk+1 suit une loi exponentielle de paramètre 1. Ainsi : Simulations Monte-Carlo Arnaud Guyader 120 Chapitre 3. Monte-Carlo par Chaînes de Markov n=10^3 X=rep(0,n) Y=rep(0,n) X[1]=runif(1) Y[1]=X[1]+rexp(1) for(k in 1:(n-1)){ X[k+1]=runif(1,min=0,max=Y[k]) Y[k+1]=X[k+1]+rexp(1)} plot(X,Y,pch=3,col="blue") 6. La première méthode fournit directement un couple (X, Y ) distribué selon la densité jointe f (x, y). Pour l’échantillonneur de Gibbs, à n fixé, la densité du couple (Xn , Yn ) n’est pas exactement f (x, y) : cette propriété n’est qu’asymptotiquement vraie, lorsque n → ∞. On privilégiera donc la première méthode, dite de simulation exacte. Exercice 3.16 (Balayage aléatoire vs balayage déterministe) On considère un espace d’états E fini de cardinal M , une densité cible π = [π1 , . . . , πM ] avec tous les πi strictement positifs, et une matrice de transition Q = [qij ] avec tous les qij strictement positifs. 1. Rappelons que rij = (πj qji )/(πi qij ) peut être supérieur à 1, auqel cas la probabilité qu’une loi uniforme lui soit inférieure vaut 1. Sinon, cette probabilité vaut rij . Bref, de façon générale, αij = min(1, rij ). 2. Supposons i 6= j. Le coefficient pij correspond à la probabilité d’aller de l’état i à l’état j. Pour ceci, deux conditions doivent être remplies : d’abord que cette transition soit proposée par le noyau instrumental Q, puis que cette proposition soit acceptée. Au total, puisque les aléas en jeu lors de ces deux étapes sont indépendants, on voit que i 6= j =⇒ pij = qij × αij = qij × min(1, rij ). Par ailleurs, P est une matrice de transition, donc chaque ligne somme à 1, d’où X X pii = 1 − pij = 1 − qij × αij . j6=i j6=i 3. Par définition, P est π-réversible si ∀i 6= j, πi pij = πj pji . Supposons que πj qji ≥ πi qij , alors πj qji ≥ 1 =⇒ αij = 1 =⇒ pij = qij × αij = qij rij = πi qij tandis que rji = πi qij πi qij 1 = ≤ 1 =⇒ αji = rji =⇒ pji = qji × αji = . πj qji rij πj Finalement πi qij = πj pji . πj Tout marcherait de la même façon si on avait initialement supposé que πj qji ≤ πi qij . Ainsi P est bien π-réversible. En particulier, pour tout indice j, la j-ème coordonnée du produit πP s’écrit X X X pji = πj =⇒ πP = π, πi pij = πj pji = πj πi pij = πi qij = πj × i i i c’est-à-dire que π est stationnaire pour P (propriété toujours vraie : P π-réversible ⇒ π P -invariante). Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 121 4. C’est l’âne qui trotte. Il suffit de noter que rji = 1/rij : πi pij = πi qij α(rij ) = πi qij rij α(1/rij ) = πi qij πj qji α(rji ) = πj qji α(rji ) = πj pji πi qij ce qui prouve que P est π-réversible. Ainsi, dans l’algorithme de Metropolis-Hastings, on peut aussi prendre α(r) = r/(1 + r). 5. Dans le cadre d’un espace d’états continu, on remplace par exemple π par la densité f (x) supposée, pour simplifier, strictement positive sur Rd et qij par q(x, y) avec q(x, y) > 0 pour tout couple (x, y). On a, pour tout x, Z q(x, y)dy = 1. Rd Le rapport de Metropolis-Hastings s’écrit r(x, y) = f (y)q(y, x) =⇒ α(x, y) = min(1, r(x, y)). f (x)q(x, y) Le noyau de transition P est défini de façon équivalente : x 6= y =⇒ p(x, y) = q(x, y) × α(x, y) = q(x, y) × min(1, r(x, y)), et p(x, x) = 1 − Z p(x, y)dy. Rd \{x} Ainsi q(x, ·) est une densité sur Rd , mais p(x, ·) ne l’est pas puisqu’il y a en général un Dirac au point x. La f -réversibilité de P se traduit en ∀(x, y) ∈ Rd × Rd , f (x)p(x, y) = f (y)p(y, x), laquelle se vérifie comme dans le cas discret. Ceci implique que f est stationnaire pour le noyau de transition P , c’est-à-dire que Z d f (x)p(x, y)dx. ∀y ∈ R , f (y) = Rd 6. Dans l’échantillonneur de Gibbs, notons P1 , . . . , Pd les noyaux de transition en jeu, c’est-àdire que la transition de x vers x′ peut avoir lieu seulement si x et x′ ne diffèrent que par une coordonnée, disons ℓ, c’est-à-dire x−ℓ = x′−ℓ , auquel cas ceci arrive avec la densité de probabilité Pℓ (x, x′ ) = f (x′ℓ |x−ℓ ). (a) Pour qu’il y ait transition possible entre les points x et x′ via le noyau Pℓ , il faut que x−ℓ = x′−ℓ . Dès lors, on peut écrire f (x)Pℓ (x, x′ ) = f (xℓ , x−ℓ )f (x′ℓ |x−ℓ ) = f (x′ℓ , x′−ℓ )f (xℓ |x′−ℓ ) = f (x′ )Pℓ (x′ , x). Notons que cette égalité est encore vérifiée si x−ℓ 6= x′−ℓ , car dans ce cas Pℓ (x, x′ ) = Pℓ (x′ , x) = 0. Ceci atteste de la réversibilité de f pour Pℓ . Comme dans le cas discret, on en déduit que f est invariante par P puisque pour tout x′ , on a Z Z Z ′ ′ ′ ′ Pℓ (x′ , x)dx = f (x′ ). f (x )Pℓ (x , x)dx = f (x ) f (x)Pℓ (x, x )dx = Rd Simulations Monte-Carlo Rd Rd Arnaud Guyader 122 Chapitre 3. Monte-Carlo par Chaînes de Markov (b) Le balayage aléatoire consiste à tirer d’abord une coordonnée ℓ au hasard entre 1 et d, puis à changer celle-ci via le noyau Pℓ . Dit succinctement, on a donc un mélange de noyaux de transitions : 1 P = (P1 + · · · + Pd ) . d Par conséquent, pour tout couple (x, x′ ), on a f (x)P (x, x′ ) = 1 f (x)P1 (x, x′ ) + · · · + f (x)Pd (x, x′ ) , d et comme tous les noyaux sont f -réversibles, il vient f (x)P (x, x′ ) = 1 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 ′ ′ ′′ ′ ′′ P (x, x )Q(x , x )dx dx, f (x)(P ◦ Q)(x, x )dx = f (x) d’où par Fubini-Tonelli (tout étant positif, la vie est belle), Z Z Z ′′ ′ f (x)(P ◦ Q)(x, x )dx = f (x)P (x, x )dx Q(x′ , x′′ )dx′ . D’une part f est stationnaire pour P donc le terme dans la parenthèse se simplifie : Z Z ′′ f (x)(P ◦ Q)(x, x )dx = f (x′ )Q(x′ , x′′ )dx′ , d’autre part elle l’est aussi pour Q donc cette dernière intégrale se simplifie tout autant pour aboutir à Z f (x)(P ◦ Q)(x, x′′ )dx = f (x′′ ), ce qui montre que f est stationnaire pour P ◦ Q. En revenant au Gibbs à balayage déterministe, puisque f est stationnaire pour les noyaux P1 , . . . , Pd , elle le reste pour leur composition. Rien n’assure cependant que f est réversible pour P dans le cas général... Exercice 3.17 (Modèle d’Ising) 1. Les configurations minimisant l’énergie sont celles pour lesquelles les spins sont tous égaux à +1 ou à -1, configurations notées S + et S − . Il y a donc deux minima globaux pour V . Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 123 2. Lorsque T → +∞, µT tend vers la mesure uniforme : toutes les configurations deviennent équiprobables. A contrario, lorsque T → 0, seuls les deux minima globaux auront une probabilité qui ne s’éteint pas, laquelle tend donc vers 1/2 (principe de Laplace). 3. Le nombre de configurations possibles est 2N ×N , qui correspond à la taille de l’espace d’états, lequel est donc fini mais immense dès que N n’est pas petit. Dès lors, il est exclu d’essayer de simuler directement selon µT , d’où le recours à une méthode de type MCMC dans la suite. 4. Pour passer de S à S (i0 ,j0 ) via Q, il faut et il suffit d’avoir tiré le couple d’indices (i0 , j0 ), la réciproque étant tout aussi vraie, d’où Q(S, S (i0 ,j0) ) = Q(S (i0 ,j0 ) , S) = 1 . N2 Nous sommes donc dans le cas symétrique de Metropolis-Hastings, c’est-à-dire dans le cas de l’algorithme de Metropolis, avec µT (S (i0 ,j0 ) ) 1 (i0 ,j0 ) (i0 ,j0 ) r(S, S )= V (S − V (S)) = exp − , µT (S) T c’est-à-dire r(S, S (i0 ,j0) ) = exp − 2Si0 j0 T X (i,j)∼(i0 ,j0 ) Sij , donc une somme portant sur au plus 4 termes (cela dépend si (i0 , j0 ) est au bord du carré ou non). La simplification vient du télescopage de tous les termes ne faisant pas intervenir le point (i0 , j0 ) dans les sommes définissant V (S (i0 ,j0 ) ) et V (S). 5. Soit S et S ′ deux configurations quelconques et n0 le nombre de sites en lesquelles elles diffèrent. On voit qu’il y a une probabilité non nulle d’aller de S à S ′ en exactement n0 étapes, donc la chaîne est irréductible. Par ailleurs, partant de S + , toute configuration proposée par Q (laquelle contient donc un seul spin à -1) est moins vraisemblable pour µT , c’est-à-dire que la probabilité de rester sur place est strictement positive. Ainsi S + est apériodique, et puisque la chaîne est irréductible, elle est apériodique. 6. Dans l’implémentation qui suit, la bidouille consistant à plonger la matrice S de taille N ×N dans une matrice auxiliaire Saux de taille (N + 2) × (N + 2) permet d’éviter une discussion fastidieuse sur le fait que (i0 , j0 ) est au bord du carré ou non. N=40 T=10^{-1} n=10^4 Sini=matrix(2*rbinom(N^2,size=1,prob=1/2)-1,nrow=N,ncol=N) S=Sini for (k in (1:n)){ Saux=matrix(0,nrow=N+2,ncol=N+2) Saux[2:(N+1),2:(N+1)]=S # entoure la matrice de 0 (bords, blablabla) iO=ceiling(N*runif(1)) # indice entre 1 et N iaux=1+iO # indice entre 2 et N+1 => S[iO,jO]=Saux[iaux,jaux] jO=ceiling(N*runif(1)) jaux=1+jO s=Saux[iaux-1,jaux]+Saux[iaux+1,jaux]+Saux[iaux,jaux-1]+Saux[iaux,jaux+1] r=exp(-2*S[iO,jO]*s/T) Simulations Monte-Carlo Arnaud Guyader 124 Chapitre 3. Monte-Carlo par Chaînes de Markov if(runif(1)<r){S[iO,jO]=-S[iO,jO]}} 40 30 10 20 1:N 20 10 1:N 30 40 par(mfrow=c(1,2)) image(1:N,1:N,Sini) image(1:N,1:N,S) 10 20 30 40 10 1:N 20 30 40 1:N Figure 3.11 – Modèle d’Ising à basse température après 104 étapes de Metropolis. 7. A haute température, aucun motif n’apparaît, les spins restent “désordonnés” comme dans la configuration initiale où le tirage est uniforme sur l’ensemble des 2N ×N configurations possibles. Par contre, à basse température, les spins ont tendance à s’aligner les uns sur les autres de façon à minimiser l’énergie V , d’où l’apparition de grandes zones alternées de sable et d’algues rouges... Exercice 3.18 (Débruitage d’image) 1. Si α > 0 et β = 0, l’unique configuration minimisant V est Σ. Si α = 0 et β > 0, on retrouve le modèle d’Ising : deux configurations minimisent l’énergie, celle où tous les pixels sont à 1 et celle où tous les pixels sont à -1. 2. Si T → 0, la mesure de probabilité µT tend vers un Dirac en S ⋆ . Si T → +∞, la mesure de probabilité µT tend vers UC , loi uniforme sur l’ensemble des configurations possibles (il y en a 2N ×N ). 3. On a Q(S, S (i0 ,j0 ) ) = Q(S (i0 ,j0 ) , S) = 1/N 2 . Le rapport de Metropolis vaut donc 1 V (S (i0 ,j0 ) − V (S)) r(S, S (i0 ,j0 ) ) = exp − T et après simplifications r(S, S (i0 ,j0 ) ) = exp − 2Si0 j0 2ασi0 j0 + β T X (i,j)∼(i0 ,j0 ) Sij . La somme porte sur au plus 4 termes, selon que (i0 , j0 ) est au bord du carré ou non. 4. Implémentation du recuit simulé : n=10^4 alpha=1/3 beta=2/3 Arnaud Guyader Simulations Monte-Carlo 3.6. Corrigés 125 N=40 p=0.25 sigma0=matrix(-1,nrow=N,ncol=N) sigma0[10:30,10:30]=1 bruit=matrix(2*rbinom(N^2,1,1-p)-1,nrow=N,ncol=N) sigma=sigma0*bruit S=sigma for (k in (1:n)){ T=1/k Saux=matrix(0,nrow=N+2,ncol=N+2) Saux[2:(N+1),2:(N+1)]=S # entoure la matrice de 0 i0=ceiling(N*runif(1)) # indice entre 1 et N iaux=1+i0 # indice entre 2 et N+1 => S[iO,jO]=Saux[iaux,jaux] j0=ceiling(N*runif(1)) jaux=1+j0 s=Saux[iaux-1,jaux]+Saux[iaux+1,jaux]+Saux[iaux,jaux-1]+Saux[iaux,jaux+1] r=exp(-2*S[i0,j0]*(2*alpha*sigma[i0,j0]+beta*s)/T) if(runif(1)<r){S[i0,j0]=-S[i0,j0]}} 10 20 30 1:N 40 40 10 20 1:N 30 40 30 10 20 1:N 20 10 1:N 30 40 par(mfrow=c(1,3)) image(1:N,1:N,sigma0) image(1:N,1:N,sigma) image(1:N,1:N,S) 10 20 1:N 30 40 10 20 30 40 1:N Figure 3.12 – Image non bruitée, image initiale, image débruitée par recuit simulé. Simulations Monte-Carlo Arnaud Guyader Bibliographie [1] Søren Asmussen and Peter W. Glynn. Stochastic simulation : algorithms and analysis, volume 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 nonliné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 equidistributed 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.