15 minutes de Python
Statistiques bivariées : nuage de points et point moyen
Nuage de points : revenu et consommation
En statistiques bivariées, on étudie deux variables mesurées sur les mêmes individus.
Par exemple :
le revenu mensuel x (en euros) et la consommation mensuelle y (en euros).
Le premier réflexe est de tracer un nuage de points :
chaque individu correspond à un point de coordonnées (x, y).
On peut alors observer visuellement une tendance :
quand x augmente, est-ce que y a tendance à augmenter ?
1) Tracer un nuage de points
On représente les données sous forme de deux listes (ou deux tableaux numpy) :
x pour les revenus, y pour les consommations.
import numpy as np
import matplotlib.pyplot as plt
x = [1200, 1500, 1800, 2000, 2300]
y = [ 900, 1100, 1300, 1450, 1600]
plt.plot(x, y, "o") # nuage de points
plt.show()
Ici, plt.plot(x, y, "o") signifie : afficher uniquement des points (marqueur "o"),
sans relier par des segments.
2) Le point moyen du nuage
Le point moyen du nuage est \((\bar x, \bar y)\), où \(ar x\) est la moyenne des revenus, et \(ar y\) la moyenne des consommations. C’est un point de référence : il donne une idée de la « position centrale » du nuage.
x_bar = np.mean(x)
y_bar = np.mean(y)
plt.plot(x, y, "o")
plt.plot(x_bar, y_bar, "o") # point moyen
plt.show()
Sur le graphique, le point moyen apparaît comme un point supplémentaire. Dans les pages suivantes, on utilisera aussi ces moyennes pour définir une droite de régression.
3) Zone de test libre
Modifie les données (ou ajoute des individus), puis clique sur « Exécuter ». Observe comment le nuage et le point moyen se déplacent.
Exemple
import numpy as np
import matplotlib.pyplot as plt
# Données (exemple économique) : revenu x et consommation y
x = [1200, 1500, 1800, 2000, 2300, 2600]
y = [ 900, 1100, 1300, 1450, 1600, 1750]
x_bar = np.mean(x)
y_bar = np.mean(y)
plt.plot(x, y, "o")
plt.plot(x_bar, y_bar, "o")
print("moyenne des revenus =", x_bar)
print("moyenne des consommations =", y_bar)
plt.show()
Explication
Explication
Ce script trace un nuage de points (revenu, consommation) et affiche le point moyen du nuage. Il affiche aussi exactement deux lignes dans la console : la moyenne des revenus, puis la moyenne des consommations.
-
x = [...]ety = [...]xcontient les revenus (en euros) de plusieurs individus.ycontient les consommations associées, dans le même ordre.- Le point d’indice
kdu nuage est donc \((x_k, y_k)\).
-
x_bar = np.mean(x)ety_bar = np.mean(y)np.mean(x)calcule la moyenne des valeurs dex: c’est \(ar x\).np.mean(y)calcule la moyenne des valeurs dey: c’est \(ar y\).- Le point moyen du nuage est \((\bar x, \bar y)\).
-
plt.plot(x, y, "o")- Cette ligne trace le nuage de points : le marqueur
"o"signifie « afficher des points ». - Aucun segment n’est tracé entre les points.
- Cette ligne trace le nuage de points : le marqueur
-
plt.plot(x_bar, y_bar, "o")- Cette ligne ajoute un point supplémentaire, aux coordonnées \((\bar x, \bar y)\).
- Sur le graphique, on voit donc le nuage + le point moyen.
-
print("moyenne des revenus =", x_bar)- Python affiche le texte
moyenne des revenus =, puis la valeur numérique dex_bar.
- Python affiche le texte
-
print("moyenne des consommations =", y_bar)- Python affiche le texte
moyenne des consommations =, puis la valeur numérique dey_bar.
- Python affiche le texte
-
plt.show()- Cette instruction affiche la fenêtre du graphique.
Trois commandes utiles aujourd’hui
Clique sur une carte pour voir l’instruction utile.
import numpy as np
np.mean(x)
La fonction np.mean calcule la moyenne des valeurs d’une liste ou d’un tableau.
- Si
x = [x_1, ..., x_n], alorsnp.mean(x)renvoie \(rac{1}{n}\sum_{k=1}^n x_k\). - On l’utilise pour obtenir \(ar x\) (moyenne des revenus), \(ar y\) (moyenne des consommations), etc.
import matplotlib.pyplot as plt
plt.plot(x, y, "o")
plt.show()
Le marqueur "o" signifie : afficher des points (sans tracer de courbe entre eux).
- Chaque point a pour coordonnées
(x_k, y_k). plt.show()affiche le graphique.
import numpy as np
np.var(x)
np.std(x)
Ces fonctions mesurent à quel point les valeurs sont « dispersées » autour de la moyenne.
np.var(x)renvoie la variance empirique dex.np.std(x)renvoie l’écart-type (racine carrée de la variance).