MCMC
MCMC
MCMC
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
14
14 14 16 22 27 27
2.2 2.3
28
29
30
32
32 32 32
35
35 37 39 41
42
43
43
45
46
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 .
ensemble de card < , elle est amene se rpter au bout d'un certain temps.
#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 " )
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
#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 ) ;
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.
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.
(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 ,
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)
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
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%.
Test ACF
On dnit la fonction :
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 .
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
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 .
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
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
13
CHAPITRE 2
GNRER DES V ARIABLES ALATOIRES
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
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
103
Exponentielle par rexp(1) (fonction R)
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
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.
(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 )
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
re(
r2 ) 2
f ( 2 log u cos(2v ),
0 0
2 log v sin(2u)dudv
17
D'o,
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 (
103
Loi Normale parrnorm(N,0,1) (fonction R)
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 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 \ { . \ }
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
21
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 )
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]
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 ) ] =
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 )
22
Si = 1 alors X
E ( )
(, 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)
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) =
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 ] }
hist (X)
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
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 '
}
} }
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
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 .
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
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 :
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
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
1 N i=1
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)
30
21
Temps
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
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
N = E [h(X )]
1 n i=1
h(Xi ) .
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
1 2 3 4 5 6 7 8 9 10 11 12 13
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
o (sin(x))4 (cos(x))2 =
(eix
= =
d'o I =
1 4ix 64 ((e
1 32 (cos(6x)
1 1 32 [ 6
32
= 0.09817477
Intervalle de conance :
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 :
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)
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 .
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)
Nous pouvons alors comme dans une mthode de Monte Carlo de base, appliquer la loi forte des grands nombres :
N 1 n i=1
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 ) 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
#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 )
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.
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 ]
= 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
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
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
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.
39
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
1 N i=1
X0,i .
ex dx
I=
0
dPU (x) U
1
U ([0, 1]) or U = 1 U
donc I =
0
#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 .
41
Troisime partie
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.
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 (Xp ) =
p=1
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
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
45
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.
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.
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
m =
1 N i=1
xm (i)
M
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.
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 :
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
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 =
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
V S
E[g (
k=1
Vk )1 1 ]= Sk ( =k)
E[g (
k=1
=
k=1
E[g (
k=1 k1 i=1
P[U1 (i) a + U2 (i) b > 1]=id. P[U1 (i) a + U2 (i) b > 1]k1 .
1 1
]=
R2 1
1 1 bv
0
abua1 v b1 dudv =
0
bv b1 (1 (1 v )a )dv =
dv b
1, b) = 1 b
Donc
k=0
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
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 .
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 " )
# Exo 2 . 1 0
#1 e r N=rep ( 0 , n ) X=rep ( 0 , n )
#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 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]) =
1 =5 ( 0
1 1 1 1 ( + + )= 5 4 3 2
13 60
P([X = 2]) =
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 = 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
57
P(X = k ) =
j =0
P([X = k |N = j ])P(N = j ) =
j =0
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)
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
<U
i=0
G (p)
P(Xn = xn , ...X0 = x0 ) =
i=1
(x0 )
(d'aprs (i)) on obtient En outre,P(Xn = y ) =
i=1
Q(xi1 , xi ) ( x 0 ) =
xE P(Xn
= y, X0 = x) =
xE
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