Simulation de variables aléatoires S. Robin INA PG, Biométrie Décembre 1997 Table des matières 1 Introduction Variables aléatoires discrètes 3.1 Pile ou face................................... 3. Loi de Bernoulli................................. 3.3 Loi binomiale.................................. 3.4 Loi de probabilité discrète sur un ensemble fini................ 3.5 Loi de Poisson.................................. 4.5.1 Généralisation des lois sur un ensemble fini.............. 4.5. Cumul de durées exponentielles.................... 5 3 Variables aléatoires continues 6 3.1 Méthode de la fonction inverse......................... 6 3. Algorithme du rejet............................... 7 3.3 Loi normale................................... 8 3.3.1 Méthode de Box-Müller........................ 8 3.3. Application du Théorème Central Limite............... 10 3.4 Extension de l algorithme du rejet aux densités à support non compact.. 10 1
1 Introduction On présente ici quelques méthodes de simulation de variables aléatoires de lois classiques. On notera F X la loi (i.e. la fonction de répartition) d une variable aléatoire X et, si elle existe, f X sa densité : F X (x) = Pr {X x}, f X (x) = d dx F X(x). Hypothèse générale : On suppose qu on dispose d un générateur de variable aléatoire de loi uniforme sur [0; 1] indépendantes : c est à dire U U [0;1] F U (u) = 0 si u < 0, = u si 0 u 1, = 1 si u > 1, f U (u) = 1{u [0; 1]}. L indépendance des valeurs est une des conditions essentielles de la validité de la plupart des algorithmes présentés ici. Exemples : Dans SAS : fonction RANUNI, En Pascal : RANDOMIZE (initialisation du générateur), puis fonction RAN- DOM. On ne s étend pas ici sur la conception des ces générateurs. Ils sont souvent fondés sur des calculs de congruence sur des nombres de grande dimension et initialisés à partir de l horloge de la machine. Il faut cependant savoir qu il ne s agit que de générateurs de nombres pseudo-aléatoires, et que notamment, les valeurs obtenues ne sont qu apparemment indépendantes.
Variables aléatoires discrètes.1 Pile ou face On veut simuler une variable aléatoire de loi Pile ou Face i.e. X B( 1 ). Formellement, cette procédure s écrit On tire U Pile si U 1, Face sinon. X = 1{U 1 }.. Loi de Bernoulli On veut simuler X B(p). c est à dire On tire U x = 1 si u p, x = 0 sinon X = 1{U p}..3 Loi binomiale On veut simuler X B(n, p). On sait qu une variable binomiale représente la somme de n variables indépendantes de Bernoulli de paramètre p : {Y 1,...Y n } i.i.d., Y i B(p) X = n Y i B(n, p) i=1 Il suffit donc de simuler n variables aléatoires indépendantes de loi B(p) et d en faire la somme : n X = 1{U i p}..4 Loi de probabilité discrète sur un ensemble fini Soit X une variable aléatoire à valeurs dans {1,...K}, on note i=1 p k = Pr{X = k} (avec K p k = 1) k=1 3
et P k le cumul des p k : P k = j k p j, P 0 = 0. On a donc P 1 = p 1 et P K = 1. L algorithme est donc ce qui s écrit également On tire U si P k 1 u P k X = k=k k=1 k1{p k 1 U < P k } Remarque : Cette méthode revient à découper l intervalle [0; 1] en K morceaux de longueurs respectives p k :.5 Loi de Poisson.5.1 Généralisation des lois sur un ensemble fini On veut simuler X P(λ). Une variable aléatoire poissonnienne ne prend pas ses valeurs dans un ensemble fini, mais on peut étendre la méthode précédente au cas ou X prend ses valeurs dans IN. En fait, la méthode proposée ici annonce la méthode de la fonction inverse. On sait que ce qui implique que λ λk X P(λ) p k = Pr{X = k} = e k! (pour k IN) p k+1 = λ k + 1 p k et, en notant P k le cumul des p k (P k = j=k j=0 p j), que P k+1 = P k + λ p + 1 p k. On simule donc un variable de Poisson de paramètre λ en prenant X = k 0 k1{p k 1 U < P k } avec la convention P 1 = 0. Cet algorithme est assez simple à programmer grâce aux remarques sur les p k et les P k faites ci-dessus. 4
.5. Cumul de durées exponentielles Une autre méthode de simulation de variables aléatoires de Poisson est issue d une des propriétés des processus de Poisson. On sait que si des événements surviennent à des dates séparées par des durées exponentielles de paramètre λ, le nombre d événements survenant en une unité de temps suit une loi de Poisson de même paramètre. On simule des variables aléatoires {Y 1, Y,...} i.i.d., Y i E(λ) (voir le paragraphe sur les variables aléatoires continues) et définit X par X = k 0 k1{z k 1 < Z k+1 } en notant Z k le cumul des durées Y i : Z k = i=k k=1 Y i. Il faut donc simuler des variables aléatoires exponentielles de paramètre λ et compter le nombre de simulations nécessaires pour dépasser 1, ou bien simuler des variables aléatoires exponentielles de paramètre 1 et compter le nombre de simulations nécessaires pour dépasser λ. 5
3 Variables aléatoires continues 3.1 Méthode de la fonction inverse On veut simuler une variable aléatoire continues X de fonction de répartition F. Théorème : Soit X une variable aléatoire de fonction de répartition F strictement croissante, on a F (X) U [0;1]. Démonstration : On pose u = F (x) x = F 1 (u), par définition, on a F (x) = Pr{X x} et donc F ( F 1 (u) ) = Pr { X F 1 (u) } or F (F 1 (u)) = u par définition de la réciproque et Pr {X F 1 (u)} = Pr{F (X) u} car F est strictement croissante. On a donc u = Pr{F (X) u} et on reconnaît la fonction de répartition de la loi uniforme. Méthode : Si on connaît la fonction F 1, réciproque de F, il suffit de tirer X = F 1 (U). Exemple : loi exponentielle X E(λ) F (x) = 1 e λx F 1 (u) = 1 ln(1 u). λ On pourrait donc poser X = ln(1 U)/λ, mais on peut remarquer que si U suit une loi U [0;1], 1 U également. On pose donc : X = ln U λ. Remarque : L hypothèse de la connaissance de F 1 n a de sens que si F est strictement croissante. Cependant, même dans ce cas, il se peut que F 1 n ait pas d expression analytique simple, c est le cas par exemple pour la loi normale. Si on note Φ la fonction de répartition de la loi normale centrée réduite, Φ(x) = 1 π x 6 e t / dt,
il n existe pas de formulation simple de Φ(x) et encore moins de Φ 1 (x) ; la méthode de la fonction inverse ne peut donc pas s appliquer directement à la loi normale. Cependant il existe des polynômes donnant d assez bonnes approximations de (x) et de Φ 1 (x) qui permettent donc d appliquer la méthode la fonction inverse à la loi normale moyennant une excellente approximation. 3. Algorithme du rejet On veut simuler une variable aléatoire X de densité f et de fonction de répartition F. Hypothèses : 1. f est à support compact, i.e que. f est nulle en dehors d un intervalle [a; b]. Exemple : f(x) = 6x(1 x)1{0 x 1}.. Il existe un majorant M de f(x) : x [a; b] : f(x) M. Graphe de la fonction y = f(x) On a surface du rectangle (abcd) = M(b a), surface sous la courbe = 1 (puisque c est une densité), surface de la zone hachurée =F (x 0 ). Méthode : 1. On tire un point A = (X, Y ) uniformément distribué sur le rectangle (abcd) : on tire U 1 X = a + (b a)u 1, on tire U Y = MU. 7
. Si Y f(x), on garde X sinon on tire un autre point. 3. On réitère jusqu à ce que la condition Y f(x) soit remplie. Théorème : répartition F. La variable X ainsi obtenue a bien une densité f et une fonction de Démonstration : or et donc Pr{X x 0 } = Pr{X x 0 on garde A = (X, Y )} = Pr{X x 0 Y f(x)} = Pr{X x 0, Y f(x)} Pr{Y f(x)} surface de la zone hachurée Pr{X x 0, Y f(x)} = surface du rectangle (abcd) = F (x 0) M(b a) surface sous la courbe Pr{Y f(x)} = surface du rectangle (abcd) = 1 M(b a) Pr{X x 0 } = F (x 0) M(b a) = F (x 0 ). M(b a) 1 Remarque : Il est de plus important de noter qu on choisit la constante M la plus petite possible pour minimiser le nombre de rejets : plus la majoration est grossière, plus il faut de tirages pour obtenir une valeur acceptable. 3.3 Loi normale 3.3.1 Méthode de Box-Müller La loi normale n a pas une densité à support compact et on ne connaît pas d expression simple de l inverse de sa fonction de répartition. On ne peut donc, théoriquement, employer aucune des deux méthodes précédentes. On présente ici une méthode qui permet de simuler un couple des variables aléatoires normales, centrées, réduites et indépendantes. On veut simuler X N (0, 1) et Y N (0, 1) indépendantes. On connaît la densité jointe de X et Y : f X,Y (x, y) = 1 π exp On effectue le passage en coordonnées polaires ( x + y ). x = ρ cos θ, x = ρ sin θ 8
et on obtient f X,Y (x, y)dxdy = 1 ( π exp x + y = 1 ( π exp ρ = f R,Θ (ρ, θ)dρdθ. ) ρdρdθ ) dxdy Dans la densité jointe des variable R et Θ, on reconnaît 1 π = densité de Θ qui suit une loi U [0;π], ) ρ exp ( ρ = densité de R. On en déduit la fonction de répartition de R : F R (ρ) = Pr{R ρ} = ρ où on reconnaît une loi exponentielle E( 1 ) pour R. On a donc les lois de R et Θ : 0 ( ) ( ) ρ exp t dt = 1 exp t R E( 1 ), Θ U [0;π]. Méthode : On tire U 1 R = ln U 1, on tire U Θ = πu. et on pose : X = R cos Θ, Y = R sin Θ. Ces deux variables aléatoires sont indépendantes par construction (leur densité jointe est définie comme le produit de leurs densités respectives). Remarque : transformation: Pour simuler Z N (µ, σ ), on simule X N (0, 1) et on effectue la Z = µ + σx. 9
3.3. Application du Théorème Central Limite Une application immédiate du théorème central limite donne une méthode très simple de génération de variables aléatoires normales. On sait que si on a n variable aléatoire i.i.d. d espérance µ et de variance σ, en notant S leur somme, on a : S nµ nσ loi N (0, 1). Dens de nombreux cas, cette convergence est assez rapide et permet d assez bonnes approximations pour n 10). On utilise ici les propriétés des variable aléatoire de loi U [0;1] : (U) = 1, (U) = 1 1 et on simule 1 variables aléatoires indépendantes uniformes sur [0; 1] et on en fait la somme. La variance de cette somme vaut 1 et il faut ensuite la centrer en lui retranchant son espérance, c est à dire 6 : X = 1 i=1 U i 6 La loi de cette variable est très proche de la loi normale N (0, 1). 3.4 Extension de l algorithme du rejet aux densités à support non compact On veut simuler une variable aléatoire X de densité f telle qu il existe une autre densité g pour laquelle on connaît un algorithme de génération et qui, à une constante a près, majore f partout : X F, f : g une densité, a +, x, f(x) a g(x). Il est clair qu on ne peut pas trouver une densité g qui majore f directement (i.e. prendre a = 1) puisque ces deux fonctions ont une intégrale sur égale à 1. Algorithme du rejet généralisé : de f(x), g(x) et a g(x). On appelle respectivement C f, C g et C ag les graphes 1. On tire un point A = (X, Y ) sous C ag distribué selon G en abscisse et uniformément sur [0; ag(x)] en ordonnée : on tire X G (par exemple X = G 1 (U 1 )), on tire Y U [0,ag(X)] (par exemple Y = a g(x) U ).. Si Y f(x), on garde X, sinon on tire un autre point. 3. On réitère jusqu à ce que la condition Y f(x) soit remplie. 10
Démonstration : or On a Pr{X x 0 } = Pr{X x 0, Y f(x)} Pr{Y f(x)} x0 Pr{X x 0, Y f(x)} = g(x) Pr{ag(x)U f(x)}dx x0 { = g(x) Pr U f(x) } x0 dx = g(x) f(x) ag(x) ag(x) dx = F (x 0), a Pr{Y f(x)} = g(x) Pr{ag(x)U f(x)}dx = 1 a et donc Pr{X x 0 } = F (x 0 ). Application à la loi normale : En notant ϕ la densité de la loi normale, on a ( ) exp x x ϕ(x) = exp ( 1 x ). π π En effet exp ) ( ) ( x 1 exp x x x + 1 ( x 1) 0 0 ce qui est toujours vrai. Or exp ( 1 x ) π = e π 1 e e x = π g(x) où g(x) est la densité de la loi double exponentielle qui correspond à une variable exponentielle E(1) affectée d un signe est tiré à Pile ou Face. Il est de plus important de noter qu on choisit la constante a la plus petite possible pour minimiser le nombre de rejet : plus la majoration est grossière, plus il faut de tirages 11
pour obtenir une valeur acceptable. a = 1 a = e π < 1 1