Polytech Tours 4A
DEE Probabilités et statistique
TP 1 : Probabilités et Statistique
1 Syntaxe Python pour les probabilités et statistique
1.1 Rappels : Bibliothèque matplotlib
La bibliothèque matplotlib doit être importée au début de votre script :
import numpy as np
import matplotlib.pyplot as plt
De nombreuses ressources sont disponibles dans l’aide et sur internet concernant la représentation
graphique avec Python. Nous allons rappeler quelques commandes de base pour le tracé et la person-
nalisation des graphiques.
• Affichage d’une courbe
L’instruction plot() permet de tracer des courbes en reliant les points dont les abscisses x et les
ordonnées y sont des listes ou des tableaux (type array()) donnés en argument :
# Exemple 1
x=[1,2,3,4] # liste des abscisses
y =[1,4,9,16] # liste des ordonnées
plt.figure() # ouvre une fenêtre graphique
plt.plot(x,y) # relie les points d'abscisses x et d'ordonnées y
plt.show() # affiche la figure à l'écran
Remarques :
— Par défaut, les points sont reliés par des segments.
— Pour tracer une droite horizontale, on peut utiliser la commande plt.axhline(a) (droite hori-
zontale d’équation y = a).
• Tracé d’une fonction et ajout de légendes
Pour tracer une fonction f : on fournit la liste (ou le tableau) des abscisses x (définissant le domaine
sur lequel on veut tracer f ) puis on calcule les ordonnées y en appliquant la fonction f directement
sur le vecteur x (on parle d’opérations vectorisées). On obtient alors une liste (ou un tableau) x pour
les abscisses et un tableau y = f (x) pour les ordonnées.
# Exemple 2
x=np.linspace(0,2*np.pi,100) # np.linspace(début, fin (inclus), nb de points)
# ou
x=np.arange(0, 2*np.pi,0.1) # np.arange(début, fin (non inclus), pas)
y=np.cos(x) # opération vectorisée
plt.figure()
plt.plot(x,y, label="cos(x)")
plt.legend() # affiche le label (la légende) de la courbe
plt.xlabel("abscisses") # ajout d'une légende (le label) sur l'axe des abscisses
plt.ylabel("ordonnées") # ajout d'une légende (le label) sur l'axe des ordonnées
plt.grid(True) # Ajout d'une grille
1
plt.title("Fonction cosinus") # Ajout d'un titre au graphique
plt.show()
Remarque : si l’on veut écrire des expression mathématiques dans les légendes ou les titres, il suffit
de mettre l’expression sous la forme plt.title(r". . .").
• Affichage de plusieurs courbes
Pour afficher plusieurs courbes sur un même repère, il suffit de mettre les commandes plot() les
unes à la suite des autres.
# Exemple 3
x=np.linspace(0,2*np.pi,30)
y1=np.cos(x)
y2=np.sin(x)
plt.figure()
plt.plot(x,y1, label="cos(x)") # première courbe
plt.plot(x,y2, label="sin(x)") # deuxième courbe
plt.legend()
plt.title("Fonctions trigonométriques")
plt.show()
• Modifier la couleur des courbes
Il est possible de préciser la couleur d’une courbe dans la commande plot().
# Exemple 4:
plt.figure()
plt.plot(x,y1,"r", label="cos(x)") # couleur de la courbe en rouge
plt.plot(x,y2,"b", label="sin(x)") # couleur de la courbe en bleu
plt.legend()
plt.show()
Remarque : les caractères pour personnaliser les couleurs sont b (bleu), g (vert), r (rouge), y (jaune),
k (noir), ...
2
1.2 Aléatoire en Python
1.2.1 Fonctions de base
Pour obtenir les outils probabilistes en Python, on importe le module stats de la bibliothèque Scipy :
import scipy.stats as stats
Cette bibliothèque contient les fonctions suivantes :
• rvs(parametre,size) : simulation de variables aléatoires indépendantes et de même loi où size est
la taille de l’échantillon (c’est-à-dire le nombre de tirages souhaité) ;
• pdf(x, parametre) : probability density function i.e. fonction densité fX (x) évaluée en x ;
• pmf(k, parametre) : probability mass function i.e. loi discrète P(X = k) en k ;
• cdf(x,parametre) : cumulative density function i.e. fonction de répartition FX (x) évaluée en x d’une
variable aléatoire à densité ;
• cdf(k,parametre) : cumulative density function i.e. fonction de répartition FX (k) évaluée en k d’une
variable aléatoire discrète ;
où parametre correspond aux paramètres de la loi (indiqués dans le tableau ci-dessous).
On les utilisera avec la syntaxe suivante : stats.loi.fonction(...), où :
— loi désigne la loi de probabilité choisie (voir tableau ci-dessous) ;
— fonction(...) désigne l’une des fonctions du sous-module stats citées ci-dessus.
loi(parametre) Loi de probabilité correspondante
norm(loc=, scale=) Loi normale N (loc, scale2 ).
gamma(a=) Loi gamma γ(a, 1).
beta(a=, b=) Loi béta β(a, b).
t(df=n) Loi Student de n degrés de liberté.
cauchy() Loi de Cauchy.
expon(scale=1/lambda) Loi exponentielle E(λ).
uniform(loc=, scale=) Loi uniforme U(]loc, loc + scale[).
randint(low, high) Loi uniforme U({low, low + 1, · · · , high − 1}).
binom(n=, p=) Loi binomiale B(n, p).
geom(p=) Loi géométrique G(p).
poisson(mu=) Loi de Poisson P(µ).
1.2.2 Histogramme
L’histogramme d’un échantillon est un diagramme constitué de barres verticales juxtaposées, chacune
de ces barres représentant le nombre de termes de l’échantillon appartenant à une classe donnée.
Pour tracer un histogramme d’un échantillon d’une loi réelle, on commence donc par répartir les valeurs
de l’échantillon dans des classes qui sont des intervalles de R. On représente ensuite ces classes par des
rectangles verticaux dont l’aire est proportionnelle à l’effectif de chaque classe. On normalise souvent
les aires de chaque classe de sorte que l’aire totale soit égale à 1.
Pour la syntaxe, il suffit d’utiliser hist à la place de plot. La commande plt.hist(X,bins=n) répartit
alors les données de l’échantillon X dans n sous intervalles de [min(X), max(X)].
Pour superposer l’histogramme avec une densité, il faut d’abord normaliser l’histogramme avec l’option
density=True de hist avant de tracer la densité.
3
2 Prise en main
1. Simuler 10 lancers de Pile ou Face indépendants.
2. Tracer la fonction densité d’une loi exponentielle de paramètre 5 sur [0,3].
3. Soit X une variable aléatoire discrète suivant la loi de Poisson de paramètre 2.
(a) Calculer P(X = 2).
(b) Calculer P(X 6 3).
4. Soit Y une variable aléatoire suivant la loi normale N (0, 1). Calculer P(Y > 0, 25).
5. Le fichier tp_etudiant.py disponible sur Célène contient un code Python pour cette question.
(a) Commenter chaque portion de code indiquée par ”À COMPLÉTER”.
(b) Expliquer les arguments de la fonction plt.hist(X,bins=30, density=True).
6. On veut illustrer la Loi des Grands Nombres sur un échantillon X = (X1 , . . . , X1000 ) de n = 1000
variables aléatoires indépendantes de loi géométrique de paramètre p = 0.25.
(a) Énoncer la Loi des Grands Nombres appliquée à des variables aléatoires indépendantes sui-
vant la loi géométrique de paramètre p = 0.25.
Pour illustrer numériquement la Loi des Grands Nombres, on va montrer que la suite de
terme général Un = n1 ni=1 Xi ”converge” vers E[X1 ].
P
(b) Simuler un échantillon X.
(c) Expliquer ce que renvoie la commande Xc=np.cumsum(X). On pourra regarder les premières
valeurs de X et de Xc.
(d) Expliquer ce que renvoie la commande Xemp = Xc/np.arange(1,n+1).
(e) Le fichier tp_etudiant.py disponible sur Célène contient un code Python pour cette question.
Commenter chaque portion de ce code indiquée par ”À COMPLÉTER”.
7. On veut illustrer le Théorème Central Limite sur un échantillon X = (X1 , . . . , X1000 ) de n = 1000
variables aléatoires indépendantes de loi de Poisson de paramètre µ = 10.
(a) Énoncer le Théorème Central Limite appliqué à des variables aléatoires indépendantes sui-
vant la loi de Poisson de paramètre µ = 10.
Pour illustrer numériquement le Théorème Central Limite (ou l’approximation gaussienne),
on va montrer que la loi de la variable aléatoire
√ n
!
n 1X
Yn = p Xi − E[X1 ]
Var(X1 ) n i=1
peut être approchée par une loi normale N (0, 1) (si n est suffisamment grand).
(b) Simuler un échantillon X.
(c) À partir de cet échantillon, donner la valeur prise par Yn .
(d) Simuler N = 5000 valeurs indépendantes de Yn que l’on stockera dans une liste nommée val.
(e) Tracer l’histogramme associé à ces N tirages indépendants de Yn .
(f) Superposer à cet histogramme la densité de la loi normale N (0, 1).
(g) Relancer vos codes pour n = 10 et n = 100 pour illustrer la convergence en loi. Commenter.