Problème d`informatique : Génération de variables aléatoires

publicité
Problème d'informatique : Génération de variables
aléatoires uniformes et non-uniformes à valeurs réelles
1
Consignes et dates de remise du DM
Ce DM est à rendre par binôme d'informatique ou seul sous format papier à votre séance de la
semaine 45 (semaine du 07 novembre) pour la lière classique ou à votre séance de la semaine 46 (semaine
du 14 novembre) pour les binômes contenant au moins un CFA ou un FIE. Il y aura 2 points en moins
par jour de retard et 2 points en moins si les binômes d'informatique ne sont pas conservés.
2
Introduction
An de simuler des phénomènes physiques il peut être utile de savoir générer des nombres aléatoires
réels suivant une loi de probabilité uniforme ou non (une loi lorentzienne pour des prols de raie atomique,
une loi gaussienne pour des prols de faisceaux laser par exemple). On a vu en td comment générer des
nombres aléatoires entiers selon une loi de probabilité uniforme.
La première partie de ce problème consiste à adapter ces résultats au cas réel et à développer quelques
outils statistiques. Dans la suite du problème on étudiera comment générer une variable aléatoire de
densité de probabilité gaussienne à partir d'une variable aléatoire uniforme. Il s'agit de la méthode du
rejet.
3
Générateur de variable aléatoire uniforme à valeurs réelles
Ecrivez une fonction générant des nombres aléatoires réels de type double selon une densité de
probabilité uniforme compris entre deux bornes. Ecrivez une fonction calculant la moyenne, l'écart-type
d'une distribution de nombres réels.
4
Histogramme
Le calcul d'histogramme pour des nombres réels est un peu plus compliqué que pour des nombres
entiers. La méthode proposée est la suivante : supposons que l'on dispose d'un ensemble de N nombres
réels. On appellera cet ensemble échantillon. Supposons que les valeurs de cet échantillon sont comprises
√
entre deux valeurs min et max. On va diviser l'intervalle [min,max] en classes dont le nombre est M = N
(ou sa partie entière). Comme on va considérer des classes de taille égale, ceci xe ainsi la taille d'une
classe. On peut alors dénir la suite
(xi )1≤i≤M +1
√
avec M = N , telle que la classe i soit l'intervalle
[xi , xi+1 [.
Chacun de ces intervalles a la même largeur ` :
xi+1 − xi = `
Lorsqu'un élément de l'échantillon se trouve dans la classe i, on incrémente de 1 un compteur lié à cette
classe. Autrement dit, le compteur i compte le nombre de fois qu'un élément de l'échantillon tombe dans
la classe i. L'ensemble des compteurs de toutes les classes donne les occurrences de chaque classe.
Pour obtenir une estimation de la densité de probabilité des données de l'échantillon, il faut diviser
la valeur de chaque compteur par le produit de la taille N de l'échantillon et de la largeur ` d'une
1
classe. Pourquoi cette normalisation donne-t-elle une estimation de la densité de probabilité ? C'est cet
"estimateur" de la densité de probabilité qu'on appellera histogramme dans la suite.
1. Ecrivez une fonction calculant l'histogramme d'un échantillon de nombres réels.
2. Appliquez votre fonction à un échantillon généré à l'aide de votre générateur de variables aléatoires
uniformes à valeurs réelles. Grâce à la redirection de ots, visualisez votre histogramme sous excel.
3. Calculez l'histogramme pour des échantillons de diérentes tailles N . Que constatez-vous ?
5
Test du χ2
Un test statistique très utilisé pour déterminer si les valeurs issues d'une expérience sont distribuées
selon une densité de probabilité connue est le test du χ2 . Il consiste à calculer
2
M
Pb [i] − P [i]
X
1
χ2 =
M i=1
P [i]
où M est le nombre de classes. Le vecteur Pb[i] représente l'histogramme de l'échantillon, et le vecteur
P [i] représente les probabilités attendues pour chaque classe i. La valeur du χ2 correspond donc à une
"distance quadratique" normalisée entre l'histogramme estimé et l'histogramme théorique. Plus cette
valeur est petite et plus on peut considérer que l'échantillon mesuré suit la loi de probabilité P [i].
1. Ecrivez une fonction de test du χ2 .
2. Appliquez-la à une réalisation d'un échantillon de nombres aléatoires uniformes. Si vous l'appliquez
à une autre réalisation, que constatez-vous ?
3. Tracez sous Excel la valeur du χ2 en fonction de la taille N de l'échantillon. Pour chaque valeur de
N , on tracera la moyenne du χ2 estimé sur 20 réalisations de l'échantillon.
6
Méthode du rejet
Cette méthode de rejet peut s'utiliser pour la génération de n'importe quel type de variable aléatoire.
Elle consiste à générer des données suivant une distribution de fonction de densité proche de celle désirée
et ensuite d'éliminer une certaine proportion de ces données de manière à se ramener à des données qui
suivent la distribution attendue. Nous allons appliquer cette méthode à la génération d'une distribution
aléatoire de probabilité gaussienne, très utilisée en physique. La loi de probabilité gaussienne produite est
de moyenne nulle et de variance 1. La démonstration mathématique n'est pas donnée ici, on se contente
de donner l'algorithme à suivre :
1.
2.
3.
4.
Générer U1, une distribution de probabilité uniforme sur [0,1] (qu'on notera U[0,1] par la suite)
Calculer X = - ln(U1)
Générer U2, une U[0,1]
Tester si
2
1
U 2 ≤ e− 2 (X−1)
5. Si cette condition n'est pas vériée, retourner à l'étape 1 (on rejette donc X), sinon continuer (on
accepte X)
6. Générer U3, une U[0,1]
7. Si
U 3 ≤ 0, 5
mettre un signe négatif à X, sinon le garder positif
Les X acceptés suivent une loi de probabilité gaussienne.
Mettez en oeuvre cet algorithme. Tracez sous excel l'histogramme de la distribution de probabilité ainsi
générée.
2
7
Application
En utilisant la distribution de probabilité gaussienne que vous venez de générer, faites une fonction
qui génére une variable aléatoire gaussienne de moyenne m et de variance σ 2 quelconques.
Générez un échantillon de 200 nombres aléatoires uniformes de moyenne égale à 1 et de variance égale
à 2. On rappelle que la variance d'une distribution de probabilité uniforme entre deux bornes MIN et
MAX est égale à (M IN − M AX)2 /12.
Générez un échantillon de nombres aléatoires gaussiens de même moyenne et de même variance. Comment peut-on distinguer ces deux échantillons ?
Pour ceux qui veulent en savoir plus sur la méthode du rejet, vous pouvez par exemple aller voir le
site suivant :
www.stat.ucl.ac.be/cours/stat2430/documents/random.pdf
3
Téléchargement