CPES 2 Probabilités approfondies TP de Python

Documents pareils
Cours 7 : Utilisation de modules sous python

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Moments des variables aléatoires réelles

Simulation de variables aléatoires

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Résolution d équations non linéaires

TSTI 2D CH X : Exemples de lois à densité 1

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Leçon 01 Exercices d'entraînement

Initiation à l algorithmique

Image d un intervalle par une fonction continue

1 Recherche en table par balayage

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Probabilités Loi binomiale Exercices corrigés

Programmes des classes préparatoires aux Grandes Ecoles

Texte Agrégation limitée par diffusion interne

Probabilités sur un univers fini

Travaux dirigés d introduction aux Probabilités

MÉTHODE DE MONTE CARLO.

Limites finies en un point

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Corrigé des TD 1 à 5

Exercices - Polynômes : corrigé. Opérations sur les polynômes

108y= 1 où x et y sont des entiers

Chapitre 2 Le problème de l unicité des solutions

Probabilités et Statistiques. Feuille 2 : variables aléatoires discrètes

4 Distributions particulières de probabilités

Découverte de Python

Exercices Types Algorithmique et simulation numérique Oral Mathématiques et Algorithmique Banque PT Propositions de réponses

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Amphi 3: Espaces complets - Applications linéaires continues

Continuité en un point

L ALGORITHMIQUE. Algorithme

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Exercices sur le chapitre «Probabilités»

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

CCP PSI Mathématiques 1 : un corrigé

Tests non-paramétriques de non-effet et d adéquation pour des covariables fonctionnelles

Méthodes de Simulation

Initiation à la programmation en Python

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Comparaison de fonctions Développements limités. Chapitre 10

Probabilités sur un univers fini

4. Martingales à temps discret

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Annexe commune aux séries ES, L et S : boîtes et quantiles

La fonction exponentielle

3. Conditionnement P (B)

Python - introduction à la programmation et calcul scientifique

TP 1. Prise en main du langage Python

Licence MASS (Re-)Mise à niveau en Probabilités. Feuilles de 1 à 7

Chaînes de Markov au lycée

Commun à tous les candidats

Loi binomiale Lois normales

Optimisation, traitement d image et éclipse de Soleil

pyensae StockPrices September 1, Manipulation de séries financières avec la classe StockPrices

Correction du baccalauréat ES/L Métropole 20 juin 2014

Licence Sciences et Technologies Examen janvier 2010

Chapitre 6. Fonction réelle d une variable réelle

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Représentation d un entier en base b

LEÇON N 7 : Schéma de Bernoulli et loi binomiale. Exemples.

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Modélisation et simulation

I. Polynômes de Tchebychev

Simulation : application au système bonus-malus en responsabilité civile automobile

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Probabilités conditionnelles Loi binomiale

16 Chapitre 16. Autour des générateurs pseudoaléatoires

Objets Combinatoires élementaires

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

3 Approximation de solutions d équations

Sur certaines séries entières particulières

La simulation probabiliste avec Excel

Théorie et codage de l information

Correction du Baccalauréat S Amérique du Nord mai 2007

Introduction à la théorie des graphes. Solutions des exercices

La classification automatique de données quantitatives

Rappels sur les suites - Algorithme

Équations non linéaires

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Fonctions homographiques

Quelques tests de primalité

ÉPREUVE COMMUNE DE TIPE Partie D

Calculs de probabilités conditionelles

Planche n o 22. Fonctions de plusieurs variables. Corrigé

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Transcription:

CPES 2 Probabilités approfondies 2015-201 TP de Python 1 Simulation de lois 1.1 Loi uniforme Igor Kortchemski igor.kortchemski@cmap.polytechnique.fr Comment Python simule-t-il une suite de variables aléatoires indépendantes et uniformes sur [0, 1]? En quelques mots, cela revient à générer des entiers aléatoires indépendants uniformes dans E = {1, 2,..., M}, puis à les diviser par M. Pour cela, Python génère une suite de nombres pseudo-aléatoires en partant d un état x 0 E (la graine, ou seed en anglais) et en appliquant successivement une même fonction f : E E (par exemple f(x) = ax + c modulo M avec a et c bien choisis). Cette transformation doit bien sûr vérifier plusieurs propriétés : on veut que la suite générée «ressemble» à une suite de variables aléatoires uniformes et indépendantes sur E. Que veut dire «ressemble»? La suite doit réussir à passer toute une batterie de tests statistiques d indépendances et d adéquation de loi. En particulier, la période, c est-à-dire le plus petit entier k tel que f (k) (x) = x (avec f (k) l itérée k-ième), doit être (très (très)) grande. Python utilise l algorithme appelé «Mersenne Twister» (développé par Makoto Matsumoto et Takuji Nishimura en 1997) possédant une période de 2 19937 1 (qui est un nombre premier de Mersenne). Ainsi : existe-t-il des vrais générateurs de nombre aléatoire? NON : Pas vraiment, tous les générateurs sont déterministes!! MAIS : ils sont construits de telle sorte à passer les tests statistiques. Question 0. Exécuter plusieurs fois le Code 0. 1 import numpy.random as npr Code 0 Question0.py 2 3 print npr.rand() 4 npr.seed(seed=1) 5 print npr.rand() print npr.rand() 7 npr.seed(seed=1) print npr.rand() 9 print npr.rand() On suppose ainsi qu on a à notre disposition une «boîte noire» qui permet de simuler une suite de variables aléatoires indépendantes et uniformes sur [0, 1]. Pour générer d autres aléas que ceux de loi uniforme, on fait subir des transformations astucieuses (algorithme de simulation). Exemple (simulation d une variable uniforme sur un segment quelconque). Si a < b et U est une variable aléatoire uniforme sur [0, 1], on peut démontrer que a + (b a)u suit une loi uniforme sur [a, b]. Ainsi, pour simpuler une variable aléatoire uniforme sur [a, b], on simule une variable aléatoire U uniforme sur [0, 1] et on renvoie a + (b a)u. 1

1.2 Simulation par inversion de la fonction de répartition On a vu en cours que si U est uniforme sur [0, 1] et λ > 0, alors V = 1 ln(u) est une loi λ exponentielle de paramètre λ. Plus généralement, on a le résultat suivant. Théorème 1. Soit X une variable aléatoire réelle. On suppose que sa fonction de répartition F est strictement croissante (F est donc bijective de R sur ]0, 1[ et on peut noter F 1 son inverse). Soit U une variable aléatoire uniforme sur [0, 1]. Alors F 1 (U) a la même loi que X. Démonstration. Soit x R. On calcule P (F 1 (U) x) = P (U F (x)) = F (x) (car U est uniforme sur [0, 1] et 0 F (x) 1). Donc F 1 (U) a la même fonction de répartition que X. Remarque 2. Si F n est pas strictement croissante (et donc pas injective), le théorème précédent reste vrai à condition de définir F 1 (u) comme F 1 (u) = inf{x R : F (x) u} (F 1 est appelé l inverse continu à droite de F ). Question 1. Simuler une variable aléatoire de Cauchy de paramètre 1 dont une densité est 2 1 en complétant le Code 1. π 1+x 2 1 from math import * 2 import numpy.random as npr Code 1 Question1.py 3 4 def Cauchy(): 5 U=BLA #tire un reel uniforme sur [0,1] return tan(bla) #On evalue l inverse de la fonction de repartition en U 7 print Cauchy() 1.3 Loi géométrique On va comparer plusieurs manières de simuler une variable géométrique de paramètre p (0, 1) à partir d une variable aléatoire uniforme sur [0, 1] en se fondant sur les résultats théoriques suivants : (1) De manière générale, pour simuler une variable aléatoire X à valeurs entières telle que P (X = i) = p i pour tout i 0, on tire une variable uniforme U sur [0, 1] et on renvoie l entier k tel que p 0 + + p k 1 < U < p 0 + + p k. (2) On tire des variables aléatoires de Bernoulli de paramètre p (on renvoie 1 si une variable aléatoire uniforme U sur [0, 1] est plus petite que p, 0 sinon) et on s arrête à la première fois qu on tombe sur 1. (3) On pose λ = 1 et on renvoie λx ( x est le plus petit entier k tel que k x, ln(1 p) ceil en Python) où X est une variable aléatoire exponentielle de paramètre 1. (4) Faire appel à une fonction intégrée de Python. Question 2. Comparer l efficacité de ces trois méthodes pour simuler N variables géométrique de paramètre p en complétant le Code 2. Commenter l influence des paramètres. 2

1 from future import division 2 from math import * 3 import numpy as np 4 import numpy.random as npr 5 from time import time Code 2 Question2.py 7 p=0.1 #parametre de la geometrique 9 N=10000 #nombre de fois qu on simule la geometrique 10 11 def methode1(): 12 k=1 13 tmp=p 14 U=npr.rand() 15 while U>tmp: 1 tmp=tmp+bla 17 k=k+1 1 return BLA 19 20 def methode2(): 21 tmp=0 22 k=0 23 while tmp==0: 24 k=k+1 25 if BLA: 2 tmp=1 27 return k 2 29 def methode3(): 30 X=-log(npr.rand()) 31 return int(ceil(bla)) 32 33 def methode4(): 34 return npr.bla(p) 35 3 t1 = time() 37 [methode1() for i in range(n)] 3 t2 = time() 39 temps1 = t2 - t1 40 print "La methode 1 a pris ", temps1, " secondes" 41 42 t1 = time() 43 [methode2() for i in range(n)] 44 t2 = time() 45 temps1 = t2 - t1 4 print "La methode 2 a pris ", temps1, " secondes" 47 4 t1 = time() 49 [methode3() for i in range(n)] 50 t2 = time() 51 temps1 = t2 - t1 52 print "La methode 3 a pris ", temps1, " secondes" 3

53 54 55 t1 = time() 5 [methode4() for i in range(n)] 57 t2 = time() 5 temps1 = t2 - t1 59 print "La methode 4 a pris ", temps1, " secondes" 2 Convergence de variables aléatoires 2.1 Approximation d une loi de Poisson par une loi binomiale Nous avons démontré le résultat suivant en cours. Théorème 3. Soit λ > 0. Soit X n une variable aléatoire binomiale de paramètre (n, λ/n). Alors X n converge en loi vers une loi de Poisson de paramètre λ lorsque n (c est-à-dire que pour tout k 0, P (X n = k) e λ λ k /k! lorsque n ). Question 3. Illustrer ce théorème en complétant le Code 3. 1 from future import division 2 import numpy as np 3 import numpy.random as npr 4 import scipy.stats as sps 5 import matplotlib.pyplot as plt Code 3 Question3.py 7 param=3 #parametre n=100 9 N=5000 #nombre de tirages effectue pour tracer l histogramme en batons de la loi de X_n 10 11 X=npr.binomial(BLA) 12 13 BLA 14 BLA 15 BLA 1 BLA 17 BLA 1 BLA 2.2 Approximation d une loi exponentielle par une loi géométrique Nous avons démontré le résultat suivant en cours. Théorème 4. Soit λ > 0. Si X n est une variable aléatoire de loi géométrique de paramètre λ/n, alors X n converge en loi vers une variable exponentielle de paramètre λ lorsque n (c est-à-dire que pour tout x 0 on a P (X n x) P (Z x) où Z est une variable aléatoire exponentielle de paramètre λ). 4

Question 4. Illustrer ce théorème en complétant le Code 4. 1 from future import division 2 import numpy as np 3 import numpy.random as npr 4 import scipy.stats as sps 5 import matplotlib.pyplot as plt Code 4 Question4.py 7 param=2 #parametre n=1000 9 N=5000 #nombre de tirages effectue pour tracer une densite de X_n 10 11 X=npr.geometric(BLA) 12 13 plt.hist(bla, normed=true, label="densite empirique", bins=int(sqrt(n))) 14 x = np.linspace(bla, BLA, 100) 15 f_x = param*np.exp(-bla) 1 plt.plot(x, f_x, "r", label="densite theorique") 17 plt.legend() 2.3 Illustration d un exercice de DM Dans le DM facultatif, on démontrait que si (X n, n 2) est une suite de variables aléatoires exponentielles de paramètre 1, définies sur le même espace de probabilité, alors presque sûrement la plus grande valeur d adhérence de la suite (X n / ln(n), n 2) vaut 1. Question 5. Illustrer ce théorème en complétant le Code 5. 1 from future import division 2 import numpy as np 3 import numpy.random as npr 4 import scipy.stats as sps 5 import matplotlib.pyplot as plt Code 5 Question5.py 7 n=100000 9 X=np.arange(2,n+2) 10 Y=BLA 11 12 plt.plot(x, Y) 13 plt.plot(x, BLA, "r", label="droite d equation y=1") 14 15 plt.legend() 5

Question. Étudiant numériquement la convergence en loi de la suite X n / ln(n) lorsque n. 3 Approximation de π par la méthode de Monte-Carlo Considérons un couple (X, Y ) de variables aléatoires indépendantes telles que chacune soit uniforme sur [0, 1]. Soit ((X i, Y i )) i 1 une suite de vecteurs aléatoires indépendants et de même loi que (X, Y ). On admet que P (X 2 + Y 2 1) = π. Ceci est intuitif au moins : (X, Y ) représente un point 4 uniforme dans le carré [0, 1] 2, et le probabilité qu il appartienne à un quart de disque centré en 0 est l aire de ce quart de disque (c est-à-dire π/4) divisé par l aire totale du carré, qui vaut 1. Posons Z i = 1 si Xi 2 + Yi 2 1 et Z i = 0 sinon. Ainsi, (Z i ) i 1 sont des variables aléatoires indépendantes de Bernoulli de paramètre π/4. En posant S n = 4 n n Z i, on en déduit d après la loi forte des grands nombres que S n converge presque sûrement vers π. i=1 Jet de 100 points uniformes dans le carre 1.0 0. 0. 0.4 0.2 0.0 0.0 0.2 0.4 0. 0. 1.0 Figure 1 Dans ce exemple, S 100 = 4 77 (il y a 77 points dans la région rouge). 100 On veut maintenant un intervalle de confiance sur la valeur de π. Pour cela, on remarque que E [S n ] = π, Var(S n ) = 1 n Var(X n 2 i ) = 1 n π ( 4 1 π ) 4 4 n car x(1 x) 1/4 sur [0, 1]. D après l inégalité de Bienaymé-Tchebychev, on a donc i=1 P ( S n π α) 4 α 2 n. (1) Question 7. Simuler un intervalle de confiance de π d amplitude au plus 10 2 à 99% en complétant le Code 7.

1 from future import division 2 import numpy as np 3 import numpy.random as npr 4 import scipy.stats as sps 5 import matplotlib.pyplot as plt Code 7 Question7.py 7 n=bla 9 X=npr.rand(n) 10 Y=npr.rand(n) 11 12 Sn=4/n*np.sum(BLA) #sum compte le nombre d elements non nuls (ou vrais) dans un tableau 13 14 print "Intervalle de confiance pour Pi au niveau 0.99 : ["+str(bla)+","+str(bla)+"]" #On utilise str pour convertir un entier en chaine de caracteres et on utilise le + pour concatener des chaines de caracteres 15 print "En vrai, Pi vaut "+str(np.pi) 4 Réglement de comptes à OK Corall Soit n 1 un entier. Deux groupes de bandits, chacun constitué de n personnes, se retrouvent à OK Corral pour un règlement de comptes. Tant qu il reste au moins un bandit vivant dans chaque groupe, à chaque seconde un bandit (choisi uniformément au hasard parmi ceux encore vivants, indépendamment de tout ce qui s est passé avant) abat un bandit de l autre groupe. On note V (n) le nombre (aléatoire) de survivants à l issue de la fusillade. Une étude théorique permet de montrer que V (n)/n 3/4 converge en loi lorsque n vers une variable aléatoire réelle à densité dont une densité est 3 π x 3x 4 e 1 1x 0. Question. Illustrer cette convergence en loi par des simulations. 5 Bonus Voici le code utilisé pour générer la Figure 1. 1 from future import division 2 from math import * 3 from pylab import * 4 import numpy.random as npr 5 import scipy.stats as sps Code illustration.py 7 n=100 9 X=npr.rand(n) 7

10 Y=npr.rand(n) 11 12 x=linspace(0,1,100) 13 y=sqrt(1-x**2) 14 x=insert(x,0,0) #on insere 0 en 1ere position 15 y=insert(y,0,0) #on insere 0 en 1ere position (pour que la region rouge passe par le point (0,0)) 1 17 scatter(x,y) #On dessine les points 1 fill(x,y, r,alpha=0.5) #On dessine la region rouge 19 axis([0,1,0,1]) #On restreint les axes 20 title( Jet de +str(n)+ points uniformes dans le carre ) #On utilise str pour convertir un entier en chaine de caracteres et on utilise le + pour concatener des chaines de caracteres 21 gca().set_aspect( equal, adjustable= box ) #On force les axes a etre de meme longueur 22 23 savefig( fig.pdf ) #On enregistre la figure dans un fichier pdf