Академический Документы
Профессиональный Документы
Культура Документы
I.1.2. Objectifs
Une simulation permet de provoquer le droulement d'une exprience de faon rapide et conomique, et permet aussi d'viter les dangers lis la ralisation de certaines expriences l'chelle relle. Elle permet aussi de rpter l'exprience en fais ant varier les paramtres. Enfin elle aide l'laboration de techniques de prvision et d'amlioration.
Simulation statique
Lorsque le temps n'a pas d'influence. Elle utilise des tirages alatoires et souvent uniformes.
Simulation dynamique
Concerne les systmes qui changent dans le temps.
Simulation Dterministe
Elle ne contient pas de variable alatoire. Une variable d'entre donne produit toujours le mme rsultat.
Simulation Stochastique
Lorsque les entres et les sorties sont alatoires.
Dans notre travail, nous allons nous limiter au cas d une simulation statique.
- nous pouvons rpter volont des expriences identiques ou similaires dans les mmes conditions ; - nous pouvons souvent simuler un systme beaucoup plus rapidement que son volution dans la ralit, comme par exemple l volution d un biosystme ou la formation du systme solaire ; - nous pouvons simuler des modles trs complexes, plus ralistes que ceux que nous pourrions rsoudre par des formules analytiques ou par les mthodes d optimisation classiques ; - l animation graphique peut permettre de voir voluer le modle . Inconvnients - le cot de mise en uvre peut tre significatif, en particulier la modlisation et la programmation peuvent demander beaucoup d effort, de temps et d argent; - les temps d excution peuvent devenir excessifs ; - la simulation ne fournit habituellement que des estimations ; - l optimisation est beaucoup plus difficile par simulation que via les outils habituels de programmation mathmatique ; - l analyse statistique des rsultats n est pas toujours simple.
Etant donn un espace probabilis d espace fondamental et de mesure de probabilit , on appelle variable alatoire sur cet espace, toute application de dans telle que I.2.1.1. Type de variables alatoires
telle que :
Concrtement la fonction de rpartition correspond la distribution des probabilits cumules. Le maximum atteint par la fonction de rpartition correspond la valeur de probabilit 1 car
En effet, pour une variable alatoire continue, la probabilit associe l vnement est nulle, car il est impossible d observer exactement cette valeur. On considre alors la probabilit que la variable alatoire prenne des valeurs comprises dans un intervalle tel que . Lorsque cet intervalle tend vers 0, la valeur prise par tend alors vers une fonction que l on appelle fonction densit de probabilit ou densit de probabilit. On appelle densit de probabilit toute application continue par morceaux : telle que :
Fonction de rpartition
Si comme pour les variables alatoires discrtes, on dfinit la fonction de rpartition de par : alors la relation entre la fonction de rpartition est la suivante : et la fonction densit de probabilit
Une loi de probabilit peut tre caractrise par certaines valeurs typiques correspondant aux notions de valeur centrale, de dispersion et de forme de distribution.
L esprance d une variable alatoire correspond la moyenne des valeurs possibles de pondres par les probabilits associes ces valeurs. C est un paramtre de position qui correspond au moment d ordre 1 de la variable alatoire . Cas d une variable alatoire discrte Si est une variable alatoire discrte dfinie sur un univers probabilis , on appelle esprance de , le rel dfini par : . Cas d une variable alatoire continue Si est une variable alatoire continue de densit , on appelle esprance de , le rel dfini par : si cette intgrale est convergente.
I .2.1.2.2. Variance
La variance d une variable alatoire est l esprance mathmatique du carr de l cart l esprance mathmatique. C est un paramtre de dispersion qui correspond au moment centr d ordre 2 de la variable alatoire .
Si
Remarque : Ceci peut tre gnralis un nombre que lconque de variables alatoires (vecteur alatoire).
Le rel
Mathmatiquement, soient un espace probabilis et un vnement de probabilit non nulle (non quasi-impossible). A tout vnement de , nous associons le nombre not ou dfini par : dfinie par
Nous pourrions vrifier que l'application Le thorme de Bayes permet d'crire : Si et sont indpendants alors :
un
vnement. On appelle esprance conditionnelle: est l'esprance de sachant que s'est ralis.
et .
Et pour bien comprendre le mouveme nt des phnomnes alatoires, nous utiliserons l un des logiciels les plus performants et convivial jusqu aujourd hui, le logiciel MATLAB, dans sa version 7.7.0.
II.2. MATLAB
MATLAB est un logiciel commercial de calcul numrique, de visualisation et de programmation trs performant et convivial dvelopp par la socit The MathWorks. Ce n'est cependant pas un logiciel de calcul algbrique ou symbolique. Le nom de MATLAB vient de MATrixLABoratory, les lments de donnes de base manipuls par MATLAB tant des matrices (pouvant bien videmment se rduire des vecteurs et des scalaires) qui ne ncessitent ni dimensionnement ni dclaration de type. Contrairement aux langages de programmation classiques (scalaires et compiler), les oprateurs et fonctions MATLAB permettent de manipuler directement et interactivement ces donnes matricielles, rendant ainsi MATLAB particulirement efficace en calcul numrique, analyse et visualisation de donnes en particuli er. Mais MATLAB est aussi un environnement de dveloppement ("progiciel") part entire : son langage d'assez haut niveau, dot notamment de structures de contrles, fonctions d'entre-sortie et de visualisation 2D et 3D, diteur/debugger, outils de const ruction d'interface utilisateur graphique (GUI)... permet l'utilisateur d'laborer ses propres fonctions ainsi que de vritables programmes ("M-files") appels scripts vu le caractre interprt de ce langage. MATLAB est disponible sur tous les systmes d'exploitation standards (Windows, Unix/Linux, MacOs X...). Le champ d'utilisation de MATLAB peut tre tendu aux systmes non linaires et aux problmes associs de simulation avec le produit complmentaire SIMULINK. Les capacits de MATLAB peuvent en outre tre enrichies par des fonctions spcialises regroupes au sein de dizaines de " toolboxes" (botes outils qui sont des collections de "M-files") couvrant des domaines trs varis tels que :
-
analyse de donnes statistiques mathmatiques symboliques (accs au noyau Maple V) analyse numrique (accs aux routines NAG)
8
traitement d'image, cartographie traitement de signaux (et du son en particulier) logique floue finance etc...
Une interface de programmation applicative ( API) rend finalement possible l'interaction entre MATLAB et les environnements de dveloppement classiques (excution de routines C ou Fortran depuis MATLAB, ou accs aux fonctions MATLAB depuis des programmes C ou Fortran). MATLAB permet en outre de dployer de vritables applications l'aide des outils de conversion optionnels suivants :
y y y y
MATLAB -> code C/C++, avec le MATLAB Compiler MATLAB ->Excel add-ins, avec le MATLAB Excel Builder MATLAB -> objets COM Windows, avec le MATLAB COM Builder etc...
Toutes ces caractristiques font aujourd'hui de MATLAB un standard incontournable en milieu acadmique, dans les diffrents domaines de l'ingnieur et la recherche scientifique.
MATLAB dispose en particulier de certains outils utiles en probabilits et statistiques comme plusieurs gnrateurs de nombres alatoires dont rand, associ la loi uniforme sur l intervalle , et randn associ la loi normale . Les appels successifs rand et randn fournissent des ralisations de suites de variables alatoires indpendantes de loi Uniforme et Normale sur l intervalle , respectivement. Au dbut d'un programme, il faut initialiser le gnrateur, en lui fournissant une premire valeur appele graine du gnrateur . Sinon, chaque fois que l'on d marre MATLAB, c'est la mme suite de valeurs qui sera donn e. Avec la commande rand (' state',sum (100 *clock)), le gnrateur rand est initialis avec une graine dont la valeur dpend de l'heure. Lorsque l'on utilise randn, il faut de mme initialiser son gnrateur.
Remarque : MATLAB Statistics Toolboxes possde des fonctions qui gnrent des variables alatoires de plusieurs lois. En gnral, ces fonctions ont la syntaxe suivante : pdfrnd(arg1,arg2,nrow,ncol) O pdf fait rfrence au type de la distribution, les premiers arguments reprsente les paramtres de la distribution (ainsi le nombre d argument peut changer), et les deux derniers arguments reprsentent le nombre de lignes et de colonnes dans le tableau des variables alatoires que va retourner la fonction. Voici la liste de quelques fonctions qui gnrent des variables alatoires :
Distribution Beta Binomiale Chi-Deux Exponentielle Gamma Normale Poisson betarnd binornd chi2rnd exprnd gamrnd normrnd poissrnd
Fonction MATLAB
10
Dans le cas o la fonction est continue et strictement croissante, son inverse gnralis correspond alors son inverse au sens usuel. Les tapes de la mthode d inversion sont :
III.1.1. Cas o
1) Dduire l expression de la fonction de rpartition inverse 2) Gnrer un nombre alatoire uniforme ; 3) Obtenir le dsir partir de .
III.1.2. Cas o
Supposons que l on dsire gnrer une variable alatoire dont la fonction de probabilit ; et =1 . est donne par Nous obtenons le variable alatoire en gnrant un nombre alatoire uniforme , pour ensuite chercher la variable alatoire en fonction de si :
11
Les tapes de la mthode d inversion sont : pour , avec =1, . , 1) Dfinir une fonction de probabilit ( peut augmenter indfiniment) ; 2) Gnrer un nombre alatoire uniforme 3) Si , prendre ; 4) Sinon si , prendre ; 5) Sinon si , prendre ; 6) sinon si .
Beaucoup de lois sont difficiles simuler directement avec la mthode prcdente, car elles ne prsentent pas de fonctions de rpartition explicitement formules. C est le cas par exemple de la loi Normale. Il y a certaines applications o la loi simuler est connue une constante multiplicative prs. Une solution est de simuler l aide d une fonction de proposition plus simple et d utiliser un algorithme d acceptation-rejet. L algorithme d acceptation-rejet est le suivant :
(acceptation);
Dans ce cas, l'objectif est de gnrer des nombres alatoires partir d'une fonction de , en supposant que l on ait une mthode pour gnrer des probabilit . nombres alatoires partir d'une fonction de probabilit Les tapes sont les suivantes : 1) Choisir une fonction de probabilit 2) Chercher une constante telle que ; ;
pour tout ; ;
12
Dans le cas contraire, on rejette et on retourne l tape 3. La mthode d acceptation-rejet a une probabilit d acceptation, que l on appelle galement taux d acceptation. Ce taux est dfini par :
5) Si
alors on prend
(acceptation);
En utilisant le taux d acceptation, l tape 5 pour les cas continu et discret sont alors remplacs par : 5) Si , on prend ; Dans le cas contraire, on rejette et on retourne l tape 3.
Remarque : Le choix de la loi de proposition est dterminant pour les performances de la mthode. La loi de proposition est ncessairement non nulle sur S afin que soit fini et donc que le taux d acceptation moyen soit non nul. Tout d abord, elle doit tre facilement chantillonnable, sinon l algorithme d acceptationrejet perd son intrt. En particulier, elle doit tre simulable avec un taux d acceptation de 1. Prcisons galement que le choix de la loi de proposition doit prendre en compte la complexit de l algorithme : certaines lois intressantes a priori s avreront inadquates car la dtermination de ou le calcul de ses paramtres peut tre difficile, gourmand en temps de calcul, voire impossible ! Pour le choix de , n importe quelle constante vrifiant l quation convient ; cependant, il est ncessaire que soit la plus petite possible pour avoir un taux d acceptation moyen lev. La valeur optimale de est donc :
13
Dans cette partie, nous prsentons les lois de probabilit les plus utiles et les plus utilises dans les diverses applications de la statistique. Nous prsentons les commandes de MATLAB permettant d effectuer des calculs pratiques avec ces lois. Nous distinguons les lois des variables discrtes et celles des variables continues.
On notera
Il est vident que pour on retrouve l esprance d une variable alatoire uniformment distribue sur l intervalle .
et sa variance est :
En simulation, la loi uniforme est utilise comme base pour gnrer des nombres alatoires issus de n importe quelle loi de probabilit. Simuler la loi uniforme consistera produire par un algorithme des suites finies de nombres que nous pouvons considrer c omme tant des ralisations indpendantes de variables alatoires uniformes sur [0,1]. MATLAB permet de simuler la loi uniforme via la fonction rand, qui renvoie un nombre alatoire compris entre [0,1]. La mthode d inversion peut tre utilise pour gnre r des variables alatoires d une distribution uniforme. La fonction de rpartition pour une variable alatoir e qui suit une loi uniforme de paramtres tant avec et .
posons : Alors
;
14
Ainsi
Le code MATLAB suivant simule des variables alatoires d une distr ibution uniforme de
paramtres ; trace l histogramme des rsultats obtenus ainsi que la courbe qui reprsente la fonction de densit de la loi uniforme :
rand('state',sum(100*clock)) % paramtres n=input('veuillez saisir la dimension n : ') a=input('veuillez saisir la valeur de a : ') b=input('veuillez saisir la valeur de b : ') % gnration des variables alatoires U = rand(1,n) ; X=[U*(b-a)]+a; %affichage des valeurs de X X % valeurs pour tracer la fonction densit x=a :0.1 :b ; % fonction MATLAB qui trace la fonction densit y=n*0 .55*unifpdf(x,a,b) ; % histogramme hist(X,10) ; % traage hold on plot(x,y,'r') hold off xlabel('X') ylabel('f(x)-Uniforme')
15
y Loi Exponentielle
On dit qu une variable alatoire densit est donne par : On a : . suit une distribution exponentielle de paramtre ; et . si sa
La mthode d inversion peut tre utilise pour gnrer des variables alatoires d une distribution exponentielle. La fonction de rpartition pour une variable alatoire qui suit une loi exponentielle de . paramtre est Posons : Alors Donc . .
16
avec
et
.
Puisque est uniformment distribu sur [0,1], alors est aussi uniformment distribu sur [0,1]. Nous pouvons alors gnrer des variables alatoires d une distribution exponentielle de paramtre en utilisant la transformation : . pour un donn, trace l histogramme des rsultats obtenus ainsi que la courbe qui reprsente la fonction densit de la loi exponentielle :
rand('state',sum(100*clock)) % paramtres n=input('veuillez saisir la dimension n : ') ; lamda=input('veuillez saisir la valeur de lamda : ') ; % gnration des variables alatoires U = rand(1,n) ; X=-log(U)/lamda ; % valeurs pour tracer la fonction densit x=0 :0.1 :5 ; % fonction MATLAB qui trace la fonction densit y=exppdf(x,lamda) ; % histogramme [N,h]=hist(X,10) ; % changement de la taille des barres de l histogramme N=N/(h(2)-h(1))/n ; % traage bar (h,N,1,'b') hold on plot(x,y,'r') hold off xlabel('x') ylabel('f(x)-Exponentielle')
17
Ainsi
Le code MATLAB suivant gnre des variables alatoires d une distribution exponentielle
et n=1000
Considrons variables alatoires selon la loi exponentielle de paramtre . La variable densit est : par : = =
y Loi Gamma
; o
18
Prsentons un algorithme qui gnre une variable alatoire qui suit une loi Gamma de paramtres ; avec un entier.
La mthode de la transformation inverse ne peut pas tre utilise dans ce cas parce que la fonction de rpartition n est pas dfinie de faon explicite.
Puisque la somme de variables exponentielles indpendantes de mme paramtre est une variable alatoire qui suit une loi Gamma de paramtres , cela nous conduit la transformation suivante, base sur nombres alatoires uniformes : .
Nous pouvons simplifier cette criture et calculer un seul logarithme, en utilisant un e des proprits du logarithme :
Le code MATLAB suivant gnre des variables alatoires d une distribution gamma lorsque est un entier, trace l histogramme des rsultats obtenus ainsi que la courbe qui reprsente la fonction densit de la loi gamma :
19
rand('state',sum(100*clock)) % paramtres n=input('veuillez saisir la dimension : ') r= input('veuillez saisir la dimension : ') lamda= input('veuillez saisir la dimension : ') % gnration des r nombres alatoires pour obteni r une variable alatoire gamma U=rand(r,n) ; logU=-log(U)/lamda ; X=sum(logU) ; %affichage des valeurs de X X % histogramme [N,h]=hist(X,10) ; % changement de la taille des barres de l histogramme N=N/(h(2)-h(1))/n ; % fonction densit %valeurs pour tracer la fonction densit x=0 :0.1 :6 ; y=gampdf(x,r,1/lamda) ; bar(h,N,1,'b') hold on plot(x,y,'r') hold off xlabel('X') ylabel('f(x)-Gamma')
20
2 , r =3 et n=1000
y Loi Normale
o
et
Dans ce cas on a : Et
21
En effet,
Or,
Nous pouvons donc utiliser la mthode d acceptation-rejet pour gnrer des variables d une loi normale centre rduite en prenant .
Le code MATLAB suivant gnre des variables alatoires d une distribution Normale de paramtres , trace l histogramme des rsultats obtenus ainsi que la courbe qui reprsente la fonction densit de la loi normale :
22
rand('state',sum(100*clock)) % paramtres n=input('veuillez saisir la dimension n : ') mu=input('veuillez saisir la valeur de mu : ') sigma2=input('veuillez saisir la valeur de sigma2 : ') X=normrnd(mu,sqrt(sigma2),1,n); %Affichage des valeurs de X X % histogramme [N,h]=hist(X,10) ; % changement de la taille des barres de l histogramme N=N/(h(2)-h(1))/n ; %valeurs pour tracer la fonction densit x=mu-4*sqrt(sigma2) :0.01: mu+4*sqrt(sigma2) ; % fonction densit y=normpdf(x,mu,sqrt(sigma2)) ; bar(h,N,1,'b') hold on plot(x,y,'r') hold off xlabel('X') ylabel('f(x)-Normale')
23
et n=1000
De plus,
Nous pouvons obtenir des variables alatoires d une distribution Binomiale en gnrant nombres alatoires uniformes et en laissant tre le nombre de qui sont inferieur ou gale .
24
La fonction suivante implmente la procdure pour gnrer des variables alatoires d une distribution binomiale :
% la fonction X=binomiale(n,p,N) gnre N variables alatoires d une distribution binomiale de paramtre s n et p function X=binomiale(n,p,N) rand('state',sum(100*clock)) X=zeros(1,N); % gnration des nombres alatoires uniformes: N nombres de n essais U=rand(N,n); % recherch du nombre infrieur ou gal p for i=1:N ind=find(U(i,:)<=p); X(i)=length(ind); end
n=input('veuillez saisir la dimension n : ') p=input('veuillez saisir la valeur de p : ') N=input('veuillez saisir la valeur de N : ') X=binomiale(n,p,N) ; X edges=0 :max(X) ; f=histc(X,edges) ; bar(edges,f/n,1,'b')
25
y Loi de Poisson
La variable alatoire , comptant le nombre de ralisations d un certain vnement par unit de temps ou par exemple, par unit de surface, dont la loi est donne par :
De plus
Nous utilisons la mthode d inversion pour le cas d une variable alatoire discrte pour gnrer des variables alatoires d une distribution de Poisson. Nous aurons besoin de la relation rcursive suivante : La procdure pour gnrer ces variables alatoires est la suivante :
.
26
;
;
La fonction suivante implmente la procdure pour gnrer des variables alatoires d une distribution de poisson :
% la fonction X=poisson(lamda,n) gnre n variable alatoires de poisson de paramtre lamda function X=poisson(lamda,n)
rand('state',sum(100*clock))
X=zeros(1,n); j=1; while j<=n flag=1 ; % initialisation des quantits U=rand(1); i=0 ; p=exp(-lamda); F=p ; while flag if U<=F %accepter X(j)=i ; flag=0 ; j=j+1 ; else %passer la prochaine probabilit p=lamda*p/(i+1) ; i=i+1 ; F=F+p ; end end end
27
et n=500
28
y Loi Gomtrique
Considrons n rptitions indpendantes d une variable de Bernoulli. La loi gomtrique est la loi de la variable alatoire : nombre d observations jusque (et y compris) au premier succs . Les probabilits associes une loi gomtrique sont de la forme : , o est la probabilit d observer un succs, =1 la probabilit d chouer, et est le nombre d essais jusqu ce que le premier succs (inclus) se ralise. De plus = et = .
Le code MATLAB suivant gnre des variables alatoires d une distribution Gomtrique de paramtre , trace l histogramme des rsultats obtenus ainsi que la courbe qui reprsente la fonction densit de la loi gomtrique :
rand('state',sum(100*clock)) n=input('veuillez saisir la dimension n : ') theta=input('veuillez saisir la valeur de theta : ') X=geornd(theta,1,n); X [N,h]=hist(X,10) x=0:1:45; y=geopdf(x,theta); N=N/(h(2)-h(1))/n; % traage bar(h,N,1,'b') hold on plot(x,y,'r') hold off xlabel('X') ylabel('f(x)-Geomtrique')
29
0.13 et n=500
30
sont des variables Alors, indpendantes identiquement distribues suivant une loi normale centre rduite. Cette mthode a l avantage de ne pas ncessiter l inverse de la fonction de rpartition de la loi normale centre rduite, ni la fonction de rpartition elle -mme. Sous MATLAB cette mthode s crit :
31
Exemple
On veut simuler
obtient : Dans la densit conjointe des variables on reconnait : y = densit de qui suit la loi uniforme sur [0,2
indpendantes. . , et on
pour
et on pose :
32
Ces deux variables alatoires sont indpendantes par construction (leur densit conjointe est dfinie comme le produit de leurs densits respectives). Remarque : on montrera facilement que deux variables normales indpendantes distribution commune peuvent tre simules par :
) )
et
de
33
Il est important de noter que l'algorithme de Metropolis -Hastings permet de simuler des chantillons suivant la distribution partir de distributions candidates gnrales dont le support est inclus dans celui de . Toutefois, le schma de simulation ne fonctionnera pas bien en pratique si les zones de fortes probabilits de sont localises surtout dans les queues de distribution de . Notons aussi que l'algorithme de Metropolis-Hastings ne gnre pas d'chantillons indpendants identiquement distribus. L'algorithme de Metropolis-Hastings peut prsenter des difficults explorer convenablement le support de la distribution d'intrt. Cette situation s'aggrave d'autant plus dans le cas de distribut ions multidimensionnelles, le nombre d'chantillons ncessaires pour obtenir une couverture suffisante du support de la distribution d'intrt devenant trs important. Des algorithmes MCMC sont alors spcifiquement adapts la simulation de distributions multidimensionnelles. Signalons aussi que, pour engendrer cette chaine, l algorithme de Metropolis -Hastings va s appuyer sur deux lments : y Des rgles de placement des marcheurs auxquelles est associe une probabilit de transition ; y Une procdure d acceptation-rejet. L algorithme de Metropolis-Hastings est le suivant : 1. Initialiser , k=0, 2. Acceptation-Rejet Itration k : - proposer un candidat pour , simuler : q( ) - accepter le candidat avec la probabilit Simuler u U[0,1] Si u , Sinon poser ), alors prendre (rejet) = , (acceptation) , ) = min {1, }
3. k k+1 et aller en (2). Remarque : Acceptation-rejet + Metropolis-Hastings = obtenir des chantillons iid
34
Sinon,
35
Un des points remarquables de l'algorithme de Gibbs est qu'il rend possible la simulation de la distribution jointe ( = ( , ., ) partir des distributions conditionnelles .
Ce schma de simulation est d'autant plus efficace lorsque les distributions conditionnelles sont simulables rapidement.
36
VI.1.2. Densit
Pour une variable alatoire , de support rel, et dont la fonction de rpartition est densit , nous pouvons montrer que le conditionnement de l'intervalle rel donne:
et la
, avec
sa fonction de rpartition.
37
Par convention, si
, alors
et de meme, si
, alors
Avec
et
et
[ qui correspond la moyenne si la loi n'est pas tronque ; qui correspond la variance si la loi n'est pas tronque.
Nous utilisons un algorithme d'acceptation -rejet mixte, c'est--dire un algorithme d'acceptation-rejet classique mais utilisant plusieurs lois candidates, l'ide tant que chaque loi soit adapte aux diffrentes valeurs que peuvent prendre les paramtres et . Ensuite, en fonction des valeurs de ces paramtres, la loi candidate donnant le meilleur taux d'acceptation moyen est utilise pour gnrer un chantillon.
38
L expression du taux d acceptation dpend dans certains cas des paramtres de la loi candidate. Il faut alors trouver les valeurs de ces paramtres qui maximisent le taux d acceptation. Parmi l ensemble des lois candidates utilises, une seule fournira le meilleur taux d acceptation moyen pour des paramtres de la loi cible donns. Il faut donc dterminer les intervalles sur ces paramtres pour dterminer quelle est la meilleure loi candidate utiliser sur l intervalle considr. L algorithme propos est donc le mme que l algorithme d acceptation -rejet avec une tape prliminaire qui consiste choisir la meilleure loi candidate en fonction des paramtres de , puis calculer la constante correspondante : 1) Slectionner la loi candidate la plus approprie en fonction des paramtres de ; 2) Calculer la constante ; 3) Gnrer un nombre alatoire partir de ; 4) Gnrer un nombre alatoire uniforme ; 5) Calculer , 6) Si alors (acceptation) ; sinon : retour en 3 (rejet). Quatre lois candidates sont proposes pour simuler la loi cible : a) La loi Normale : b) La loi Normale couple la loi Uniforme C est une distribution dfinie sur sur , : , uniforme sur et qui suit la loi normale
):
39
d) La loi Exponentielle o la valeur de d acceptation moyen : correspond la valeur qui maximise le taux
Lois candidates
Notre choix est motiv par le fait que les lois a) et d) permettent d obtenir un taux d acceptation moyen trs important lorsque , et les lois b) et c) permettent d amliorer le taux d acceptation moyen autour de zro. Pour chacune de ces lois, nous pouvons calculer l expression des constantes taux d acceptation moyens) : (et ainsi les
40
Le calcul des taux d acceptation est alors direct. Les taux d acceptation moyens pour chacune des quatre lois candidates ont t reprsents en fonction de sur la figure suivante :
Nous pouvons alors trouver les expressions des trois points d intersections qui dlimitent les zones. Les calculs sont directs pour et , mais on ne peut que dterminer une valeur approche de . En effet, d aprs l quation . , on a :
41
sous une forme implicite. Nous pouvons en dduire que , o . est la fonction de Lambert
. Ainsi, Le taux d acceptation moyen le plus faible correspond ce qui est un trs bon taux d acceptation.
A prsent crivons la fonction sous MATLAB qui nous permettra de simuler la loi cible partir des 4 lois candidates.
function x = rpnorm(N,m,s) % RPNORM Random numbers from the positive normal distribution if s<0 % s=paramtre sigma de la loi error('le paramtre sigma doit tre strictement positif'); end if N<=0 % N=nombre d chantillon gnrer error('le nombre d chantillon gnrer doit tre positif'); end x = []; % x =vecteur de sortie des chantillons NN = N; % Intersections A = 1.136717791056118; mA = (1-A^2)/A*s; mC = s * sqrt(pi/2); while length(x)<NN, if m < mA % 4. Loi exponentielle avec m=paramtre mu de la loi a = (-m + sqrt(m^2+4*s^2)) / 2 / s^2; z = -log(1-rand(N,1))/a; rho = exp( -(z-m).^2/2/s^2 - a*(m-z+a*s^2/2) ); else if m <= 0 % 3. Loi normale tronque en la moyenne % gale parce que 3 est plus rapide que 2
42
z = abs(randn(N,1))*s + m; rho = (z>=0); else if m < mC % 2. Loi normale coule la loi uniforme r = (rand(N,1) < m/(m+sqrt(pi/2)*s)); u = rand(N,1)*m; g = abs(randn(N,1)*s) + m; z = r.*u + (1-r).*g; rho = r.*exp(-(z-m).^2/2/s^2) + (1-r).*ones(N,1); else % 1. Loi normale
z = randn(N,1)*s + m; rho = (z>=0); end % Accept/reject the propositions reject = (rand(N,1) > rho); z(reject) = []; if isempty(z) x = [x ; z]; end N = N-length(z); end
V.4. Conclusion
Nous avons prsent une approche pour simuler des variables suivant une loi dont la forme varie avec ses paramtres. L ide dveloppe utilise un algorithme d acceptation-rejet dont la loi candidate est slectionne parmi d autres lois choisies a priori. L approche est ensuite applique au cas particulier de la gnration de variables alatoires normales support positif. Quatre lois candidates ont t prsentes, et les intervalles sur lesquelles elles sont le plus performantes en termes de taux d acceptation ont t dtermins. Des simulations ont illustr le fait que la mthode fonctionne bien et rapidement dans toutes les situations possibles.
43
Les travaux futurs se concentrerons sur la recherche de lois candidates plus performantes, telle que la loi normale couple un polynme, ou la loi normale tronque en la moyenne dont les deux paramtres sont dtermins pour maximiser le taux d acceptat ion moyen. De plus, les recherches pourront galement tre tournes vers le cas de la simulation d une loi normale tronque des deux cts ce qui peut tre utile dans le traitement de donnes censures, ou pour simuler des lois normales multidimensionnelles support positif.
44