Chapter 1 Simulation de variables aléatoires Références: [F] Fishman, A first course in Monte Carlo, chap 3. [B] Bouleau, Probabilités de l ingénieur, chap 4. [R] Rubinstein, Simulation and Monte Carlo Method, chap 3. Cadre: Scilab possède une fonction rand) dont les appels successifs fournissent une suite de variables aléatoires indépendantes et identiquement distribuées, de loi uniforme sur [, 1]. Nous ne nous intéresserons pas ici à la conception d une telle fonction. Problème: Comment simuler une variable aléatoire ou un vecteur aléatoire suivant une loi donnée, différente de la loi uniforme sur [,1]? 1.1 Premiers exemples de lois classiques 1.1.1 Loi de Bernoulli de paramètre p: pδ 1 + 1 p)δ Ecrire une fonction bernoulli1p) qui renvoit un tirage selon la loi de Bernoulli de paramètre p. Ecrire une fonction bernoulli2k,p) qui renvoit un k-echantillon suivant la loi de Bernoulli de paramètres p. 1.1.2 Loi binomiale de paramètres n, p): n k= ) n p k 1 p) n k δ k k Lemme 1.1.1 Si X i ) 1 i n sont des variables aléatoires indépendantes et identiquement distribuées de loi de Bernoulli de paramètre p, alors S = n i=1 X i suit une loi binomiale de paramètres n, p). Ecrire une fonction binomialen,p) qui renvoit un tirage selon la loi binomiale de paramètres n,p). Faire un histogramme d un échantillon de taille 1 de loi binomiale de paramètres 8,1/3). histplot, clf 2
1.1.3 Loi uniforme sur {, 1,..., n 1}: function x=uniforme1n) 1 n 1 n k= // tirage suivant la loi uniforme sur {,...,n-1} x=floorn*rand)); Démonstration: On note X la variable aléatoire rendue par cette fonction. Comme P rand) < 1) = 1, on a P n*rand) < n) = 1 et δ k Pfloorn*rand)) [..n 1]) = 1. Donc X prend ses valeurs dans [..n 1]. Maintenant, soit k [..n 1]: PX = k) = Pfloorn*rand)) = k) = Pk n*rand) < k + 1) = P k n rand) < k + 1 n ) = 1 n. 1.1.4 Loi uniforme sur [a, b]: fx) = 1 b a 1 [a,b]x) Lemme 1.1.2 Si U suit la loi uniforme sur [,1], alors, si α > et β R, αu + β suit la loi uniforme sur [β,β + α]. Démonstration: Soit ϕ : R R une fonction continue bornée: en faisant le changement de variable x = αu + β, on a EϕαU + β)) = 1 ϕαu + β)du = β+α β ϕx) 1 α dx, ce qui signifie que X est une variable aléatoire de densité fx) = 1 α 1 [β,β+α], et on reconnaît la densité de la loi uniforme sur [β,β + α]. function x=uniforme2a,b) // tirage suivant la loi uniforme sur [a,b] x=a+b-a)*rand); 1.1.5 Loi exponentielle de paramètre λ: fx) = λ exp λx)1 R+ x) La fonction de répartition de la loi exponentielle est Ft) = PX t) = 1 exp λt). Cette fonction est une bijection de ],+ [ dans ],1[, d inverse Gu) = 1 ln1 u). λ Exercice 1: Montrer que si U est de loi uniforme sur [,1], alors GU) suit la loi exponentielle de paramètre λ. 3
function x=exponentiellea) // tirage suivant la loi exponentielle de parametre a x=-logrand))/a; Exercice 2: Pourquoi a-t-on remplacé 1 U par U dans l algorithme? 1.1.6 Loi géométrique de paramètre p: Méthode 1: à partir du jeu de pile ou face: + k=1 1 p) k 1 pδ k Lemme 1.1.3 Si X i ) i N sont des variables aléatoires iid de Bernoulli de paramètre p, alors N = min{i : X i = 1} suit une loi géométrique de paramètre p. function x=geometrique1p) // tirage suivant la loi geometrique de parametre p x=1; while rand)>p, x=x+1; end; Méthode 2: à partir de la loi exponentielle: ) Lemme 1.1.4 Soit U suit la loi uniforme sur [,1], alors 1+E lnu ln1 p) de paramètre p. Démonstration: Notons X = 1 + E ln U ln1 p) X prend ses valeurs dans N. Soit maintenant k N : suit la loi géométrique ). Par définition de la partie entière, ) ) ) ) ln U ln U PX = k) = P 1 + E = k = P E = k 1 ln1 p) ln1 p) = P k 1 ln U ) ln1 p) < k = P k ln1 p) < U k 1)ln1 p)) = P 1 p) k < U 1 p) k 1) = 1 p) k 1 1 p) k = 1 p) k 1 p. function x=geometrique2p) // tirage suivant la loi geometrique de parametre p x=1+floorlogrand))/log1-p)); 4
1.1.7 Loi de Poisson de paramètre λ: + k= exp λ) λk k! δ k Lemme 1.1.5 Soit X i ) i N sont des variables aléatoires iid exponentielles de paramètre λ. La variable aléatoire définie par N = si X 1 1 et N = max{i 1 : i X j 1} sinon, j=1 suit une loi de Poisson de paramètre λ. Démonstration: Soit k N. PN = k) k k+1 = P X j 1 < = = = R k+ 1 + R k + R k + j=1 j=1 X j λ k+1 exp λx 1 + + x k+1 )1 {x1 + +x k 1}1 {xk+1 >1 x 1 + +x k )}dx 1...dx k+1 + λ k exp λx 1 + + x k )1 {x1 + +x k 1} λexp λx k+1 )dx k+1 )dx 1...dx k 1 x 1 + +x k ) λ k exp λx 1 + + x k )1 {x1 + +x k 1} exp λ)expλx 1 + + x k ))dx 1...dx k = λ k exp λ) R k + 1 {x1 + +x k 1}dx 1...dx k. Pour calculer la dernière intégrale, on pose s 1 = x 1, s 2 = x 1 + x 2,..., s k = x 1 + + x k : 1 {x1 + +x k 1}dx 1...dx k = R k + ce qui termine la preuve. = R k + 1 1 {s1 s 2 s k 1}ds 1... ds k ds k sk s2 ds k 1... ds 1 = 1 k!, Soit U i ) i N des variables aléatoires iid de loi uniforme sur [,1], alors si X i = 1 λ lnu i), les X i ) i N sont des variables aléatoires iid exponentielles de paramètre λ, et i X j 1 1 i i λ ln 1 U j exp λ). j=1 j=1 U j j=1 function x=poissona) // tirage suivant la loi de Poisson de parametre a test=exp-a);x=;prod=rand); while prod>=test), x=x+1; prod=prod*rand); end; 5
1.1.8 Loi gaussienne centrée réduite: Méthode de Box-Mueller Rappelons la formule de changement de variable en plusieurs dimensions: Théorème 1.1.6 Soit G un ouvert de R n, et g : G R n une application de classe C 1, injective et dont le jacobien detj g x)) ne s annule pas sur G. Soit f une application mesurable de gg) dans R, intégrable sur gg). Alors fy)dy = fgx)) detj g x)) dx. gg) On en déduit la densité d un vecteur image: G Proposition 1.1.7 Soit X un vecteur aléatoire à valeur dans R n de densité f X. Soit g : R n R n une application de classe C 1, injective et dont le jacobien detj g x)) ne s annule pas. Alors le vecteur aléatoire Y = gx) a pour densité: f Y y) = f X g 1 y)) detjg 1 y)). Démonstration: Soit ϕ : R n R une application mesurable, positive, bornée. On applique le théorème précédent avec g 1 : ce qui prouve le résultat. En particulier, on obtient: EϕY )) = EϕgX))) = ϕgx))f X x)dx R n = ϕy)f X g 1 y)) detjg 1 y)), R n Lemme 1.1.8 Soit R une variable aléatoire de loi exponentielle de paramètre 1/2 et Θ une variable aléatoire de loi uniforme sur [, 2π], supposées de plus indépendantes. Alors, si on pose X = R cosθ) et Y = R sinθ), les variables aléatoires X et Y sont iid de loi gaussienne centrée réduite. function [x,y]=boxmueller // tirage de deux N,1) independantes r=sqrt-2*logrand))); t=2*%pi*rand); x=r*cost); y=r*sint); Exercice 3: Comment simuler une variable aléatoire gaussienne de moyenne m et de variance σ 2? 6
1.2 Méthodes générales 1.2.1 Méthode générale pour une variable aléatoire discrète Soit X une variable aléatoire telle que XΩ) = {x,x 1,...} et, pour tout i N, p i = PX = x i ). On rappelle que p i et i N p i = 1. function y=simuldiscretex,p) // simule une va de loi discrete, // x=vecteur des valeurs prises, p=vecteur des probabilites u=rand); q=p); i=; while u>q); i=i+1; q=q+pi); end; y=xi); Démonstration: PX = x ) = Prand) p ) = p et pour k 1, PY = x k ) = P k 1 p i < rand) i= i= ) k p i = p i. Exercice 4: Ecrire une fonction en Scilab pour simuler suivant ce procédé la loi géométrique et la loi de Poisson. Remarque: Le nombre N de tests nécessaires satisfait N = 1 ssi u p, et pour i > 1, i 1 i N = i p i < u p i. On a donc intérêt à réordonner les x i ) i dans l ordre des p i ) i décroissants. 1.2.2 Simulation par inversion de la fonction de répartition j= La méthode utilisée pour simuler une loi exponentielle est en fait générale: dès que l on sait inverser une fonction de répartition F, il est très facile de simuler une variable aléatoire de fonction de répartition F. Lemme 1.2.1 Soit U suit la loi uniforme sur [, 1], et F une fonction de répartition bijective de ]a,b[ dans ],1[ d inverse F 1. Alors F 1 U) est une variable aléatoire de fonction de répartition F. Démonstration: On pose X = F 1 U), elle prend ses valeurs dans ]a,b[. Remarquons que nécessairement F est strictement croissante de ]a,b[ dans ],1[. Soit t ]a,b[: j= PX t) = PF 1 U) t) = PU Ft)) = Ft). Donc la fonction de répartition de X est bien F. Exercice 5: En utilisant la méthode de la fonction de répartition, simuler une loi de Cauchy de densité ft) = 1 π 1 1+t 2. 7
1.2.3 Simulation par rejet Exemple: Commençons par un exemple très simple: comment simuler une loi uniforme sur le disque unité {x 2 + y 2 1}? function [x,y]=disque // simule un point uniformement sur le disque unite [x,y]=2*rand1,2)-[1,1]; while x^2+y^2>1), [x,y]=2*rand1,2)-[1,1]; end; L idée est la suivante: on tire des points uniformément dans le carré, et on les jette jusqu à en obtenir un qui tombe dans le disque. La loi du point obtenue est la loi d un point tiré uniformément dans le carré conditionnellement à être dans le disque, ce qui est encore la loi uniforme sur le disque. Exercice 6: Quel est la loi du nombre N de passages dans la boucle? Lemme 1.2.2 Soit X une variable aléatoire de densité f sur R d ) à simuler. On suppose qu il existe k > et une densité g sur R d aussi, facile à simuler) tels que x fx) kgx). Soit U une variable aléatoire de loi uniforme sur [, 1] et Z une variable aléatoire, indépendante de U, de densité g. On pose V = kugz). Alors, la loi de Z conditionnellement à l événement {V < fz)} a pour densité f. Remarque: Notons que nécessairement k 1 car f, g sont des densités). Démonstration: On fait la démonstration pour le cas de R. Notons que pour tout fz) z R, kgz) 1. On a tout d abord PV < fz)) = PkUgZ) < fz)) = = dzgz) fz) kgz) = 1 k. P{Z t} {V < fz)}) = Donc PZ t V < fz)) = = R t t t que {V < fz)} a bien pour densité f. dzgz) R dzgz) 1 du1 {kugz)<fz)} t dzgz) fz) kgz) = 1 k dzfz). 1 du1 {kugz)<fz)} dzfz), donc la loi conditionnelle de Z sachant Dans R d, on utilise la généralisation de la fonction de répartition. On obtient donc l algorithme de simulation par rejet on suppose qu on possède une fonction simulg qui simule une variable aléatoire de densité g): 8
function z=simulf // simule par rejet une va de densite f u=rand); z=simulg; v=k*u*gz); while v>=fz)); u=rand); z=simulg; v=k*u*gz); end; Démonstration: Notons N le nombre de tests fait lors de cette fonction: c est une variable aléatoire, à valeurs dans N. Notons U n ) n 1 la suite des appels à la fonction rand), et Z n ) n 1 la suite des appels à la fonction simulg. Toutes ces variables aléatoires sont indépendantes, les premières de loi uniforme sur [, 1], les secondes de densité g. On note V n = ku n gz n ), et on note X la sortie de la fonction. Soit t R. PX t et N = 1) = PV 1 < fz 1 ) et Z 1 t) 1 k t dzfz) par la démonstration précédente. Soit maintenant i 2. Par indépendance, et comme précédemment: PX t et N = i) = PV 1 fz 1 ), V 2 fz 2 ),..., V i 1 fz i 1 ), V i < fz i ), Z i t) Finalement rappelons que k 1): = PV 1 fz 1 ))PV 2 fz 2 ))... PV i 1 fz i 1 ))PV i < fz i ), Z i t) = 1 1 ) i 1 1 t dzfz). k k PX t) = = + i=1 + i=1 PX t et N = i) 1 1 ) i 1 1 t t dzfz) = dzfz), k k donc la densité de X est bien f. Exercice 7: Simulation de la gaussienne par rejet par rapport à la double exponentielle. On pose fz) = 1 2π exp z 2 /2) et gz) = 1 2 exp z ). 1. Montrer que g est bien une densité sur R. 2. Déterminer une constante k satisfaisant z R, fz) kgz). On aura intérêt à prendre 2e k la plus petite possible: [k = π = 1,3155]. 3. Ecrire un algorithme de simulation d une loi gaussienne centrée réduite par rejet. Exercice 8: Montrer que le nombre de passage dans la boucle suit une loi géométrique dont le paramètre ne dépend que de k. Justifier alors l intérêt de prendre k la plus petite possible. 9
1.2.4 Simulation par composition Exercice 9: Soit F et G deux fonctions de répartition sur R. On construit une variable aléatoire X de la façon suivante: on lance une pièce qui tombe sur pile avec probabilité 1/3 et sur face avec probabilité 2/3, si pile sort, on tire un nombre au hasard suivant la loi donnée par F, sinon, on tire un nombre au hasard suivant la loi donnée par G. Déterminer la fonction de répartition H de X. L exemple précédent est un exemple de mélane de variables aléatoires. On suppose maintenant qu on veut simuler une variable aléatoire X de fonction de répartition F = n i=1 θ if i, où les θ i sont des poids: θ i et n i=1 θ i = 1 et les F i sont des fonctions de répartition dont les lois sont faciles à simuler. On suppose qu on a à notre disposition des fonctions simulfi qui simulent des variables aléatoires de fonction de répartition F i et une fonction simultheta qui simule une variable aléatoire Θ à valeur dans {1,...,n} telle que PΘ = i) = θ i. function x = melange // simulation par melange i=simultheta; x=simulfi; Exercice 1: Simuler un mélange d exponentielles Fz) = α1 exp az)) + 1 α)1 exp bz)). Exercice 11: Simuler une variable aléatoire de loi 1 2 δ + 1 2 e x 1 R+ x)dx. Cette méthode se généralise immédiatement à un nombre infini dénombrable de poids θ i ) i N, et même à un mélange continu de lois: on suppose qu on veut simuler une variable aléatoire X de densité fz) = θ gθ)f θz)dθ, où g est une densité de probabilité, ainsi que tous les f θ. L algorithme est alors simple: on tire θ suivant g, puis x suivant f θ. Exercice 12: Soit a >, et fx) = aléatoire X à simuler. 1. Vérifier que fx) = 1 a a λ exp λx)dx. 2. En déduire un algorithme pour simuler X. 1 ax + 1)exp ax) ax 2 1 x> la densité de la variable 1.3 Simulation de vecteurs aléatoires 1.3.1 Cas indépendant Soit Z une vecteur aléatoire de R d à simuler. Si ses composantes sont indépendantes, on est ramené au cas de la simulation de variables aléatoires réelles indépendantes traité dans les sections précédentes on rappelle que les sorties successives de rand donnent des variables aléatoires indépendantes de loi uniforme sur [, 1]). Le problème est différent quand les coordonnées ne sont pas indépendantes. 1
1.3.2 Vecteur gaussien Un vecteur gaussien dans R d est caractérisé par un vecteur moyenne m R d, et une matrice de covariance K, de taille d d, symétrique et positive. On suppose pour l instant que K est définie positive. Théorème 1.3.1 Décomposition de Cholesky) Si K est une matrice symétrique définie positive de taille d d, il existe au moins une matrice réelle triangulaire inférieure L telle que : K = L t L. On peut également imposer que les éléments diagonaux de la matrice L soient tous strictement positifs, et la factorisation correspondante est alors unique. Démonstration: On procède par récurrence sur la dimension d. C est clair pour d = 1. Soit K une matrice symétrique définie positive de taille d d, avec d 2. On note e 1,e 2,...,e d ) la base canonique de R d. La restriction de la forme bilinéaire symétrique définie par K au sous-espace vectoriel engendré par e 1,...,e d 1 ) est encore définie positive: il existe une matrice K d 1 symétrique définie positive de taille d 1) d 1), un vecteur colonne C de taille d 1) 1 et un réel positif a tels que K = K d 1 t C ) C. a Si on cherche L triangulaire inférieure de taille d d sous la forme ) L d 1 L = b t V alors on doit résoudre L t Ld 1 t L d 1 L d 1 V L = t V L t d 1 t V V + b 2 ) = K L d 1 t L d 1 = K d 1 L d 1 V = C t V V + b 2 = a L hypothèse de récurrence assure l existence et l unicité de L d 1, triangulaire inférieure de taille d 1) d 1) avec coefficients diagonaux strictement positifs, telle que L d 1 t L d 1 = K d 1. En particulier, L d 1 est inversible, ce qui permet de résoudre de façon unique V = L 1 d 1 C. Il reste donc à voir que a t V V >, et b sera alors la racine carrée de a t V V. On va calculer par blocs le déterminant de K, qui est strictement positif. On fait apparaitre des dans les d 1 premiers coefficients de la dernière colonne de K en soustrayant à cette colonne une combinaison linéaire adéquate des d 1 premières colonnes de la matrice K: ) C a Kd 1 t C ) 11 K 1 d 1 C) = a t CK 1 d 1 C )
Cette manipulation ne change pas le déterminant, et on se retrouve avec une matrice tringulaire par blocs: ) K d 1 detk) = det t C a t CK 1 d 1 C Comme detk d 1 ) >, il vient a t CK 1 d 1C >. Mais = detk d 1 )a t CK 1 d 1C) >. t CK 1 d 1 C =t CL d 1 t L d 1 ) 1 C = t L 1 d 1 C)L 1 d 1 C) =t V V, ce qui conclut la preuve. En pratique: on cherche L par coefficient indéterminés et identification, colonne par colonne. Voir l exemple juste après. Remarque: Si K est seulement semi-définie positive, la décomposition de Cholesky existe encore mais elle n est plus unique. Lemme 1.3.2 Soit T un vecteur gaussien de dimension d centré de matrice de covariance I d dont les coordonnées sont des variables aléatoires iid normales centrées réduites). Soit m R d, et K une matrice définie positive de taille d d. Soit L la matrice triangulaire inférieure donnée par la factorisation de Cholesky de K. Alors le vecteur aléatoire Z = m + LT est un vecteur gaussien de moyenne m et de matrice de covariance K. Démonstration: Comme L est une application linéaire de R d dans R d, Z est encore un vecteur gaussien d-dimensionnel. Pour l espérance: EZ) = Em + LT) = m + LET) = m, puisque T est centré. Pour la matrice de covariance, comme celle de T est I d, EZ m) t Z m)) = ELT t T t L) = LET t T) t L = LI t d L = Lt L = K. Exemple: On veut simuler le vecteur gaussien Z de R 3 de moyenne m et de matrice de covariance K avec m = 1 2 4 et K = 1 1 1 5 6 6 1 On commence par chercher la matrice de factorisation de Cholesky L par coefficients indéterminés et identification: l 11 L = l 21 l 22. l 31 l 32 l 33 On calcule LL t et on identifie, colonne par colonne:. 12
1. l11 2 = k 11 = 1 l 11 = 1. 2. l 11 l 21 = k 21 = 1 l 21 = 1. 3. l 11 l 31 = k 31 = l 31 =. 4. l21 2 + l2 22 = k 22 = 5 l 22 = 2. 5. l 21 l 31 + l 22 l 32 = k 32 = 6 l 32 = 3. 6. l31 2 + l2 32 + l2 33 = k 33 = 1 l 33 = 1. Donc Z = 1 2 4 + 1 1 2 3 1 T, ou T est un vecteur gaussien de R 3 dont les trois composantes sont iid centrées réduites. 1.3.3 Cas général 1. Le cas d une v.a. discrète à valeurs dans R d se traite comme celui d une variable aléatoire réelle discrète. 2. La méthode de rejet a été présentée dans la cas d une variable aléatoire à valeurs dans R d. 3. On peut encore utiliser les lois conditionnelles. Nous allons illustrer cette méthode, dite méthode récurrente, par un exemple: Exemple: On veut simuler un vecteur X,Y ) de loi uniforme sur le triangle ABC avec A =,), B = 1,1) et C =,1). On commence par déterminer la densité de cette loi: On peut alors calculer la densité de X: fx,y) = 21 x 1 1 y 1 1 x y. f X x) = 21 x)1 x 1, puis la densité de la loi conditionnelle de Y sachant X: f Y X y x) = 1 1 x 1 x y 1. Pour la simulation, on procède maintenant de la façon suivante: on simule X suivant sa densité en utilisant par exemple la méthode de la fonction de répartition), on obtient une valeur x, puis on simule Y suivant la densité f Y X y x) = 1 1 x 1 x y 1 on reconnait par exemple une loi usuelle). Remarque: Remarquons que la seconde étape ressemble beaucoup à la simulation par mélange. Exercice 13: Simuler un vecteur de loi fx,y,z)dxdydz, où fx,y,z) = 61 x>,y>,z> 1 x+y+z<1 : a) en utilisant les lois conditionnelles. 13
b) par la méthode du rejet. c) Comparer. Exercice 14: Simuler un vecteur de loi fx,y)dxdy, où fx,y) = 1 2 x + y)e x+y) 1 x> 1 y>. 14