Vous êtes sur la page 1sur 61

Simulation Alatoire et Mthode de Monte Carlo

Charles-Abner DADI
31 dcembre 2012

SOMMAIRE

I Gnrer de l'alatoire
1 Gnrer de l'alatoire : une ncessit en simulation
1.1 Gnrateurs Congruence Linaire GCL . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Du bon choix des paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Dtermination de la priode optimale . . . . . . . . . . . . . . . . . . . . . 1.1.3 Gnralisation des gnrateurs congruents : Gnrateurs rcursifs multiples 1.1.4 Utilisation d'un gnrateur pseudo alatoire . . . . . . . . . . . . . . . . . . Test sur l'ecacit des gnrateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Test d'uniformit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Test d'indpendance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le gnrateur de Mersenne Twister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
4
4 5 5 7 7 8 8 10 12

1.2

1.3

2 Gnrer des variables alatoires


2.1 Mthode de la transformation inverse 2.1.1 Cas de variables continues . . 2.1.2 Cas des variables Gaussiennes Mthode du rejet . . . . . . . . . . . Loi conditionnelle . . . . . . . . . . . 2.3.1 Couple de variables corrles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14
14 14 16 22 27 27

2.2 2.3

II Mthodes de Monte Carlo et rduction de la variance


3 Calcul d'intgrale
3.1 Premiers exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28
29
30

4 Vitesse de convergence et temps de calcul


4.1 4.2 Evaluation de la vitesse de convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . Evaluation de la variation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Construction d'un intervalle de conance . . . . . . . . . . . . . . . . . . . . .

32
32 32 32

5 Mthodes de Rduction de la variance


5.1 5.2 5.3 5.4 chantillonnage prfrentiel . . . . . Mthode de variables de contrle . . Mthode des variables antithtiques . Technique de conditionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35
35 37 39 41

III Simulation de Chanes de Markov et algorithme de Metropolis Hastings


6 Rappels sur les chaines de Markov
6.1 Thorme ergodique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42
43
43

7 Algorithme de Metropolis Hasting


7.0.1 Simulation d'une loi Bta via Metropolis Hasting . . . . . . . . . . . . . . . . .

45
46

8 Contrle de convergence des algorithmes MCMC


8.1 Convergence vers la loi stationnaire. . . . 8.1.1 Approche par les sries temporelles 8.1.2 Test de Gelman Rubin . . . . . . . Autres types de convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48
48 49 50 51

8.2

IV Exercices
8.3 8.4 8.5 8.6 8.7 Exercice 2.10 : Algorithme exercices 2.07 . . . . . . . Exercice 2.10 . . . . . . . Exercice 3.7 . . . . . . . . Conclusion . . . . . . . . . de Jnk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52
53 55 56 58 59

Introduction
La modlisation mathmatique est bien des gards essentielle. Une analyse et une anticipation aussi ne que possible permettent de comprendre, et par consquent d'agir, pour amliorer le fonctionnement des systmes et ainsi mieux les contrler. Ce type de dmarche qui reposent sur des techniques de modlisation et de simulation se retrouvent dans tous les domaines scientiques. En nance par exemple, il est important de dterminer quand lever une option sur un actif ; en assurance il faut dterminer les risques pour valuer le montant optimal de la prime de risque. Le niveau de dtail du modle est donc essentiel pour rendre compte au mieux du niveau de complexit d'un systme, tout en maintenant des cots de calcul raisonnable. Les mthode de Monte Carlo contrairement aux autres mthodes numriques reposent sur l'utilisation des nombres alatoires. Cette mthode est intressante puisqu'elle peut s'appliquer des problmes de grande dimension, comme par exemple pour calculer l'esprance de rendement sur l'ensemble d'un march boursier. Toutefois, il est noter que le champs thorique autour des mthodes de Monte Carlo est tendu. Nous nous concentrerons uniquement sur certains points selon l'enchainement suivant :  Gnrer des nombres alatoires qui seront la base de nos simulations  Rduire la variance empirique an de pouvoir rduire la taille de nos chantillons sans perdre en ecacit.  Simuler des chaines de Markov, et utiliser les proprits de stationnarit Soulignons enn que nous nous eorcerons de rendre ce mmoire aussi concret que possible, en orant un exemple trait de faon informatique aprs chaque point de thorie.

Premire partie

Gnrer de l'alatoire

CHAPITRE 1
GNRER DE L'ALATOIRE : UNE NCESSIT EN SIMULATION

Pour raliser des simulations probabilistes, c'est--dire mettre en uvre un modle contenant une part d'alatoire, on souhaite pouvoir gnrer des suites (xn )n , de nombres dans [0,1] qui reprsentent une suite (Un )n de variables alatoires (, A, P) [0,1] n 0 o Un sont indpendantes et uniformment distribues sur [0,1]. Bien que nous ne pouvons pas atteindre informatiquement toutes les valeurs relles sur [0,1], au moins peut-on considrer un grand nombre de valeurs espaces de faon rgulire 1 2 3 k1 , k , k ... k } o k est un entier assez grand. Ainsi on ne s'intresse plus en considrant l'ensemble : {0, k aux suites dans [0,1] mais dans {0, 1...m 1}. De plus pour rendre compte de l'indpendance, nous avons besoin d'une certaine "`imprdictibilit"' lors du passage d'un terme l'autre, ce qui en thorie demeure relatif puisque la suite choisie est bien une suite dterministe. Ainsi nous pouvons parler d'ecacit pour un gnrateur qui rpond avec succs ces dirents critres d'uniformit, d'indpendance. Le cot de l'incrmentation informatique sera galement un critre retenir. Nous tudierons dans une section de ce chapitre, dirents tests qui nous permettent de juger de l'efcacit d'un gnrateur .

1.1 Gnrateurs Congruence Linaire GCL


Un gnrateur congruent est une des mthodes les plus usites et les plus utile pour gnrer des nombres pseudo-alatoires. Son fonctionnement repose sur la programmation d'une suite rcurrente qui prend la forme d'une fonction linaire. La particularit de cette fonction linaire est qu'elle est base sur des congruences . On dnit la suite rcurrente suivante : n N, xn+1 = axn + c modm , o a est appel le multiplicateur, c l'incrment et m est le module. De plus, comme toute suite dnie par rcurrence il est ncessaire de dnir le premier terme x0 qu'on appelle : la graine. C'est en eet partir de cette graine que la suite de nombres alatoires sera gnre. Toute modication de cette graine modiera la suite de nombres gnrs. C'est pour cette raison que nous disons que la suite est dterministe. Nous devrons s'intresser aux mthodes qui permettent de modier la graine chaque simulation, an d'augmenter le caractre alatoires des sries produites. Notons que du fait de la prsence du modulo (qui est le reste de la division euclidienne axn + c par m), xn+1 est compris entre 0 et m 1. Il en ressort que puisque la suite prend ses valeurs dans un

ensemble de card < , elle est amene se rpter au bout d'un certain temps.

1.1.1 Du bon choix des paramtres


La qualit du gnrateur semble totalement dpendre du choix de a, c et m. En eet, on cherche obtenir un gnrateur qui produise le plus "alatoirement" possible une suite de nombres . De ce fait, nous cherchons donc maximiser la priode - qui se dni comme la plus petite valeur l tel qu'il existe n avec xn+l = xn , an que l'utilisateur ne s'aperoive pas, ou trs peu de l'existence de cette priode .

1.1.2 Dtermination de la priode optimale


Un gnrateur alatoire est souvent rpter plusieurs fois au cours d'un programme ; ainsi la prsence d'une division euclidienne risque d'entrainer des cots de calcul assez importants. Or, les ordinateurs calculent naturellement en base binaire, ainsi en choisissant une priode de la forme : 2e , le processeur eectuera donc ce calcul de faon transparente. C'est pourquoi pour un processeur de 32-bits (ie. un processeur dont la largeur des registres est de 32-bits) la priode maximale est pour e = 31 soit 231 . Toutefois, nous devons souligner que dans la reprsentation binaire, un mot de k bits avec k < e on aura alors les k bits faibles ( ie. ceux qui sont le plus vers la droite) qui sont beaucoup moins alatoires ( priode 2k ) que les bits dits forts, les plus gauche. Considrons deux gnrateurs : G1 et G2 tels que : G1 dnit par a = 25, c = 16, et m = 256 avec X0 = 12 : xn+1 := 25xn + 16[256] G2 dnit par a = 65539, c = 0, et m = 231 avec X0 = 7 : xn+1 := 65539xn + 0[231 ] On programme sur R ces deux suites de la faon suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

#Nombre d ' o b s e r v a t i o n N N=500 par ( mfrow=c ( 3 , 1 ) ) h=runif (N) plot ( h ) u=rep ( 0 ,N) u[1]=12 # f o n c t i o n modulo % % for ( i i n 1 :N) u [ i +1]=(25 u [ i ]+16)% %256 plot ( u , main = " a=25 c=16 m=256" , col . main= " b l u e " ) v=rep ( 0 ,N) #I n i t i a l i s a t i o n par un nombre i m p a i r e v [1]=7 # f o n c t i o n modulo % % for ( i i n 1 :N) v [ i +1]=(65539 v [ i ] )% %2^31 v2=v / 2^31 v2 plot ( v , main="RANDU a=65539 c=0 m=2^31" , col . main= " b l u e " )

On obtient les graphiques suivants :

Ainsi il ressort clairement, que G1 n'est pas un gnrateur alatoire au sens o la suite de nombres est d'une priode bien trop petite, au contraire G2 qui est connu sous le nom de gnrateur de RAN DU semble fournir une suite pseudo-alatoire convenable. Nous serons amener plus loin rediscuter de son ecacit. Le choix d'une priode assez grande semble donc ressortir comme une condition ncessaire pour l'e6

cacit d'un gnrateur .

1.1.3 Gnralisation des gnrateurs congruents : Gnrateurs rcursifs multiples


Il existe une gnralisation des gnrateurs congruents qui permet de donner une apparence encore plus chaotique au comportement des lments successifs de la suite. Cette gnralisation consiste gnrer une suite rcurrente d'ordre k . Cette suite prend donc la forme suivante :

xn = (a1 xn1 + a2 xn2 + ... + ak xnk ) mod m,


Il faut alors fournir non plus une graine mais k graines x0 ....xk1 . Grce cette mthode la priode est de l'ordre de mk . Car la suite utiliser k nombres prcdents au lieu d'un seul.

1.1.4 Utilisation d'un gnrateur pseudo alatoire


Nous pouvons nous interroger comment utiliser un gnrateur sur un logiciel tel que R, C++ ou autre . En eet, aprs avoir crit notre suite rcurrente congruente, nous souhaitons pouvoir utiliser cette fonction an de tirer un seul nombre alatoire dans [0, 1]. Pour cela il sut de crer une fonction qui utilise la suite rcurrente congruente avec la graine qui vaut "time(0)". On obtient donc une ralisation de dimension souhaite, et nous divisons chaque terme par la priode m , selon le modle rdiger en C++ suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

#i n c l u d e <i o s t r e a m > // i o s t r e a m l i b r a r y f i l e needed f o r i n p u t / output #i n c l u d e <c s t d l i b > // c s t d l i b ( s t a n d a r d l i b r a r y ) needed f o r rand ( ) #i n c l u d e <ctime> u s i n g namespace s t d ;

double getRand ( ) {
long x [ 1 0 0 ] ; x [ 0 ] = time ( 0 ) ;

for ( i n t i =1; i <100; i ++){ x [ i ]=(66539 x [ i 1])%(2^31); return x [ i ] / 2 ^ 3 1 ; }


i n t main ( ) { c o u t << time ( 0 ) << e n d l ; c o u t << getRand ( ) <<e n d l ; return 0 ; }

Notons que sur R, la fonction est system.time(0) qui fonctionne de la mme manire. En outre il est ncessaire de s'interroger sur la graine ("seed") qui est appele chaque fois que faisons appel au gnrateur alatoire. En eet, tout gnrateur congruent est sous forme de suite dterministe ; ainsi si nous modions pas la graine chaque implmentation les sries de nombres simules seront identiques.

Il existe deux techniques classiques qui permettent d'viter ce problme :


1/ Implmenter la graine avec l'horloge interne du processeur . Ainsi par exemple, en C++, il s'agit de la fonction time(0) qui permet de poser la graine gale au temps de l'horloge interne, chaque im7

plmentation . 2/ La seconde solution est d'incrmenter la graine avec la dernire valeur calculer. Concrtement, il s'agit de gnrer une suite x0 ...xn partir de la suite congruente puis de stocker la valeur de xn . Ensuite lors de la simulation d'une seconde suite on pose x0 := xn . Ceci nous permet d'tre sr d'obtenir deux suites de n nombres dirents.

1.2 Test sur l'ecacit des gnrateurs


1.2.1 Test d'uniformit
Le test nous permet de rejeter l'hypothse d'uniformit de la suite de nombres pseudo-alatoire obtenue. Le principe est le suivant : On Subdivise l'intervalle [0, 1] en un nombre k d'intervalles de longueur gales. On compte ensuite le nombre de points dans chacun des intervalles. Si le rsultat est trop rgulier alors on conclut que la suite de nombres est ordonne, on rejette alors l'uniformit. Si l'oppos,on obtient une concentration des points dans un nombre restreint d'intervalles alors on peut conclure une absence d'uniformit. A partir des rsultats obtenus on peut construire la statistique du test de 2 , qui permet de tester l'adquation entre une loi empirique et une loi discrte donne. Dans notre cas nous testerons que la loi empirique correspond une loi uniforme discrte sur le nombre de subdivision de l'intervalle [0,1], an de tester l'uniformit de notre gnrateur :
k

(ni N pi )2 1 qui est la probabilit d'une loi uniforme sur l'intervalle {0, .., k }, sous , o pi = 30 N pi i=1 l'hypothse H 0. Si l'hypothse de distribution est vrie, la statistique suit pour N assez grand (env. N > 50)- une loi 2 (k-1) sinon, si sur au moins une subdivision de [0, 1] la distribution n'est pas uniforme alors ZN tend vers + presque srement. Ainsi on calcule ZN et si ZN > 95% 2 (k 1) on rejette l'hypothse nulle (uniformit). Pour un test sur une loi uniforme il nous faut sparer l'intervalle [0, 1] en 30 subdivisions et considrer un chantillon d'au moins 105 points. ZN =
Dans R, nous avons test G1 et G2 (cf Supra), de la faon suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

#Nombre d ' o b s e r v a t i o n N N=10^5 par ( mfrow=c ( 3 , 1 ) ) h=runif (N) plot ( h , main = " u n i f o r m e ( 0 , 1 ) " ) # g e n e r a t e u r c o n g r u e n t l i n e a i r e a=25 c=16 m=256 u=rep ( 0 ,N) u[1]=12 # f o n c t i o n modulo % % for ( i i n 1 :N) u [ i +1]=(25 u [ i ]+16)% %256 y=c ( 1 : 3 0 0 )

u2=u / 256

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

u2

plot ( u2 , main =" a=25 c=16 m=256" , col . main= " b l u e " , )

# g e n e r a t e u r RANDU a=65539 c=

0 m=2^31 ,

v=rep ( 0 ,N) #I n i t i a l i s a t i o n par un nombre i m p a i r e v [1]=7 # f o n c t i o n modulo % % for ( i i n 1 :N) v [ i +1]=(65539 v [ i ] )% %2^31 v2=v / 2^31 v2

plot ( v2 ,

main = "RANDU a=65539 c=0 m=2^31" , col . main= " b l u e " )

# Test u n i f o r m i t e #on s u b i d i v i s e l ' i n t e r v a l l e en 30 p a r t i e de meme l o n g u e u r

#Test s u r u2 ( p e r i o d e 2 5 6 ) w=rep ( 0 , 3 1 ) #on s u b d i v i s e en 30 s o u s i n t e r v a l l e s [ i 1/ 3 0 , i \ 3 0 ] n=rep ( 0 , 3 0 ) # v e c t e u r q u i c o n t i e n d r a l e nombre de p o i n t s dans chaque s o u s i n t e r v a l l e

for ( i i n 1 : 2 9 ) { w [ i +1]= i / 30 w[ 3 1 ] = 1 n [ i ]=0 } # pour chaque p o i n t on c h e r c h e dans q u e l i n t e r v a l l e i l s e s i t u e for ( i i n 1 :N) { for ( j i n 1 : 3 0 ) { i f ( ( u2 [ i ]>w [ j ] ) & ( u2 [ i ]<w [ j + 1 ] ) ) n [ j ]=n [ j ]+1
} } Z_n=0 for ( i i n 1 : 3 0 ) Z_n=Z_n+(n [ i ] N 1 / 30)^2 / (N 1 / 3 0 ) Z_n q=qchisq ( 0 . 9 5 , df =29)

q i f ( Z_n>q )FALSE else TRUE

#t e s t s u r v2 (RANDU) w=rep ( 0 , 3 1 ) #on s u b d i v i s e [ 0 , 1 ] en 30 s o u s i n t e r v a l l e s [ i 1/ 3 0 , i \ 3 0 ] n=rep ( 0 , 3 0 ) # v e c t e u r q u i c o n t i e n d r a l e nombre de p o i n t s dans chaque s o u s i n t e r v a l l e

for ( i i n 1 : 2 9 ) { w [ i +1]= i / 30 w[ 3 1 ] = 1 n [ i ]=0

78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94

} # pour chaque p o i n t on c h e r c h e dans q u e l i n t e r v a l l e i l s e s i t u e for ( i i n 1 :N) {

for ( j i n 1 : 3 0 ) { i f ( ( v2 [ i ]>w [ j ] ) & ( v2 [ i ]<w [ j + 1 ] ) ) n [ j ]=n [ j ]+1


} }

Z_n=0 for ( i i n 1 : 3 0 ) Z_n=Z_n+(n [ i ] N 1 / 30)^2 / (N 1 / 3 0 ) Z_n q=qchisq ( 0 . 9 5 , df =29)

q i f ( Z_n>q )FALSE else TRUE

Les rsultats pour le test du 2 sont clairs : On obtient pour le gnrateur G1 (priode 256) : - le vecteur n=3357 9664 3360 9615 3341 9629 3357 9633 9642 3298 9592 3343 9480 3347 9614 3196 9540 3253 9509 3296 9674 3349 9657 9590 3307 9588 3370 9511 3354 9534 -ZN = 188046.6 Alors que pour G2 (RANDU) : - le vecteur n=3357 3414 3360 3365 3341 3379 3357 3383 3392 3298 3342 3343 3230 3347 3364 3196 3290 3253 3259 3296 3424 3349 3407 3340 3307 3338 3370 3261 3354 3284 -ZN = 26.645 Or, 2 29 = 42.55697, on est donc amener rejeter l'hypothse d'uniformit pour G1 et l'accepter pour G2 pour un seuil de conance de 95%.

1.2.2 Test d'indpendance


L'indpendance des variables est galement un critre qui permet de dnir l'alatoire. En eet, il est vident par exemple que pour un systme de cryptologie qui utiliserait un gnrateur pseudoalatoire, l'absence d'indpendance permettrait de deviner un terme en tudiant les termes prcdents. A l'inverse une suite de valeur croissante , ie 1 seul run) serait tout aussi suspecte . De nombreux tests existent pour tester l'indpendance. Nous retenons ici, le test ACF( auto corrlation function) ainsi que le test du signe de la dirence.

Test ACF
On dnit la fonction :

{1...n} [-1,1] telle que i {1...n}, (i)=cov(xt ,xt+i ).


On pose : H0 : (i)=0 i {1...n} H1 : i {1...n} tel que (i) =0 Sous R, la fonction ACF calcule et reprsente les auto covariances. 10

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

#Test a c f par ( mfrow=c ( 3 , 1 ) ) a c f ( h , l a g . max=200 , main=" u n i f o r m e s u r [ 0 , 1 ] " ) a c f ( u2 , l a g . max=200 , main=" a=25 c=16 m=256" ) a c f ( v2 , l a g . max=200 , main=" a=65536 c=0 m=2^31" ) x=a c f ( v2 , l a g . max=200) y=a c f ( u2 , l a g . max=200) y1= 1.96 /sqrt ( 2 0 0 ) y2 =1.96 /sqrt ( 2 0 0 ) n2=sum ( x $ a c f <y1 | x $ a c f >y2 ) n2 n1=sum ( y $ a c f <y1 | y $ a c f >y2 ) n1

On observe que pour G1 il y a 126 acf en dehors de l'intervalle de conance 95%, alors que pour G2 uniquement acf [1] = cov (xt ,xt+0 )=1 est en dehors de l'intervalle de conance. Ainsi, seul G2 satisfait H0 .

The dierence-sign test


Le principe tant de dnombrer le nombre de paquets de donnes de mme signe de signe. En eet, si le nombre de changements de signe est important on pourra conclure que la valeur d'une donne dpend fortement de la prcdente et donc que les donnes sont non indpendantes. Ainsi on pose : sous
N

l'hypothse H0 d'indpendance, la somme Z = 1 +


i=1

1 1xi+1 xi >0 des changements de signe est suppo-

1 se suivre une loi uniforme sur {1...N }. Ainsi pour N assez grand, Z N(E(Z),V(Z)). O E(Z)= N 2

11

+1 et V(Z)= N12 . Ainsi on peut chercher la P value et rejeter o pas l'hypothse H0 . On ralise ce test sur G1 et G2 :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

#The d i f f e r e n c e s i g n t e s t X=rep ( 0 , 5 0 0 ) X=u2 r=0 for ( i i n 2 : 5 0 0 ) { i f (X[ i 1]<X[ i ] ) r=r+1 } mu=(500 1) / 2 s 2 =(500+1) / 12

t=abs ( r mu) /sqrt ( s 2 ) p=1pnorm ( t ) p


idem pour v2

On obtient pour G1 une P value gale 5.438043.107 < 0.05 le test est donc trs signicatif, on rejette donc H 0 alors que pour G2 la P value obtenue est gale 0.24307 > 0.05, on ne peut donc pas rejeter H0 dans ce cas .

1.3 Le gnrateur de Mersenne Twister


Le Mersenne Twister, est particulirement rput pour sa qualit. Sa priode est de 219937 1 et russit le test spectral pour une dimension gale 623. De plus la graine initiale est un vecteur de dimension 624 compose d'entiers naturels cods en 32 bits

Logiciel R
Dans la suite de notre mmoire sauf mention contraire, nous utiliserons le gnrateur uniforme fondamental fourni par le logiciel R. La fonction runif sur R se base sur le gnrateur Mersenne -Twister, ce qui assure une relative ecacit.
1

runif ( 1 0 0 , min , max)

On peut rapidement vrier les proprits lmentaires de ce gnrateur en examinant comme suit le graph des auto corrlations estimes, ainsi qu'un histogramme des Xi .Ces graphiques indiquent que runif est (relativement) acceptable comme gnrateur uniforme.

12

Figure 1.1  On observe aisment une distribution uniforme.

Figure 1.2  Fonction ACF et Intervalle de conance

13

CHAPITRE 2
GNRER DES V ARIABLES ALATOIRES

2.1 Mthode de la transformation inverse


2.1.1 Cas de variables continues
Nous souhaitons prsent parvenir simuler des ralisations de variables alatoires indpendantes de mme loi. Une mthode simple et souvent susante s'appelle la transformation de la fonction de rpartition . Le principe tant de transformer n'importe quelle variable continue en une variable uniforme et inversement. Par exemple, si X a une loi de densit f et une fonction de rpartition associe F , il est possible dans le cas ou F est inversible de poser U = F (X ), o U est une variable alatoire de loi U (0, 1). En eet, P(U u) = P[F (X ) u] = P[F 1 ((F (X )) F 1 ((F (x))] = P(X x)

Traitons un exemple sur une loi E () avec >0 :


Soit X E (). Sa fonction de rpartition est F (x) = 1 ex 1 1x>0 . On rsout alors l'quation ln 1t t = F (x) et on obtient aprs calcul : x=- . Donc, si U U([0, 1]) alors
U X = ln 1 =- lnU suit une loi E ()

Nous pouvons comparer le rsultat d'une exponentielle obtenue par cette mthode et celle gnre par la fonction de R :rexp()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

#l o i e x p o n e n t i e l l e ( lambda ,N) par i n v e r s i o n f o n c t i o n r e p a r t i t i o n t 1=proc . time ( ) # permet de c a l c u l e r l e temps d ' e x e c u t i o n : t 1 depart , t 2 f i n

f<function ( x ,N) log ( runif (N) ) / x exp1=f ( 1 , 1 0 ^ 7 ) t 2=proc . time ( ) t2 t 1

par ( mfrow=c ( 1 , 2 ) ) hist ( exp1 , p r o b a b i l i t y=TRUE, main="Exp ( lambda ) par i n v e r s i o n F . r " , col=" l i g h t b l u e " ) curve ( dexp ( x ) , add=T, lwd =2, col=" r e d " ) mean1=mean ( exp1 )
mean1 sd ( exp1 )^2

14

19 20 21 22 23 24 25 26 27 28 29 30 31 32

#l o i e x p o n e n t i e l l e ( lambda ) par f o n c t i o n Rexp t 1=proc . time ( ) N=10^7 exp2=rexp (N, 1 ) t 2=proc . time ( ) t2 t 1

hist ( exp2 , p r o b a b i l i t y=TRUE, main="Exp ( lambda ) par f o n c t i o n R" , col=" l i g h t b l u e " ) curve ( dexp ( x ) , add=T, lwd =2, col=" r e d " ) mean2=mean ( exp2 )
mean2 sd ( exp2 )^2

On obtient les densits suivantes qui montrent une grande ressemblance entre la fonction R rexp et l'inversion de la fonction de rpartition comme nous pouvons l'observer dans les tableaux suivants : N Temps Moy. Var

103
Exponentielle par inversion de fonction de rpartition

0.03 0.04 0.04 0.04 0.16


Temps

0.9775 0.9810 0.9982 0.9959 0.9997


Moy.

0.8836 0.9370 1.015 0.9993 0.9995


Var

104 105 106 107


N

103
Exponentielle par rexp(1) (fonction R)

0.03 0.02 0.02 0.01 0.04

0.9963 0.9985 0.9985 0.9999 0.9999

0.9747 1.004 1.003 1.001 1.000

104 105 106 107

Nous avons raliser la mme procdure C++, an de pouvoir comparer le temps de calcul.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

#i n c l u d e <i o s t r e a m > #i n c l u d e <c s t d l i b > #i n c l u d e <math . h> u s i n g namespace s t d ; main ( ) { float u,x; int i ; f l o a t tab [ 1 0 0 0 0 ] , e s p e r a n c e , var ;

for ( i =0; i <=999; i ++){ u=rand ( ) ; u=u / ( double ) RAND _ MAX; x=log (1 u ) ; c o u t <<e n d l ; } return 0 ; }

On remarque que le temps de calcul est sensiblement le mme pour N = 103 , N = 104 et N = 105 , mais pour N = 106 en C++ le temps est de 0.450 contre 0.800s en R, et pour 107 de 1.2 contre 3sec en R. 15

Figure 2.1  Densits d'chantillons exponentiels


Traitons un second exemple sur des variables de Cauchy de densit f (x) = x dt = 1 (arctan(x) + de rpartition F(x)= (1+ 2) t)2 On cherche donc rsoudre
1 (arctan(x)) 1 (1+x)2

et de fonction

+1 2) = y

Ainsi on peut simuler une suite de variables de Cauchy partir de variables uniformes et de sa fonction de rpartition inverse qui est x = tan( (y 1 2 )) Ainsi d'aprs le thorme de la bijection, la mthode de la transformation inverse fonctionne ds que la fonction de rpartition est continue et strictement croissante sur R.

2.1.2 Cas des variables Gaussiennes


Dans la suite de ce mmoire, il sera souvent question de grands chantillons et de Thorme Limite Central. Il apparait donc vident que la loi normale occupera une place prpondrante dans les simulations. Or, la fonction de rpartition d'une loi Normale n'est pas explicite et encore moins bijective.

(x)=

x 1 2 2

(tm)2 2 2

dt

Comment alors gnrer une loi N(m, 2 ) ? Diverses mthodes existent aujourd'hui et sont utilises suivant les besoins de l'utilisateur. Toutes ces mthodes ne sont pas quivalentes d'un point de vue de leur ecacit algorithmique et de leur prcision . 

Les 12 uniformes
Citons un algorithme grossier qui repose sur le TCL :
12 1 1 On considre 12 variables U ([ 2 , 2 ])i.i.d. On pose alors Z = i=1 1 Ui . On a alors E(Z ) = 1 2+2 = 0

16

et V(Z ) = 1. Ainsi d'aprs le TCL Z converge vers une N (0, 1). Insistons sur l'imprcision de cette mthode, qui ne devrait bien entendu jamais tre utilise.
1 2 3 4 5 6 7 8 9 10

N=1000 U <matrix ( nrow=N, ncol =12) for ( i i n 1 : 1 2 ) { U[ , i ]= runif (N, . 5 , . 5 ) } Z=0 c ( 1 :N) for ( j i n 1 :N) { for ( i i n 1 : 1 2 ) { Z=Z+U[ , i ] } hist ( Z )

Il existe des algorithmes bien plus ecaces. Intressons-nous la mthode de Box-Mller :

La mthode de Box-Mller
Soient U 1 , U 2 U ([0, 1]) i.i.d alors on peut dnir X 1 et X 2 par : X 1 = 2 log U 1 cos( 2U 2) et X 2 = 2 log U 2 sin( 2U 1) alors on a X1 et X2 sont i.i.d, en vertu d'un changement de variable

N (0, 1) et

En eet,soient X ,Y deux variables i.i.d N (0, 1) et f : R2 R une fonction borlienne positive ou borne.

E[f (X, Y )] =

1 2 R R

x2 +y 2 2

f (x, y )dxdy

d' o par passage aux coordonns polaires ,


2 1 2 0 0

re(

r2 ) 2

f (r cos , r sin )ddr

Aprs changement de variables :


1 1

f ( 2 log u cos(2v ),
0 0

2 log v sin(2u)dudv

17

D'o,

=E( 2 log U cos(2V ), 2 log V sin(2U )]

A noter que la fonction pr-programme sous R : rnorm(N, mean, sd) repose sur l'algorithme de Box-Muller. Ce qui donne sur R la forme suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

N=1000 m=0 sigma=1 U1=runif (N) U2=runif (N) X3=rnorm (N, mean=m, sd=sigma ) X1= m +sigma sqrt ( 2 log (U1 ) ) cos ( 2 p i U2) X2= m +sigma sqrt ( 2 log (U2 ) ) cos ( 2 p i U1)

par ( mfrow=c ( 1 , 3 ) ) hist (X1 , col=" l i g h t b l u e " , xlim=c ( 10 ,10) , ylim=c ( 0 , 0 . 5 ) , p r o b a b i l i t y=TRUE, main="X1" ) par ( new=TRUE) curve ( ylim=c ( 0 , 0 . 5 ) , xlim=c ( 10 ,10) , dnorm ( x ) , lwd =2, col=" r e d " , main="" ) mean (X1) sd (X1)^2 hist (X2 , col=" l i g h t b l u e " , xlim=c ( 10 ,10) , ylim=c ( 0 , 0 . 5 ) , p r o b a b i l i t y=TRUE, main="X2" ) par ( new=TRUE) curve ( ylim=c ( 0 , 0 . 5 ) , xlim=c ( 10 ,10) , dnorm ( x ) , lwd =2, col=" r e d " , main="" ) mean (X2) sd (X2)^2 hist (X3 , col=" l i g h t b l u e " , xlim=c ( 10 ,10) , ylim=c ( 0 , 0 . 5 ) , p r o b a b i l i t y=TRUE, main=" rnorm " ) par ( new=TRUE) curve ( ylim=c ( 0 , 0 . 5 ) , xlim=c ( 10 ,10) , dnorm ( x ) , lwd =2, col=" r e d " , main="" ) mean (X3) sd (X3)^2

On obtient pour X1 ,X2 des valeurs correctes pour les moyennes et variances empiriques. Toutefois, pour gagner en temps de calcul il peut etre utile de ne garder que X1 ou que X2 car sinon le temps de calcul est ddoubl comme le montre les tableaux suivants : N Temps Moy. Var

103
Loi Normale (

0.1 0.3 0.4 0.8 3.0


Temps

0.0704 0.00329258 0.003076994 0.0004220485 1.406661e 05


Moy.

1.026 1.014077 1.010051 1.000203 1.000023


Var

premire composante de Box-Muller)

104 105 106 107


N

103
Loi Normale parrnorm(N,0,1) (fonction R)

0.1 0.1 0.2 0.3 0.6

0.012 0.00356185 0.0009078085 0.00156899 0.0004878232

1.044108 0.9846939 0.9951027 1.000683 1.000295

104 105 106 107

18

An de souligner l'importance du logiciel de programmation et de la dirence entre un langage compil directement au niveau du processeur ( C++) d'un langage interprt ( matlab, R) nous pouvons comparer le temps de calcul de l'algorithme Box - Muller cod en C++ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

#i n c l u d e <i o s t r e a m > // i o s t r e a m l i b r a r y f i l e needed f o r i n p u t / output #i n c l u d e <c s t d l i b > // c s t d l i b ( s t a n d a r d l i b r a r y ) needed f o r rand ( ) #i n c l u d e <cmath> // cmath needed f o r s q r t ( x ) e t c . #i n c l u d e <ctime> // f o r time ( ) f u n c t i o n

u s i n g namespace s t d ; c o n s t double PI = 3 . 1 4 1 5 ;

double g a u s s ( double m, double sigma )


{

double temp1 , temp2 , gauss1 , g a u s s 2 ; temp1 = rand ( ) / ( double )RAND _ MAX; temp2 = rand ( ) / ( double )RAND _ MAX; i f ( temp1 == 0 ) temp1 = 1 e 9; g a u s s 1 = m + sigma sqrt ( 2 log ( temp1 ) ) cos ( 2 PI temp2 ) ; g a u s s 2 = m + sigma sqrt ( 2 log ( temp1 ) ) sin ( 2 PI temp2 ) ; return g a u s s 1 ;
} i n t main ( ) { s r a n d ( time ( 0 ) ) ; i n t i =0; i n t N=1000; for ( i =0; i < N ; i ++) { gauss (0 ,1) ; cout ; }

19

35 36

Pour un temps de 0.144s contre 0.3s sur R , ce qui souligne le gain en rapidit pour des langage tel que C++. Intressons-nous la gnralisation en dimension n :

-Mthode de Choleski
Soient X={X1 ....Xn } un vecteur gaussien non dgnr d'esprance m=(m1 ...mn ), et de matrice de covariance . Considrons mi = 0 i {1, ..., n}. Sinon, il surait de poser Xi =Yi +mi pour s'y ramener. Supposons que ne soit pas diagonale, car dans ce cas il surait de simuler n variables gaussiennes centres/rduites.On sait de plus que est dnie positive car X est non dgnre. Ainsi on peut appliquer la dcomposition de Choleski qui consiste crire =AA' o A est une matrice triangulaire infrieure et est unique car ai,i >0 i . Ainsi en crivant Y = AZ o Z est un vecteur gaussien centr rduit de dimension n, on a bien : 1. X transformation linaire d'un vecteur gaussien donc X vecteur gaussien 2. E [X ] = AE [Z ] = 0 3. Cov (Xi , Xj ) = i,j Cette mthode nous sera utile an de simuler des mouvements browniens notamment dans le cadre du pricing d'option en nance. Nous n'expliciterons pas davantage la factorisation de Choleski, on se contentera de mentionner l'existence d'une fonction sous R qui calcule la matrice de Choleski :
1

chol \ { . \ }

Ralisons deux exemples pour illustrer cette mthode :


 Nous considrons un vecteur gaussien de matrice de variance/covariance =
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

11 16 7 3 16

7 3 16 25 16

N=10^4 sigma = matrix ( c ( 1 1 / 1 6 , ( 7 sqrt ( 3 ) ) / 1 6 , ( 7 sqrt ( 3 ) ) / 1 6 , 2 5 / 1 6 ) , ncol =2, byrow=T) A=chol ( sigma ) Z1=rnorm (N) Z2=rnorm (N) Z<matrix ( c ( Z1 , Z2 ) , nrow=2,byrow=T) X <matrix ( ncol=N, nrow=2) for ( i i n 1 :N) {X[ , i ]=A%%Z [ , i ] } X1=X [ 1 , ] X2=X [ 2 , ]

plot (X1 , X2 , xlim=c ( 6 ,6) , ylim=c ( 5 ,5) , pch =46 , main=" S i m u l a t i o n de c o u p l e s g a u s s i e n s c o r r e l e s " )

20

Pour N = 104 ,la moyenne empirique de la premire composante est 0.01535475, celle de la seconde composante est 0.01756432, la variance empirique de la premire composante est 0.7494605 alors que sa variance thorique est gale 11 16 =0.6875, celle de la seconde composante est 1.570403 alors que sa variance thorique est gale 25 16 = 1.5625 et la covariance empirique est 0.7949858 alors 7 3 que 16 = 0.7577722.  Notre second exemple traitera d'un vecteur gaussien de dimension 2, avec une matrice de variance orthogonale =
1 2 1 2 1 2 1 2

Il apparait que les points simuls sont trs rapprochs en abscisses

21

2.2 Mthode du rejet


Il nous faut souligner que pour beaucoup de variables alatoires, ni la mthode de transformation inverse ni celle des transformations plus gnrales ne permettent de fournir une simulation de ces distributions. Pour ces cas l, nous devons nous orienter vers d'autres mthodes, souvent moins naturelles. Le principe gnral de ces mthodes est de gnrer une variable alatoire dite "candidate" puis de la soumettre un test .L'acceptation de ce test conduit conserver la valeur simule, son rejet, rpter la simulation.
Construction du test

Soit X une variable alatoire de fonction de densit f . On suppose qu'il existe une densit de probabilit g plus facile simuler (exemple une gaussienne..) telle que
f (x) K > 0 , x R, h(x) := Kg (x) .

La mthode consiste ensuite : -tirer au hasard une ralisation d'une variable Y de densit g -tirer au hasard une ralisation d'une variable U U ([0, 1]), et indpendante de Y -On pose X = Y condition que U h(Y ), sinon on recommence le tirage. Notons que le nombre de tirages que l'on est amen rejeter dpend de la densit g choisie , il sera donc important de choisir g "trs" proche de f . Les deux critres qui conditionnent le choix de g sont : f  Simplicit : Le temps de calcul du quotient Kg doit tre le rapide  Majorer f : On souhaite majorer la densit f une constant K prs. Montrons dans un premier lieu que L(Y |U f (Y ) ) = LX :
Kg (Y )

Soit x Y (), P[Y x|U


f (y ) f (y )

f (Y ) Kg (Y ) ]

P[Y x

f (Y ) g (Y ) ]

f (Y ) P[ Kg (Y ) ]

x Kg (y )
f (y ) Kg (y )

dP(Y,U ) (y, u)

x Kg (y )
f (y Kg (y )

g (y )dydu

dP(Y,U ) (y, u)

g (y )dydu

x f (y ) x f (y ) [ Kg (y ) ]g (y )dy [ K ]dy = =P[X f (y ) 1 R [ Kg (y ) ]g (y )dy

x]

Dterminons prsent la probabilit d'acception :

Nous pouvons de plus dterminer la probabilit d'acceptation, ie la probabilit avec laquelle on ne rejette pas une valeur. En eet,P (U h(Y )) = E[1 1U h(Y ) ] =

1 1(U h(Y )) dPU dPY =


R R

1 1(uh(Y )) 1 1[0,1] (u)dudPY =


R R R

h(Y )dPY = E [h(Y )] =

f (y ) 1 g (y )dy = K Kg (y )

Il en ressort que pour maximiser cette probabilit, il nous faut trouver la constante K maximale ie f (y ) qui vrie K = sup{ , y Y ()} g (y )

1er exemple : la loi Gamma


b a1 ebx 1 Concentrons nous sur la simulation de loi (a, b) de densit f (x) = ( 1x>0 par la a) x mthode de rejet. Nous savons :  Si X1 ....Xn sont indpendantes telles que Xi (i , ) alors X1 + .....Xn (1 + ....n , )
a

22

 Si = 1 alors X

E ( )

 Si N alors la loi (, ) peut se voir comme la somme de variables i.i.d de loi E ).  Si Y

(, 1) alors Z =

(, )

Dans la suite de l'exemple, nous poserons = 1 sans perte de gnralit. 1er Cas : N Il nous sut alors de simuler variables i.i.d de loi E (1). On choisira arbitrairement = 6.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

N=100000 a l p h a=6 t 1=proc . time ( ) M <matrix ( data = NA, nrow =N , ncol =alpha , byrow = FALSE) Z=rep ( 0 ,N) I=rep ( 1 , a l p h a ) I<matrix ( data=I , byrow=FALSE)

for ( i i n 1 : a l p h a ) {M[ , i ]= log ( runif (N) ) for ( j i n 1 :N) {Z [ j ]=sum (M[ j , ] ) }


t 2=proc . time ( ) t2 t 1 }

hist ( Z , p r o b a b i l i t y=TRUE, col=" l i g h t b l u e " , main=" l o i gamma ( 6 , 1 ) " )


x < rgamma (N, 6 , 1 ) l i n e s ( density ( x , bw=1) , col= ' r e d ' , lwd=3)

Aprs simulation, la moyenne empirique est 6.002241 (esprance thorique = =6) et la variance empirique est de 5.973638(variance thorique = 2 = 6).De plus, temps de calcul est de 0.21 23

secondes. Nous pouvons comparer ces rsultats avec la mthode de rejet pour une densit candidate, une loi uniforme sur [0, 1] et une constante K qui est xa1 ex 1 1x>0 K = sup( ), en drivant on obtient K = 1 = 5. 1 1[0,1] (x) On pose donc h(x) =
x1 ex 1 1(x>0) 5(a)1 1]0,1[

2nd Cas : 0<<1 Le reste de l'exemple d'une simulation (, 1) traitera du cas particulier o 0< <1, en explicitant l'algorithme mis au point par Ahrens & Dieter (1974) qui se fonde sur la mthode de rejet : +e) K () = (e , g (x) = K ()[1 1]1,[ ex + x1 1 1]0,1[ ], x > 0. D'o h(x) =

f (x) = K ()g (x)

x1 ex 1 1x>0 ()

K ()1 1]1,[ (e

1 x

)+1 1]0,1[ x

Pour appliquer la mthode de rejet il nous faut simuler une variable Y de densit g, pour cela on dtermine l'inverse de la fonction de rpartition :
x  Si x ]1, [, t ]0, [, G(t) = 1 e +e e dx = +e e d'o G1 (t) = log [(1 t) e ]1 1] + ,1[ (t) e t t e 1 + e [ e

et ]1 1]1,[ (t),

1 dx= e t 1  Si x ]0, 1[, t ]0, 1[, G(t) = 0 e 1]0,1[ (t), +e x +e 1 + e 1 e 1]0, + d'o G (t) = [( e )t] 1 [ (t) car a>0 et e>0. e

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

N=10^4 W =rep (NaN,N) Z=rep (NaN,N) U=runif (N) K <function ( a l p h a ) ( a l p h a+exp ( 1 ) ) /exp ( 1 ) Y=runif (N, max=K( . 5 ) ) for ( i i n 1 :N) { i f (Y[ i ] <1){Z [ i ]=Y[ i ] ^ ( 1 / . 5 ) W =log ( runif (N) ) X=Y[W >Z ] }

else { Z [ i ]= log ( (K(.5) Y[ i ] ) / . 5 ) W =( runif (N) ) ^ ( 1 / ( . 5 1 ) )


X=Y[W <Z ] } }

hist (X)

2nd exemple : la loi Beta(a,b)


Nous traiterons ici du cas des variables X

(a, b), de densit fX (x) =

xa1 (1x)b1 1 1]0,1[ (x). (a,b)

1er Cas : a > 0 et b > 0 Pour un premier exemple, intressons-nous simuler une loi (a, b), o a = 4.5 > 1 et b = 8.5 > 1.Pour cela il nous faut dterminer une densit "candidate" ecace :

24

Supposons que nous choisissons Y

U ([0, 1]), donc g (y )=1 1[0,1] (y )

 Ainsi nous pouvons dterminer K telle que K = sup{f (y ), y R+ }, on obtient numriquement K = 3.015621 grce la fonction prd nie Optimize, soit une probabilit d'acceptation gale 34%.  Une autre faon de calculer la constante K aurait t de maximiser " la main" la fonction a 1b q (x) = x (1x) . On drive la fonction et on cherche l o elle s'annule : on obtient (a 1) + 1 1[0,1] (x) 1 (1 a + b 1)x = 0 x = a ba d'o ici une constante gale 0.875.  Une troisime mthode encore pour dterminer K, sans doute la plus ne serait de poser K = (a+b) (a)(b) , facilement calculable et qui nous permet d'avoir une simplication du quotient h(x) =
f (x) K.g (x)

= xa (1 x)1b .

On fera donc l'arbitrage entre temps de calcul et prcision voulue pour la probabilit d'acceptation.
(a+b) 1 Ainsi avec le choix de K = (a,b ) = (a)(b) . La densit candidate g tant gale 1 car on se restreint une loi U ([0, 1]) et que le support de f est aussi [0, 1].

Ainsi la valeur propose Y est accepte si K U < f (Y ). Autrement dit, si K*U est situe en dessous de la densit f(Y). A noter que simuler K U o U U ([0, 1]) revient simuler U U ([0, K ]). Cette procdure ce traduit par l'algorithme suivant, que nous dclinons pour deux constantes direntes , nous illustrons les deux cas par leurs graphiques respectifs ainsi que par leur moyennes / variances empiriques :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

N=10^4 x = runif ( 1 0 ^ 4 , 0 , 1 ) a =4.5 b=8.5 f<function ( x ) dbeta ( x , a , b ) K1=(a 1) / ( ba ) K2=optimise ( f , i n t e r v a l=c ( 0 , 1 ) , maximum=TRUE) $ o b j e c t i v e v a l e u r_a c c e p t e e = c ( )

for ( i i n 1 : length ( x ) ) { U = runif ( 1 ) i f ( dunif ( x [ i ] ) K2U <= dbeta ( x [ i ] , a , b ) ) { v a l e u r_a c c e p t e e [ i ] = ' Oui '
}

else i f ( dunif ( x [ i ] ) K2U > dbeta ( x [ i ] , a , b ) ) { v a l e u r_a c c e p t e e [ i ] = ' Non '

} }

T = data . frame ( x , v a l e u r_a c c e p t e e= factor ( v a l e u r_a c c e p t e e , l e v e l s = c ( ' Oui ' , ' Non ' ) ) ) par ( mfrow=c ( 1 , 2 ) ) hist (T [ , 1 ] [ T$ v a l e u r_a c c e p t e e==' Oui ' ] , b r e a k s = seq ( 0 , 1 , 0 . 0 1 ) , p r o b a b i l i t y=TRUE, main = ' Loi Beta ( par ( new=TRUE) curve ( f ( x ) , col= ' r e d ' , lwd=3) print ( q p l o t ( x , data = T, geom = ' h i s t o g r a m ' , f i l l = v a l e u r_a c c e p t e e , b i n w i d t h =0.01 , main= ' b e t a ( 4 . 5 ,

25

Nous avons utiliser l'interface ggplot2, particulirement bien adapte la mthode de rejet.

1 La gure montre les rsultats produits pour la constante K 1 = a ba Le temps de calcul est de 0.53sec ce qui est relativement important.

Nous illustrons la mme procdure pour un K 2 = optimise(f, interval = c(0, 1)) qui est la valeur (y ) de max( f g (y ) ) obtenu par la fonction optimise sous R . On obtient le graphique suivant :

Nous observons que nous sommes amen rejeter moins de points et que la simulation est plus ecace. 2nd Cas :0 < a < 1 Dans ce cas on cherche une densit g qui permet de borne le rapport Si x est "proche" de 0 alors ex = o xa1 Si x est "grand" alors xa1 = o ex = o 26
f g

une constante prs :

On pose donc g (x) = xa1 1 1]0,1[ + ex 1 1x>1 De plus une des critiques de l'algorithme de rejet est qu'il gnre des simulations "inutiles" car rejetes lors du test. Nous verrons plus loin, lors de l'tude de la rduction de variance, qu'il existe des mthodes plus ecientes tel que l'chantillonnage prfrentiel .

2.3 Loi conditionnelle


2.3.1 Couple de variables corrles
Nous souhaitons pouvoir simuler un couple de variables (X, Y ) telle que Y dpendent de X . Pour cela, il est ncessaire de simuler loi de X de densit f puis de pouvoir simuler la loi de Y |(X = x), x X (). Pour simuler X de densit fX nous pouvons utiliser les mthodes vues prcdemment (inversion f.R, mthode rejet ..), ensuite nous simulons Y |X = xx X () de densit fY |X =x , nous pouvons enn obtenir la densit f (x, y ) = fX (x) fY |(X =x) (y ). Considrons l'exemple suivant : Soit X U ([0, 1]) et Y E (x). On cherche la loi de (X, Y ) de densit f(X,Y ) (x, y ). On a fX (x) = 1 1[0,1] (x) d'o fY |X =x (y ) = xexy 1 1[0,1] (y ), x [0, 1]
1 2 3 4 5 6 7 8 9 10

#methode de melange N=100 X=runif (N) Y=rexp (N,X) U=XY

hist (U, col=" l i g h t b l u e " , p r o b a b i l i t y=TRUE)

Ainsi nous pouvons gnraliser cette mthode par simple rcurrence : Pour simuler un vecteur alatoire X = (X1 ....Xn ) de densit fX (x1 .....xn ) = f (xn |x1 ..xn1 )f (x1 ..xn1 ) = f (xn |x1 ....xn1 ) f (x1 ....xn1 )......f (x2 |x1 ) f (x1 )

Conclusion
Au terme de cette premire partie nous avons tudier le fonctionnement d'un gnrateur de nombres pseudo alatoires et nous nous sommes intresss aux tests qui valident ou non l'ecacit de ces gnrateurs. Nous avons souligner que l'ecacit correspond aux proprits d'indpendance, d'uniformit .. mais aussi au cot de calcul algorithmique. Puis nous avons explicit les direntes mthodes qui nous permettent de simuler des variables de direntes lois de probabilit. A prsent, nous sommes aptes pouvoir appliquer ces mthodes an de rsoudre des calculs d'intgrales, d'esprances .

27

Deuxime partie

Mthodes de Monte Carlo et rduction de la variance

28

CHAPITRE 3
CALCUL D'INTGRALE

Dans ce chapitre, sauf mention du contraire on se place dans l'ensemble probabilis (R, B (R), P).Nous allons tudier la mthode de Monte Carlo qui vise estimer la valeur d'une intgrale en la rcrivant sous forme d'esprance. Posons le problme suivant : Soit g une fonction borlienne positive ou borne de Rd R et I= Rd g (x)f (x)dx o mathbbRd f (x)dx = 1 et f (x) 0.Nous pouvons alors crire I=E[g(X)] o X a pour densit f par rapport la mesure de Lebesgue que Rd .
Rappel :

Loi forte des grands nombres :


Soit(Xi )iN , une suite de variables de carr intgrable, non corrles et de mme loi alors
n 1 n i=1 n

g (Xi ) ps E[g (X1 )]


1 n i=1

Ainsi si (x1 ....xn ) est une ralisation de (X1 ...Xn ) alors

g (Xi ) est une approximation de I.

Un autre thorme qui a toute son importance dans les mthodes de Monte Carlo est le Thorme Central Limite. Nous en donnerons pas d'nonc, seulement une illustration qui souligne sont ecacit. Nous reprsentons sous forme d'histogramme les valeurs obtenues pour des chantillons de loi U ([0, 1]) de tailles direntes que nous centrons et rduisons. Nous superposons la densit de la loi normale centre rduites . Il apparait concrtement qu'au dessus du seuil de N = 30 la convergence est eective.(Le code sous R de la loi des grands nombres ne comporte pas d'lment intressant, il n'est donc pas explicit)

29

3.1 Premiers exemples


Considrons immdiatement un exemple simple : Estimons par la mthode de Monte Carlo l'intgrale suivante : I=
0

x ex dx, > 0

Cette intgrale doit tre rsolue par intgration par partie mais nous reconnaissons une densit de loi E () par rapport la mesure de Lebesque sur R avec > 0. Ainsi nous pouvons appliquer la mthode de Monte Carlo : -Soit (U1 .....UN ), une suite i.i.d U ([0, 1]) (Ui ) -Nous appliquons ce vecteur la transformation log
N

-On calcule ensuite

1 N i=1

xi (ici g Id). Il nous sut ensuite d'augmenter la taille de l'chantillon N,

pour aner nettement le rsultat.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

#Monte C a r l o pour une i n t e g r a l e expo t 1=proc . time ( )

I<function (N, lambda ) sum( log ( runif (N) ) / lambda ) /N I (10^4 ,1)
t 2=proc . time ( ) t2 t 1 #f o n c t i o n cumsum r e t o u r n e un v e c t e u r dont l e s e l e m e n t s s o n t l e s sommes cumumlatives estint e s t i n t=cumsum(U) / ( 1 :N) plot ( e s t i n t , x l a b=" V a r i a t i o n a u t o u r de l a v r a i v a l e u r " , lwd=2) # on d e t e r m i n e l e s borne d ' e l ' i n t e r v a l l e de c o n f i a n c e w1=sqrt (cumsum( I (10^4) e s t i n t ) ^ 2 ) / ( 1 :N)

l i n e s ( e s t i n t +1.96 w1 , col=" r e d " , lwd=2)

30

21

l i n e s ( e s t i n t 1.96 w1 , col=" b l u e " , lwd=2)

Temps

104 105 106 107

0.03 0.02 0.03 0.21

0.9908089 1.010233 1.00149 0.999878

Il est noter que nous constatons que pour intgrer une fonction par la mthode de Monte Carlo, il faut pouvoir l'crire sous la forme d'un produit de deux autres fonctions, dont l'une est une densit de probabilit. Nanmoins, la fonction de densit n'apparait pas toujours explicitement except dans l'exemple venant d'tre trait. A noter, qu'il est parfois ncessaire d'oprer des transformations pour retomber sur une forme : g (x)f (x)dx, o f0 est une densit de probabilit.

Exemple :

e2( a ) R log(x)

1 xb 2

, o a > 0
2a2 log(x) .On

il faut alors poser g (x) =

a ainsi I = E(X )] o X

N (b, a2 )

Les mthodes de Monte Carlo nous permettent donc aisment de calculer la valeur d'une intgrale avec la prcision souhaite. Toutefois, quel est son avantage vis--vis des mthodes de calculs numriques telles que la mthode de Simpson ou encore la mthode des trapzes qui sont prsentes sous forme de fonction dans les bibliothques de tous les logiciels l'exemple des fonctions Integrate et Area sur R. Pour rpondre cette question, nous pourrions chercher des intgrales qui mettent mal ces fonctions et qui sont facilement calculables par Monte Carlo (cf exemple trait ci-dessus). Nanmoins, il sera plus pertinent de discuter des contraintes imposes au calcul numrique. En eet, ces dernires sont trs dicilement utilisables pour des fonctions multidimensionnelles.

31

CHAPITRE 4
VITESSE DE CONVERGENCE ET TEMPS DE CALCUL

4.1 Evaluation de la vitesse de convergence


Dnition
On se place dans un modle statistique (( ), , P , ), et soit ( n )n une suite d'estimateurs de . Si il existe (an )n une suite de rels positifs telle que an ( n ) converge en loi vers N (0, 1) alors on dit que (n ) converge vers la vitesse an . La vitesse de convergence dpend donc de la taille de l'chantillon ainsi qu' la rgularit ou la stationnarit des lois considres. Pour dbuter nous nous intresserons au Thorme Central Limite qui fournit une convergence pour une vitesse de l'ordre de 1 . Ainsi il en ressort que plus la vitesse de convergence est grande moins notre chantillon a besoin n d'tre grand pour estimer ecacement le paramtre.

4.2 Evaluation de la variation


La mthode de Monte Carlo se fonde sur la loi forte des grands nombres, ainsi nous pouvons dnir l'erreur de cet estimateur, pour un N donn de la faon suivante :
N

N = E [h(X )]

1 n i=1

h(Xi ) .

Cette variation tend vers 0 pour N susamment grand.

4.2.1 Construction d'un intervalle de conance


On considre l'intgrale suivante :
2

I=

cos2 (x) sin4 (x)dx h(x)dPU (x)


R

Le choix de cette fonction est arbitraire, titre purement exprimental . On a I =

o h R Rx cos2 (x) sin4 (x) et U U ([0, 2 ), nous pouvons alors calculer cette intgrale en appliquant la mthode de Monte Carlo. On considre (U1 ......UN ) un chantillon de N variables i.i.d U ([0, 2 ]) et en supposant h continue, sur [0, 2 ] (compact) donc h(U ) intgrable, on a d'aprs la loi Forte des Grands Nombres :
N 1 N i=1

h(Ui ) cv P-ps vers I


32

1 2 3 4 5 6 7 8 9 10 11 12 13

N=10^5 #D e f i n i t i o n de l a f o n c t i o n h<function ( x ) ( cos ( x ) ^ 2 ) ( sin ( x ) ) ^ 4

par =(mfrow=c ( 2 , 1 ) ) curve ( h , x l a b=" F o n c t i o n h" , y l a b=" " , lwd =3, xlim=c ( 1 ,3))
i n t e g r a t e (h , 0 , pi /2) U=runif (N, min=0,max=p i / 2 ) #l o i d e s g r a n d s nombres s=sum ( h (U) ) /N s

On obtient par Integrate 0.09817477 with absolute error < 1.1e 15 et par la mthode de Monte Carlo I = 0.9244728 pour N = 104 On reprsente la forme de la fonction considre. h.

En outre, nous pouvons en outre grce aux formules de linarisation et les formules d'Euler, calculer directement la valeur de l'intgrale :
2

I=
0

cos2 (x) sin4 (x)dx + eix )2 =


1 2ix 64 ((e

o (sin(x))4 (cos(x))2 =

(eix

eix )4 (eix (2i)4 22

e2ix )2 (eix eix )2

= =
d'o I =

1 4ix 64 ((e

2 + e4ix )(e2ix 2 + e2ix ) 2 cos(4x) cos(2x) + 2)

1 32 (cos(6x)

1 1 32 [ 6

1 2 sin(6x) 2 sin(2x) + 2x]0 =

32

= 0.09817477

Intervalle de conance :

En outre, nous cherchons appliquer le Thorme Central Limite


N

N = 1 l'estimation de Monte Carlo. En notant h N


i=1

h(Ui ) on a d'aprs le TCL :

N I) N (h

N (0, 1)

N qui est asymptotiquement normale centr. Ainsi on obtient l'intervalle de conance 95% IC95% =[h N N 1.96 , hN +1.96 ]. Ainsi l'erreur que nous commettons par la mthode de Monte Carlo est de l'ordre N N
33

de 1.96 . Toutefois, nous reste inconnu, il nous faut donc utiliser d'estimateur de l'cart type. N N 1 2 2 [h(Ui ) h D'aprs un rsultat de L3, nous savons que pour estimer 2 on a N ] .Notons N = N 1 i=1 2 que de plus N est un estimateur sans biais et consistant. A prsent nous possdons tous les lments pour pouvoir expliciter et calculer un Intervalle de Conance :

N N N 1.96 IC95% = [h , hN + 1.96 ] N N

Nous reprsentons sur la gure suivante, la variation de l'estimateur par la mthode de Monte Carlo, en fonction du nombre d'itration et nous rajoutons les bornes de l'intervalle de conance.
1 2 3 4 5 6 7 8 9 10 11 12

y=sum ( h ( runif (N) ) #f o n c t i o n cumsum r e t o u r n e un v e c t e u r dont l e s e l e m e n t s s o n t l e s sommes cumumlatives estint e s t i n t=cumsum( y ) / ( 1 :N) plot ( e s t i n t , x l a b=" V a r i a t i o n a u t o u r de l a v r a i v a l e u r " , lwd=2)

# on d e t e r m i n e l e s borne d ' e l ' i n t e r v a l l e de c o n f i a n c e w1=sqrt (cumsum ( ( y e s t i n t ) ^ 2 ) ) / ( 1 :N)

l i n e s ( e s t i n t +1.96 w1 , col=" r e d " , lwd=1) l i n e s ( e s t i n t 1.96 w1 , col=" b l u e " , lwd=1)


2 Notons que pour appliquer le TCL, l'hypothse de consistance N est indispensable. Nous reprsentons prsent les variations de d'estimateur autour de la "vraie" valeur de I .

La premire remarque que nous pouvons faire est que les mthodes de Monte Carlo donnent toujours une vitesse de convergence, facilement estimable partir des seuls tirages dj raliss, sans quasiment aucun calcul supplmentaire. Nanmoins, cet intervalle de conance est spcique un chantillon observ. Si une seconde ralisation est eectue alors les deux intervalles de conances seront dirents. Pour valuer vritablement la variation d'une suite d'estimations de Monte Carlo, nous pouvons excuter plusieurs fois l'exprience de Monte Carlo pour produire plusieurs suites d'estimations indpendantes. Toutefois cette mthode semble trs couteuse en temps de calcul. Nous souhaitons prsent nous concentrer sur la variance de la variable h(X ) qui est centrale pour mesurer l'ecacit de la mthode de Monte Carlo. Nous allons voir qu'il existe plusieurs mthodes de rduction de la variance .

34

CHAPITRE 5
MTHODES DE RDUCTION DE LA VARIANCE

Une valuation fonde sur des simulations suivant une densit f n'est presque jamais optimale. Au sens o nous pouvons utiliser des mthodes alternatives qui rduisent la variance empirique. La mthode de l'chantillonnage prfrentiel est la premire que nous pouvons tudier .

5.1 chantillonnage prfrentiel


La mthode de l'chantillonnage prfrentiel relie une fonction "instrumentale", une fonction "d'intrt" qui est une densit de probabilit. Partons nouveau du problme qui nous anime savoir calculer :

I=
R

h(x)f (x)dx

o f une densit de probabilit et h une fonction borlienne positive ou borne. La mthode d'chantillonnage prfrentiel nous permet d'introduire une fonction de densit g telle que :

I = Ef [h(X )] =
R

h(x)f (x)dx =
R

h(x)

f (x) f (x) g (x)dx = Eg [h(x) ]. g (x) g (x)

Nous pouvons alors comme dans une mthode de Monte Carlo de base, appliquer la loi forte des grands nombres :
N 1 n i=1

f (Xi ) h(Xi ) P psEf [h(X )], g (Xi )

avec (X1 ...XN ) un chantillon de var i.i.d de densit g.


Quel peut-tre l'intrt d'introduire une telle procdure ?

Cette mthode n'aura d'intrt que si elle permet de rduire la variance, c'est--dire si :

V[h(Y )
Posons Z = h(Y )

f (Y ) ] < V[h(X )], o Y suit la loi de densit g et X la loi de densit f . g (Y )

f (Y ) et vrions alors que V[Z ] V[h(X )] < 0 : g (Y ) Or, E[Z 2 ] E[Z ]2 < E[h(X )2 ] E[h(X )]2 E[Z 2 ] E [g (X )]2 < E[h(X )2 ] E[g (X )]2 car E[Z ]2 = E[h(X )]2 E[Z 2 ] < E[h(X )2 ]

35

La question naturelle est alors de slectionner une forme adquate pour la densit instrumentale g qui nous donne la variance la plus faible. Nous souhaitons que g se rapproche le plus du comportement de f , ce qui revient dire que g doit au mieux suivre les variations de f . A cet eet, il faut donc que f (x) g (x) soit born. Ainsi il est souvent judicieux de choisir g comme une fonction polynomiale qui est facile simuler.

Exemple
Calcul de I =
1

x )dx 2 0 Nous appliquons la mthode de l'chantillonnage prfrentiel en choisissant pour densit instrumentale g (x) = C (1 x2 ) o C = 3 2 . Le choix de cette densit peut tre lgitim par le graphique suivant que lequel on observe la "proximit" entre l'approximation polynomiale et la densit thorique cos( x 2 ) sur l'intervalle considr. cos(

Nous appliquons prsent la mthode du rejet pour obtenir un chantillon de la densit g. Pour cela et du fait que g est polynomiale alors nous choisissons la densit d'une loi U ([0, 1]) pour eectuer le (Y ) test U < Mgg . Pour M on trouve M=1.5. Ainsi nous pouvons prsent simuler un chantillon selon 2 (Y ) la densit g et ensuite calculer I l'aide de la loi forte des grands nombres appliqus obtient un rsultat sensiblement similaire la mthode classique de Monte Carlo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

h(Y )f (Y ) g (Y ) .

On

legend ( 0 . 1 , 0 . 1 , c ( " d e n s i t e c a n d i d a t e " ) , col=c ( " b l u e " ) , lwd=2)

#s i m u l a t i o n d ' un e c h a n t i l l o n de l o i g par methode du r e j e t

#c o n s t a n t e d ' a c c e p t a t i o n M =optimize ( g , c ( 0 , 1 ) , maximum = TRUE) $ o b j e c t i v e # test d ' acceptation r=runif (N) u=runif (N) L=rep (N, 0 ) length_L=0

for ( i i n 1 :N) { i f ( ( 1 . 5 u [ i ]) <h ( r [ i ] ) ) L [ i ]= r [ i ] for ( i i n 1 :N) { i f (L [ i ] >0) length_L=length_L+1 } length_L for ( i i n 1 :N) { i f (L [ i ] >0) s=s +(h (L [ i ] ) / g (L [ i ] ) ) }
#C a l c u l par e c h a n t i l l o n a g e s=s /length_L s=0

else L [ i ]=0}

36

24 25 26 27 28 29 30 31 32 33 34 35 36

s #C a l c u l d i r e c t par f o n c t i o n i n t e g r a t e I=i n t e g r a t e ( h , 0 , 1 )

#c a l c u l par MMC d i r e c t e m e n t s u r h S=sum ( h ( u ) ) /N S h_2< f u n c t i c h a n t i l l o n a g e V _2= i n t e g r a t e ( f , 0 , 1 ) ( 2 / p i )^2 V _2

Toutefois l'avantage provient d'une rduction de la variance . En eet, aprs calcul on obtient )f (Y ) 2 2 V(h(X ))=0.5-( ) =0.9471527 et V( h(Y g (Y ) ) = 0.0009908654 d'o une rduction d'environ 10 fois de la variance. Quel utilit majeure pour l'chantillonnage prfrentiel ? Une application majeure est la simulation d'vnement rares . Nous souhaitons par exemple simuler un vnement A B(R) telle que P(A) << 103 . Dans ce cas la mthode de Monte Carlo classique ne fonctionne plus. En eet, supposons P(A) = 109 . On dnit X B (1, P(A)) alors 1 9 Xi est bien trop grossier. En eet, l'espE[X ] = P(A) = 10 . Ainsi un estimateur de la forme N rance du nombre de passage avant l'obtention du premire apparition de A est gale l'esprance d'une 9 pour observer loi gomtrique G (P(A)) soit 101 9 . Il faut donc un chantillon de taille minimale 10 une seule fois l'vnement A. Sinon, l'estimateur ainsi que la variance sont nuls. L'chantillonnage prfrentiel nous permet de changer la mesure de probabilit, ainsi nous pouvons choisir une mesure de probabilit qui augmente l'occurrence de l'vnement A, de rendre A "moins rare".C'est notamment le cas pour le calcul de la VaR en nance, qui est la probabilit de perte maximale potentielle horizon et niveau de conance donns.

5.2 Mthode de variables de contrle


Une mthode de rduction de la variance assez utilise en statistique est celle des variables de contrles. Le principe tant de calculer une esprance E[h(X )] o X est une variable alatoire de de densit f , grce l'information apporte par E[h0 (X )] qui est facilement calculable. En eet, sous la condition d'intgralit de h0 (X ), nous pouvons grce la loi forte des grands nombres trouver un estimateur 0 de E[h0 (X )]. Nous rajoutons la contrainte supplmentaire que cet estimateur d'tre sans biais pour E [h0 (X )]. En outre on note 1 l'estimateur de E[h(X )].
N 1 On a donc 0 = N i=1 1 h0 (Xi ) et 1 = N i=1 N

h(Xi ). Ainsi on considre prsent "l'estimateur pondr"

2 =1 + (0 E[h0 (X )]).

On a E[2 ] = E[1 ] + E[0 E [h0 (X )]] = E[1 ] qui converge bien vers E[h(X )] . Cette mthode sera donc intressante la condition que : V[2 ] < V[1 ] V[1 ] + 2 V[0 ] + 2cov (1 , 0 ) < V[1 ] Il sut donc de minimiser ce polynme dpendant de . On trouve alors

cov (1 ,0 ) V [ 0 ] . 2

(1 ,0 ) (1 ,0 ) Ainsi pour cette valeur optimale de on a V[2 ] = V [1 ] + covV V [h0 (X )] 2 covV [ 0 ] [0 ] cov (1 , 0 )

37

V [2 ] = V (1 ) + V[2 ] = V[1 ]

cov (1 ,0 ) 2 1 ,0 )2 2 cov( V[0 ] V(0 cov (1 ,0 )2 cov (1 ,0 )2 = V(1 )[1 V V [ 0 ] (0 )V (1 ) ]

= V(1 )[1 2 0 1 ]

On a donc toujours V[2 ] < V[1 ], pour cette valeur optimale de . 0 (X ),h(X )) , par une simple rgression Ainsi en pratique nous estimerons le paramtre = cov(h V(h0 (X ) linaire entre le vecteur h(Xi ) et h0 (Xi ).

Exemple : Calcul de I =

1 x 0 e dx

On peut poser h0 = 1 + X car pour une loi X U ([0, 1]), E[1 + X ]= 3 2 ( facilement calculable) et x de plus on retrouve le dveloppement limit l'ordre 1 en O de h(x) = e .
N N N

Ainsi on note 0 =
N

1 N i=1

1 + Xi et 1 =

1 N i=1

Xi

On pose 2 =

1 N i=1

h(Xi ) + [h0 (Xi E [h0 (X )]]

3 eXi + [1 + Xi ] 2 i=1 Ainsi d'aprs la mthode de Monte Carlo directe on obtient la valeur de I = 1.719675 Toutefois un simple calcule de la variance nous permet d'observer une variance d'environ 0.2408044.
d'o 2 =
1 N
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

N=10^4 X=runif (N) h<function ( x ) exp ( x ) h_0<function ( x)1+x # MMC d i r e c t e : s=sum ( h (X) ) /N s #Methode par v a r i a b l e de c o n t r o l e #C a l c u l de b e t a r e g=lm ( h (X) ~h_0 (X) ) summary ( r e g ) beta=r e g $coef [ 2 ]

beta

s_0=sum ( h (X) beta ( h_0 (X) (3 / 2 ) ) ) /N s_0

plot (cumsum( h (X) beta ( h_0 (X) (3 / 2 ) ) ) / ( 1 :N) , col=" r e d " , a x e s=yast , lwd=1) abline ( h =1.716 , col=" g o l d " , lwd=2) par ( new=TRUE) plot (cumsum( h (X) ) / ( 1 :N) , col=" b l u e " , lwd=1) legend ( 1 0 0 0 , 1 . 4 , c ( " v a r i a b l e de c o n t r o l e " ) , col=c ( " r e d " ) , lwd=1) legend ( 1 0 0 0 , 1 . 5 , c ( "MMC d i r e c t e " ) , col=c ( " b l u e " ) , lwd=1)
# c a l c u l de l a v a r i a n c e sd ( h (X) ) ^ 2

sd ( h (X) beta ( h_0 (X) (3 / 2 ) ) ) ^ 2

38

= 1.69 Grce la mthode de la rduction On estime une rgrssion linaire et on obtient de la variance on obtient une variance bien plus faible gale 0.003918348.

5.3 Mthode des variables antithtiques


Jusqu' prsent nous avons utilis des mthodes de Monte Carlo bases sur l'indpendance des variables an de pouvoir utiliser la loi des Grands Nombres. Toutefois, il est possible d'utiliser une certaine dpendance (corrlation) entre les variables an de rduire la variance . Soient X1 , X2 (o X2 = T (X1 )) deux variables de mme loi telles que cov (X1 , X2 ) = 0. On sait alors que pour toute fonction borlienne LX1 = LX2 et donc E[(f (X1 )] = E[f (X2 )]. On pose alors 1 X0 = 2 [f (X1 ) + f (X2 )] E[X0 ] = 1 2 (E[f (X1 )] + E[f (X2 )]) = E[f (X1 )]
1 1 et V[X0 ] = V[ 2 (f (X1 ) + f (X2 ))] = 1 4 [V[(f (X1 ) + f (X2 )]] + 2 cov (f (X1 ), f (X2 ))

39

=1 2 [V[(f (X1 ) + cov (f (X1 ), f (X2 ))]

Ainsi la mthode "classique" de Monte Carlo avec f (X1 ) indpendante de f (X2 ) nous permettrait 1 d'obtenir une variance : V[ 2 (f (X1 ) + f (X2 ))] = 1 2 V [f (X1 )]. Alors que la mthode des variables anti1 thtique nous fournit une variance gale 2 (V[f (X1 )]+ cov (f (X1 ), f (X2 )). Il en ressort que la variance est rduite la condition que cov (f (X1 ), f (X2 )) < 0.

A quelle condition sur f et sur T peut-on armer que les variables f (X1 ) et f (X2 ) sont ngativement corrles ?
D'aprs un thorme (dont la dmonstration sort du cadre de ce mmoire), nous avons des conditions susantes, savoir : Si f : R R est une fonction monotone, et si T : R R est dcroissante, si de plus T (X ) et X on la mme loi alors les variables T (X ) et X sont ngativement corrles.
N

On peut alors appliquer la mthode de Monte Carlo avec l'estimateur :


1 0

1 N i=1

X0,i .

Ainsi si on veut calculer I =


1

ex dx

I=
0

dPU (x) U
1

U ([0, 1]) or U = 1 U

donc I =
0

ex dP1U (x). Ainsi on construit la mthode des variables antithtiques en posant

U 1U ) o x ex est monotone et u 1 u est dcroissante. Ainsi cov (eU + e1U ) < 0 X0 = 1 2 (e + e


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

N=10^4 h<function ( x ) exp( x ) U1=runif (N) #C a l c u l d i r e c t I =0 I=i n t e g r a t e ( h , 0 , 1 )

#Methode monte c a r l o d i r e c t e s=sum ( h (U1 ) ) /N s var1 =( sd ( h (U1) ) ^ 2 var1 e s t i n t =0 e s t i n t=cumsum( h (U) ) / ( 1 :N) plot ( ylim=c ( 0 . 6 1 , 0 . 6 5 ) , e s t i n t , col=" r e d " , lwd=2) #Methode d e s v a r i a b l e s a n t i t h e t i q u e s X0=0.5 ( h (U)+h(1 U) ) s 0=sum (X0) /N s0 var0 =( sd (X0) ) ^ 2 var0

par ( new=TRUE)
e s t i n t 0 =0

40

31 32 33 34 35 36 37

e s t i n t 0=cumsum(X0) / ( 1 :N) plot ( ylim=c ( 0 . 6 1 , 0 . 6 5 ) , e s t i n t 0 , col=" b l u e " , lwd=2) abline ( h=I , col=" g o l d " )

legend ( 5 0 0 0 , 0 . 6 2 , c ( " v a r i a b l e s a n t i t h e t i q u e s " ) , col=c ( " b l u e " ) , lwd=1) legend ( 5 0 0 0 , 0 . 6 1 5 , c ( "MMC d i r e c t e " ) , col=c ( " r e d " ) , lwd=1)

Il en rsulte que la mthode de variables antithtique nous permet de rduire sensiblement la variance V[h(U )] = 0.0329 alors que V[X0 ] = 0.000529, soit une rduction d'environ 100 fois .

5.4 Technique de conditionnement


Nous souhaitons toujours calculer E[f (X )], o nous imposons X d'tre telle que E[X 2 ] < sous contrainte de minimiser sa variance. Pour cela, au lieu d'appliquer la loi forte des grands nombres sur f (X ) nous pouvons l'appliquer E[f (X )|Y ] o Y est une variable alatoire telle que f (X ) ne soit pas (Y )-mesurable. Ainsi on a clairement E[f (X )] = E[E[f (X )|Y ]]. Il nous sut alors de montrer que V[f (X )|Y ] < V[f (X )] . Or, V[E[f (X )|Y ]] = E[E[f (X )|Y )]2 ] E[E[f (X )|Y ]]2 = E[E[f (X )|Y ]2 ] E[f (X )]2 Or,V[f (X )] V[E[(X )|Y ]] = E[f (X )2 ] E[E[f (X )|Y ]2 ] = E[E[f (X )2 |Y ]] E[E[f (X )|Y ]2 ], d'o par croissance d'esprance conditionnelle V[f (X )] V[f (X )|Y ] 0. . A noter, que lors de nos simulations on fera attention ce que le gain obtenu par la rduction de la variance soit suprieur au cot de simulation de la la loi conditionnelle. Appliquons immdiatement cette mthode : Considrons X et Y deux variables indpendantes. Montrons que P[X Y ] = E[FX (Y )] : E[1 1X Y |Y = y ] = E[1 1X y |Y = y ] Par indpendance de X et de Y, on sait que E[1 1X y |Y = y ] = E[f (y, X )] = P[X y ] = FX (y ). Ainsi , presque surement E[1 1X Y |Y ] = FX (Y ) D'o en passant l'esprance E[E[1 1X Y |Y ]] = E[FX (Y )] P[X Y ] E[FX (Y )].

41

Troisime partie

Simulation de Chanes de Markov et algorithme de Metropolis Hastings

42

CHAPITRE 6
RAPPELS SUR LES CHAINES DE MARKOV

Jusqu' prsent nous avons mis en vidence direntes mthodes pour simuler une variable alatoire de loi donne. Toutefois, il existe des lois qui sont plus diciles expliciter, comme par exemple des loi discrte de Card trs grand .Ce qui ralentirait considrablement les mthodes de rejet ou d'inversion de fonction de rpartition. Ainsi pour rester ecace en temps de calcul nous introduisons les mthodes de Monte Carlo par chaine de Markov. Le principe gnral qui sera expos dans la suite est de parvenir simuler une variable de loi en considrant une chaine de Markov de loi stationnaire . Ainsi asymptotiquement, on obtient une simulation de la loi . Ainsi la dicult sera de pouvoir dterminer des matrices de transition de loi stationnaire .
Dnition :Un processus X := (Xn )nN est dit Markovien "discret" si Xn+1 dpend de (X0 ....Xn ) que par Xn . On note dans la suite E l'ensemble des tats de la chaine, et on suppose E N, on note de plus Q sa matrice de transition qui est une matrice stochastique telle que :  P(Xn+1 = x|X0 ....Xn ) = Q(xn , x) 
y E

Q(x, y ) = 1, x E

 P(X0 ....Xn ) = (x0 )Q(x0 , x)....Q(xn1 , xn )  o 0 est la loi initiale. On a alors 0 Qn pour loi de Xn En Outre,  On dit qu'une chaine de Markov X est invariante si 0 = Q0  On dit de mme qu'une chaine est irrductible si x, y E, n N / P(X0 = x|Xn = y ) = Qn (x, y ) > 0, ce qui signie qu'on peut atteindre tous les tats partir de n'importe quel tat avec un probabilit strictement positive.

6.1 Thorme ergodique


Le caractre rcurrent de la chaine est assez fort puisqu'il permet d'armer que la loi stationnaire est aussi la loi limite.D'o le thorme ergodique suivant : Thorme :Supposons que Q est irrductible et qu'il existe une probabilit telle que Q = .Alors  est l'unique probabilit invariante,

43

 tous les tats sont rcurrents  Si X := (Xn )n1 dsigne la chaine de Markov stationnaire au sens strict de loi ,alors, pour toute fonction f telle que

|f (x)|d (x) < : 1 lim n+ n


n

f (Xp ) =
p=1

f (x)d (x) p.s

Ce thorme nous permet donc de gnraliser la loi forte des grands nombres aux Chaines de Markov. Ainsi pour obtenir une simulation suivant une densit cible f il sut donc de gnrer une chaine de Markov de telle sorte que la loi limite soit f. On peut alors appliquer le thorme ergodique pour calculer les intgrales qui dpendent de f . Il nous faut prsent dterminer une dmarche pour gnrer une chaine de Markov de loi stationnaire f . C'est le but de l'algorithme de Metropolis Hasting.

44

CHAPITRE 7
ALGORITHME DE METROPOLIS HASTING

Le principe est le suivant : Soit f une densit cible donne , on choisit une densit instrumentale q(y|x) arbitraire pour laquelle on souhaite qu'elle soit simple simuler et qu'elle ait une dispersion assez importante pour que la chaine explore tout le support de f . Insistons sur le fait que q(y|x) est arbitraire et qu'il est ainsi possible de choisir q (y |x) = q (y ) indpendante de l'tat de X. Ainsi l'algorithme est le suivant :  On initialise la chaine X0 = x0 avec x0 E puis on construit Xn de faon itrative  Supposons Xn = xn , on gnre alors deux variables indpendantes Un , Yn telle que :  Yn suit la loi Q(xn , .)  Un

U ([0, 1]) (y )Q(y, x) ] (x)Q(x, y )

On pose alors (x, y ) = min[1, et on dnit

 Xn+1 = Yn si Un (Xn , Yn )  Xn+1 = Xn , sinon Nous pouvons gnraliser cet algorithme. En eet la loi instrumentale est choisie arbitrairement, ainsi nous n'avons pas de raison de choisir une loi instrumentale dpendant de la chaine xt . Il existe donc une version de Metropolis Hasting indpendant qui se prsente de la faon suivant :  On initialise la chaine X0 = x0   Yn suit la loi q (y ) indpendante de x  Un

U ([0, 1]) (y )q (x)) ] (x)q (y )

On pose alors (x, y ) = min[1, et on dnit :  Xn+1 = Yn si Un (Xn , Yn )  Xn+1 = Xn , sinon

45

7.0.1 Simulation d'une loi Bta via Metropolis Hasting


Bien que l'algorithme permette de simuler des chaines de Markov en temps discret nous pouvons toutefois gnrer un chantillon de Metropolis dont la distribution suit une loi continue. Dans le cas continu il faut donc raisonner sur les densits. Pour cela il nous faut choisir la loi cible de densit f par rapport la mesure de Lebesgue sur R , et la loi instrumentale de densit q.
Nous allons appliquer l'algorithme prcdent pour une densit f d'une loi (4.5, 8.5) que nous avions dja raliser par mthode de rejet. Le support d'une loi bta tant [0,1],il nous sura alors de choisir pour densit instrumentale une loi U ([0, 1]) qui ne dpend par de la valeur de la chaine, ce qui facilitera la ralisation de l'algorithme.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

a =4.5 b=8.5 N=10^5 x=rep ( runif ( 1 ) ,N) # i n i t i a l i s a t i o n de l a c h a i n e

for ( i i n 2 :N) { can < runif ( 1 ) # l o i de p r o p o s i t i o n uniforme , depend pas de l a c h a i n e prob < min ( 1 , (dgamma( can , a , b ) /dgamma( x [ i 1] , a , b ) ) )
u < runif ( 1 ) i f ( u < prob ) x [ i ] < can else x [ i ]=x [ i 1] } # S o r t i e s graphiques par ( mfrow=c ( 1 , 2 ) ) hist ( vec , col=" l i g h t b l u e " , main=" b e t a ( 4 . 5 , 8 . 5 ) " , p r o b a b i l i t y=TRUE, , ylim=c ( 0 , 4 ) ) x=rbeta (N, 4 . 5 , 8 . 5 ) l i n e s ( density ( x ) , col= ' r e d ' , lwd =3, ylim=c ( 0 , 4 ) ) acf (v)

46

Ce graphique est intressant deux gard :Il nous permet de juger du caractre ecace de l'algorithme qui nous fournit une loi bta d'esprance empirique gale 0.4971356 (esprance thorique 0.5294118) et variance empirique gale 0.04222589 (variance thorique gale 0.06228374). De plus le graph ACF (Autocorrlation Function) que nous avions rencontr au dbut de ce mmoire, souligne le caractre trs fortement corrls de l'chantillon obtenu par chaine de Markov, ce qui implique que le nombre d'observation devra tre plus important pour obtenir un niveau de prcision intressant. Enn le temps de calcul est relativement faible : 0.17 sec pour N = 105 comparer au temps de calcul pour la mthode de rejet le temps de calcul est de 0.53 sec pour N = 104 . Nous voyons par cet exemple l'intrt des MCMC, pour amliorer le temps de calcul, malgr que nous gnrons des valeurs qui seront rejetes. Toutefois, on perd le caractre indpendant de l'chantillon simul, ce qui est une dgradation relativement importante . La reprsentation de la suite, si on "zoom" est caractristique des chaines de Metropolis, car sur certains intervalles de temps la suite(xt ) ne change pas car toutes les valeurs de la loi instrumentale (can ) sont rejetes.

47

CHAPITRE 8
CONTRLE DE CONVERGENCE DES ALGORITHMES MCMC

Aprs avoir tudier les avantages des MCMC pour simuler une loi, ainsi que les faiblesses ( corrlation, nombres d'itrations..), nous allons nous concentrer sur la notion de convergence. Plus prcisment sur la convergence vers la stationnarit, ainsi que sur la convergence ergodique i.e pour l'application du thorme ergodique ( par opposition la loi des grands nombres dans le cas i.i.d). En eet, malgr la convergence thorique assure par le thorme ergodique, nous avons pas d'information sur le nombre d'itrations susantes avant d'arrter l'algorithme, ni sur le nombre d'itration ncessaires an d'obtenir une convergence en loi. Le graphique suivant reprsente le processus markovien dans le temps avec la convergence de la moyenne empirique (bleu) vers la moyenne thorique de la loi (4.5, 8, 5) (jaune). A noter que nous rduisons le nombre d'itration 1000 pour rendre l'illustration plus lisible.

8.1 Convergence vers la loi stationnaire.


L'intrt premier d'un algorithme MCMC est de pouvoir simuler une loi de densit f , grce la convergence de la chaine vers la loi stationnaire. Toutefois, l'implmentation de l'algorithme Me48

tropolis Hasting fournit qu'une seule trajectoire pour la chaine. Il est donc dicile de juger de la stationnarit pour une trajectoire unique. Une solution serait de simuler en parallle plusieurs trajectoires. La limite de cette technique est lie la puissance du processeur nous empche de simuler en parallle davantage de trajectoire. Nous pouvons par exemple vrier la stationnarit de notre chaine de Markov cense converger vers une loi (4.5, 8.5), en traant deux trajectoires de taille 103 . On calcul ensuite les variances et moyennes empiriques et on obtient des rsultats sensiblement identiques.

Nous nous concentrerons sur le contrle de la convergence des MCMC. Car l'algorithme de Metropolis est relativement souple ce qui ncessite de bien contrler les rsultats. En eet, la thorie garantie la convergence vers la loi cible sans toutefois assurer qu'un chantillon ni d'une telle chaine soit une bonne approximation de la loi cible. On doit donc tenter de valider par l'exprience cette stationnarit.

8.1.1 Approche par les sries temporelles


Un processus Markovien peut tre considr comme une srie temporelle. Ainsi on peut tenter de montrer exprimentalement que la chaine est stationnaire fortement ,c'est--dire {1, ..., n}, h N , L(x1 , ..., xn )= L(x1+h , ..., xn+h ). Nous pouvons approximativement dterminer le rang partir duquel la stationnarit en loi devient eective. Ainsi on considre deux sous suite de n = 1000 lments parmi un chantillon de 105 d'une chaine de notre chaine de Markov de loi invariante cense tre (4.5, 8.5), et on choisit un "lag (retard)" : h = 1000 puis on compare les histogrammes des deux sous suites (xi )i{1,..,n} et (xi+h )i{1,..,n} .On obtient les graphiques suivants :

49

On remarque une relative dissemblance entre les deuX histogrammes, ainsi serait raisonnable d'extraire notre premire sous suite entre les rangs 20000 et 21000 par exemple. Une seconde ide serait toujours d'apres la thorie des series temporelles, d'extraire le

8.1.2 Test de Gelman Rubin


Il existe de nombreux test autour de la convergence des MCMC, nous avons dcider d'illustrer celui de Gelman Rubin qui repose sur la simulation de plusieurs trajectoires. Le principe repose sur le rapport entre la variance inter-chaines et la variances intra-chaines, appel "Potential scale reduction" et not RN . Si ce rapport est en dessous de 1.2, on peut accepter l'hypothse de stationnarit en loi. On ralise M = 5 trajectoires. On introduit les notions suivantes :  La moyenne de la chaine m, m {1, .., 5} :
N

m =

1 N i=1

xm (i)
M

 La moyenne des moyennes :

1 M j =1

m
5

 La variance inter-chanes :

BN =

N M 1

)2 (m
m=1 M N

 La variance intra-chaines :

WN =

1 M (N 1) m=1 i=1

2 (xj i j )

Dans notre cas, le logiciel R comme tous les logiciels de statistiques contient la fonction gelman.diag (), N 1 qui prend en entre une liste contenant plusieurs trajectoires et renvoie le RN = + N 1 M + 1 BN ( ) N M WT

50

Ainsi dans notre cas RN = 1 < 1.2 d'o acceptation de l'hypothse convergence en loi . Le graphique suivant reprsente l'volution de RN et sa convergence vers 1. Il s'agit de la fonction de Gelman.

8.2 Autres types de convergence


Nous avons tudi la convergence en loi, vers la loi stationnaire. Toutefois, il est peut etre utile de verier d'autres types de convergence :  Indpendances entre les valeurs simules, ce qui dans notre cas se caractrise graphiquement par la gure ACF (Autocorrelation function) (cf. Supra)  Convergence en moyenne empirique, ce qui est galement reprsent sur notre premier trac de la chaine par la convergence des sommes cumules vers la moyenne thorique.De plus la dcroissance "exponentielle" de la fonction ACF est caractristique de la stationnarit en loi.
N 1 N i=1

X(i) E[Y ], o Y

(4.5, 8.5)

51

Quatrime partie

Exercices

52

Cette partie sera rserve la rsolution d'exercices tirs de la brochure :Mthodes de Monte Carlo de Mme Annie MILLET 1 :

8.3 Exercice 2.10 : Algorithme de Jnk


Commenons par dterminer la loi de U1 (k ) a et U2 (k ) b k 1 a, b ]0, 1[ 1 Soit u, v ]0, 1[, P[U1 (k ) a u] = P[U1 (k ) ua ] d'o on obtient fU1 (k) (u) = aua1 1 1]0,1[ ,k 1, a b 1 ]0, 1[ On obtient de faon analogue fU2 (k) (u) = bu 1 1]0,1[ ,k 1, b ]0, 1[ A prsent on cherche dterminer la loi de : X :=
V S
1 1

X=
k=1

Vk 1 1 =k = Sk

k=1

Vk 1 1 =k V k + Wk

Vk Dterminons grce un changement de variable la loi de ( Vk + Wk , Vk + Wk ) : On a qui est une bijection de D dans o D =]0, 1[ ouvert de R2 et =]0, 1[ ouvert de R2 tel x 1 que (x, y ) D, (x, y ) = ( x+ y , x + y ) et (u, v ) (u, v ) = (uv, v (1 u)).

En eet,
x x+y

= u

x+y = v x = u(x + y ) x+y = v uv = x v (1 u) = y uv ]0, 1[ v (1 u) ]0, 1[


1 [ v ]0, u 1 v ]0, 1u [ 1 1u }

Or,(x, y ) ]0, 1[2 d'o

1 En notant u R \ {1}, Au = {v R|0 < v < u } et Bu = {v R|0 < v < 1 1  Si u ]0, 1[, Au Bu = {v R|0 < v < min( u , 1 u )}  si u R+ \ [0, 1], Au Bu =

1. http ://www.proba.jussieu.fr/pageperso/millet/montecarlo.pdf page 30-36

53

Ainsi (u, v ) !(x, y ) D | 1 (u, v ) = (x, y ). Donc est bijective.De plus on montrer facilev u ment que est C 1 De plus, (u, v ) |J1(u, v )| = = |v | = 0 v (1 u) Ainsi on peut conclure que est un C 1 -diomorphisme .On peut alors appliquer le thorme de la biVk , Sk ) gale g( Vk ,S ) (u, v ) = fU,V (uv, v (1 jection et armer qu'il existe une densit pour la loi de ( S k
Sk k

u))1 1 (uv, v (1 u))|J (u, v )|, (u, v ) . Or d'aprs le calcul des lois de U a et V b fait prcdem1 1 ment, et par indpendance de U et V comme fonctions borliennes positives de U a (resp.) V b , on oba tient g( Vk ,S ) (u, v ) = abua1 (1 u)b1 v a+b1 1 1(u,v)]0,1[2 . D'o gU (u) = ]0,1[ g(U,V ) (u, v )dv = aab +b u (1 u)b1 1 1u]0,1[ .
Sk k

Ainsi, nous pouvons prsent dterminer loi de X :=

V S

: Pour toute fonction borlienne positive g ,

E[g (
k=1

Vk )1 1 ]= Sk ( =k)

E[g (
k=1

Vk )1 1 k1 1 1 ] Sk (i=1 Si > 1) (Sk >1)

=
k=1

Vk 1 k1 1 1 ]=ind. E[g ( )1 Sk (i=1 Si > 1) (Sk >1)

E[g (

k=1 k1 i=1

Vk 1 )1 1 P[(k i=1 Si > 1)]. Sk (Sk <1)


1 1 1 1

1 Or,par indpendance P[(k i=1 Si > 1)] =

P[U1 (i) a + U2 (i) b > 1]=id. P[U1 (i) a + U2 (i) b > 1]k1 .
1 1

D'aprs le produit de convolution, E[1 1


1 0 1 1v

U1 (i) a +U2 (i) b >1

]=
R2 1

1 1 bv
0

abua1 v b1 dudv =
0

bv b1 (1 (1 v )a )dv =

U1 (i) a +U2 (i) b >1 1 b1 b1

baua1 v b1 1 1(u,v)]0,1[2 dudv = (1 v )a dv = 1 b (a +

dv b

1, b) = 1 b

Donc
k=0

(a + 1)(b) . (a + b + 1) (a + 1)(b) k seriego (a + b + 1) (1 b ) = = (a + b + 1) b(a + 1)(b) g (x)


R

Vk 1 )1 1(Sk <1) P[(k Ainsi, E[g ( S i=1 Si > 1)] = k

ab a1 (a + b + 1) x (1 x)b 11 1x]0,1[ dx . a+b b(a + 1)(b)

Or, aab +b

(a + b + 1) a(a + b)(a + b) 1 = = (a,b ) b(a + 1)(b) (a + b)a(a)(b) 1 a 1 Ainsi, X a pour densit : (a,b) x (1 x) 1 1b1 x ]0, 1[ qui est la densit d'une (a, b)
Nous pouvons donc simuler une loi bta de paramtre (a, b) = (0.5, 0.5) :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

#Jonk N=10000 a =.5 b=.5 t 1=proc . time ( )

for ( i i n 1 :N) { U1=runif (N) U2=runif (N)


V=U1^(1 / a ) W =U2^(1 / b ) S=V+ W X[ i ]=V [ 1 ] / S [ 1 ] k=1 i f ( S [ k ] <1){X[ i ]=V[ k ] /S [ k ] k=k+1} }

54

23 24 25 26 27 28 29 30 31

t 2=proc . time ( ) t2 t 1 hist (X, col=" l i g h t b l u e " , main=" Algorithme de Jonk " , p r o b a b i l i t y=TRUE, ylim=c ( 0 , 4 ) ) par ( new=TRUE) curve ( dbeta ( x , a , b ) , col=" r e d " , lwd =3 , , xlim=c ( 0 , 1 ) , ylim=c ( 0 , 4 ) )

mean (X)

Pour N = 104 , On obtient une moyenne empirique gale 0.4943008 alors que l'esprance thorique est de 0.5. Le temps de calcul est relativement long de 0.91 sec .

8.4 exercices 2.07


Montrons que Z = |X |S et X ont la mme loi : Soit h une fonction borlienne positive ou borne, on a E [h(Z )] = E [(h(|X |)1 1S =1 ) + (h(|X |)1 1S =1 )] = E [(h(X )1 1S =1 1 1X>0 ) + (h(X )1 1S =1 1 1X<0 ] + E [(h(X )1 1S =1 1 1X<0 ) + (h(X )1 1S =1 1 1X>0 )] Par indpendance de S et de X, = P([S = 1])E [h(X )(1 1X>0 + 1 1X<0 )] + P([S = 1])E [h(X )(1 1X<0 + 1 1X>0 )]
1 =2 [E [h(X ) + E [h(X )] = E [h(X )]

Ainsi puisque que P([|X | t]) = FX (t) FX (t) et par symetrie , |X | a pour densite 2 fX (t). Il nous sut de simuler 2 E () .Pour simuler S il nous sut de simuler une B ( 1 2 ) que nous transformons par 55

la fonction x 2x 1 pour se ramener sur {1, 1}. Nous construisons ainsi Z qui est de mme loi que X .
1 2 3 4 5 6 7 8 9

f<function ( x ,N) log ( runif (N) ) / x exp1=f ( 1 , 1 0 ^ 7 ) b=rbinom ( 1 0 ^ 4 , 1 , . 5 ) S=(2 b) 1 Z=2 exp1 S hist ( Z , col=" l i g h t b l u e " , main=" exo3 . 7 " )

8.5 Exercice 2.10


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

# Exo 2 . 1 0

#1 e r N=rep ( 0 , n ) X=rep ( 0 , n )

for ( i i n 1 : n ) { N[ i ]=PARTIE ENTIERE( runif ( 1 ) 5 ) X[ i ]= p a r t i e_e n t i e r e ( runif ( 1 ) N[ i ] ) } plot (X)

#2nd : n=10^2 x=rep ( 0 , n ) Y=rep ( 1 , n ) for ( i i n 1 : n ) { while ( runif (1) <Y[ i ] ) { x [ i ]=x [ i ]+1 Y[ i ]=Y[ i ] / 2} hist ( x , col=" l i g h t b l u e " , p r o b a b i l i t y=T) } par =(new=TRUE) curve ( dgeom ( x , . 5 ) , col= ' b l u e ' , xlim=c ( 5 ,5) , lwd =3, l t y =3, add=T)

#3eme : p1 =.5 p2 =.5 N=0 for ( i i n 1 : n ) { i f ( runif (1) > p1 ) {N=N+1} N X=rep ( 0 , n )

for ( i i n 1 :N) { i f ( runif (1) > p2 ) {X[ i ]=X[ i ]+1}} hist (X, p r o b a b i l i t y=T, col=" l i g h t b l u e " )
#4eme : p=.5

56

44 45 46 47 48 49 50 51 52 53

P=p F=P X=1

while ( runif (1) >F) {P=P (1 P)


F=F+P X=X+1 }

P F X

Il nous faut reconnaitre la loi pour chacun des cas . Pour cela nous pouvons nous y prendre de direntes manires. 1/ Tracer des histogramme et tenter de reprer une loi usuelle. Vrier en traant la fonction de densit suppose par dessus pour vrier graphiquement. 2/Une seconde mthode consisterait a calculer la loi conditionnelle. 1. Pour le premier exemple on peut dterminer " la main" la loi de X. On sait que N U{0, 1, 2, 3, 4} donc X U {0, 1, 2, 3}, car X = [U N ] o "[ ]" dsigne la partie entire et N = [5 U ] avec U U ([0, 1]) d'o 4 4 1 1 1 1 1 P([X = 0|N = k ])) = ( + + +  P([X = 0]) = P([X = 0|N = k ])P[[N = k ]] = 5 ( 5 4 3 2 0 0 37 1 + 1) = 60 Explicitons le premier calcul : On a P([X = 0|N = 0]) = 1,P([X = 0|N = 1]) = 1,P([X = 1 1 ,P([X = 0|N = 3]) = 1 0|N = 2]) = 2 3 ,P([X = 0|N = 4]) = 4 .
4 4

 P([X = 1]) =

P([X = 0|N = k ])P[[N = k ]]


k=0

1 =5 ( 0

P([X = 0|N = k ])) =

1 1 1 1 ( + + )= 5 4 3 2

13 60
 P([X = 2]) =

P([X = 0|N = k ])P[[N = k ]] = 1 5(


k=0 4 0 4 1 P([X = 0|N = k ])P[[N = k ]] = 5 ( k=0 3 0

7 1 1 1 P([X = 0|N = k ])) = ( + ) = 5 4 3 60 3 1 1 P([X = 0|N = k ])) = ( ) = 5 4 60

 P([X = 3]) = On vrie bien que

P([X = i]) = 1 On a donc obtenu la loi de N.


i=0

2. Pour le cas 3/, on cherche la loi de X : On note que N () = {0...n} et X () = {0...N ( )}, N 1 ({0..n})  P([X = 0|N = 0]) =

k > 0

P([X = 0, N = 0]) P([X = k, N = 0]) = 1 ; P([X = k |N = 0]) = =0 P(N = 0) P(N = 0)

 P([X = 0|N = 1]) =

P([X = 0, N = 1]) (1 p2 ) P([X = 1, N = 1]) = n1 , P([X = 1|N = 1]) = = P(N = 1) P(N = 1) p1 (1 p1 ) (p2 ) P([X = k, N = 1]) et P([X = k |N = 1]) = = 0 k 1 n1 P(N = 1) p1 (1 p1 ) P([X = k, N = j ]) (1 p2 )j k pk 2 = nj si j k 0 Sinon. P(N = j ) p1 (1 p1 )j

 ainsi on obtient P([X = k |N = j ]) =

57

Ainsi d'aprs la formule des probabilit totale on obtient :


n n

P(X = k ) =
j =0

P([X = k |N = j ])P(N = j ) =
j =0

(1 p2 )j k pk 2 ..( il nous manque les

combinaisons pour obtenir la fonction de rpartition pour une B (N ( ), p2 ) 3. 4. Quatrime exemple : Il s'agit d'un cas classique d'algorithme inverse pour simuler une variable X de loi discrte.

Alors

F 1 (u)

P([X = x]) = px o x X () = x0 1 1 up0 + xi 1 1 p0 +p1 ...+pi1 up0 +p1 ...+pi .


xi X ()

Ainsi pour simuler X il sura de tirer u dans [0, 1], puis de poser X = xi si p0 + p1 + ...pi1 < u p0 + p1 + .... + pi . Revenons l'exemple 4/, X () = N ,Soit U [0, 1], Nous avons :  [X = 1] = [U < p] d'o P([X = 1]) = p  ([X = 2] = [p < U p + p(1 p)] d'o P([X = 2]) = P([U p + p(1 p)]) P([U ]) = p(1 p)
k 1 k

 par itration on obtient k N , [X = k ] = [


i=0

<U
i=0

] d'o P([X = k ]) = p(1 p)k

On retrouve donc une loi G

G (p)

8.6 Exercice 3.7


(i) n 0, (x0 , ...xn ) En+1 :
P(Xn = xn , ...X0 = x0 ) = P(Xn = xn |Xn1 ...X0 = x0 )P(Xn1 ...X0 = x0 ) d'aprs la proprit de Markov P(Xn = xn , ...X0 = x0 ) = P(Xn = xn |Xn1 )P(Xn1 ...X0 = x0 )
n

Par itration on obtient, P(Xn = xn , ...X0 = x0 ) = Or i {1...n}, P(Xi = xi |Xi1 = xi1 ) =


n i=1 Q(xi1 , xi )

P(Xi = xi |Xi1 = xi1 )P(X0 = x0 ).


et P(X0 = x0 ) = (x0 ) d'o

P(Xn = xn , ...X0 = x0 ) =
i=1

Q(xi1 , xi )(x0 ) P(Xn = y, Xn1 = xn1 ...X1 = x1 |X0 = x0 )


(x1 ...xn1 )E

(ii) P(Xn = y|X0 = x) =


=
(x1 ...xn1 )E

P(Xn = y, Xn1 = xn1 ...X1 = x1 , X0 = x0 ) (x0 )


n

(x0 )
(d'aprs (i)) on obtient En outre,P(Xn = y ) =
i=1

Q(xi1 , xi ) ( x 0 ) =

Q(xi1 , xi ) = (Qn (x, y )


i=1

xE P(Xn

= y, X0 = x) =
xE

P(Xn = y |X0 = x)(x) =


xE

(Qn (x, y ))(x)

or on somme sur toutes les valeurs possibles pour X0 d'o P(Xn = y ) = (Qn )(y )

: E R qui vrie les hypothses de l'nonc, savoir une fonction harmonique (f = 0 ] = E[E[f (X 0 0 0 0 Q.f ) . E[f (Xn+1 )|Fn n+1 |Fn1 ]|Fn ] = E[Q(f (Xn ))|Fn ] Or Q(f (Xn )) est Fn mesurable 0 ] = Q(f (X )) d'o E[f (Xn+1 |Fn n

(iii) Soit f

58

8.7 Conclusion
Avant de dmarrer ce T.E.R, je n'avais qu'une vague ide du fonctionnement des mthodes de Monte Carlo ainsi que du champs d'application de ces mthodes. Toutefois, je souhaitais travailler sur un sujet qui ferait le lien entre les direntes matires tudies en licence (informatique, probabilit, statistique..) et c'est ce titre que je me suis naturellement orient vers la simulation informatique. .Au terme de ce mmoire je suis particulirement heureux d'avoir choisi ce sujet et d'avoir dcouvert tant de choses. La simulation informatique nous oblige penser les probabilits d'une faon nouvelle et pas toujours aise. J'ai pris plaisir raliser chacun des codes sous R, ainsi que de progresser dans ce domaine trs tendu que constitue les mthodes de Monte Carlo. Je souhaite prsent poursuivre ce travail en l'appliquant des domaines concrets tels que la nance ou encore les tlcoms. Avant de conclure je souhaite remercier Mme Annie Millet qui a dirig ce T.E.R et qui a pris le temps de rpondre toutes mes questions.

59

BIBLIOGRAPHIE

[1] Annie Millet, Mthodes de Monte-Carlo :"http ://www.proba.jussieu.fr/pageperso/millet/montecarlo.p [2] Christian P.Roberts & George Cassela, Introducing Monte Carlo Methods [3] Bernard Lapeyre, Mthodes de Monte Carlo [4] Brooks, S. and Roberts,(1998). Assessing convergence of Markov chain Monte Carlo algorithms. [5] Murrell, P. (2005). R Graphics. Lecture Notes in Statistics. Chapman and Hall, New York. [6] Robert, C. (1995a). Convergence control techniques for MCMC algorithms.Statistical Science, 10(3) :231253. [7] Dalgaard, P. (2002). Introductory Statistics with R. SpringerVerlag, New York. [8] The Monte Carlo Framework, Examples from Finance and Generating Correlated Random Variables - Martin Haugh "http : :/www.stat.columbia.edu/ gelman/research/published/brooksgelman.pdf" [9] "http ://theoreticalecology.wordpress.com/2011/12/09/mcmc-chain-analysis-andconvergence-diagnostics-with-coda-in-r/" Test et optimisation d'un gnrateur pseudoalatoire - Philippe GAMBETTE - ENS

60

Vous aimerez peut-être aussi