====== Échantillonnage ======
On part d'une loi de probabilité quelconque. On souhaite observer ce qui se passe quand on prélève des échantillons et qu'on calcule des moyennes.
===== Loi quelconque =====
Dans le code ci-dessous, on définit une table ''DATA'' qui donne une certaine répartition. Vous voyez qu'il n'y a pas de 9, qu'il y a beaucoup de 12... cela définit la probabilités d'obtenir les différentes valeurs.
# echantillonnage.py
import numpy as np
import matplotlib.pyplot as plt
from random import choice
DATA = (1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 19, 19)
print("moyenne pop :", np.mean(DATA))
print("écart-type pop :", np.std(DATA))
valeurs, effectifs = np.unique(DATA , return_counts=True)
plt.bar(valeurs, effectifs)
plt.show()
Le graphique vous donne un aperçu de la répartition des valeurs dans cette population.
Notez les valeurs de la moyenne et de l'écart-type.
Quand vous aurez vu le graphique, vous pourrez supprimer les 3 dernières lignes du code.
def alea():
"""
renvoie un nombre aléatoire entre 0 et 20 selon la répartition de DATA
"""
return choice(DATA)
===== Échantillon de taille n =====
On veut une relève un échantillon de taille n.
def echantillon(n:int):
"""
renvoie un tableau contenant n valeur prise aléatoirement
"""
# à vous
===== Beaucoup d'échantillons =====
On va prélever beaucoup d'échantillons d'une certaine taille ''n'', pour chaque échantillon on va calculer la moyenne, puis on va représenter sur histogramme les moyennes trouvées.
n = 10 # choix de n
resultats = []
for i in range(1000):
e = echantillon(n)
m = np.mean(e)
resultats.append(m)
print("moyenne des moyenne :", np.mean(resultat))
print("écart type :", np.std(resultat))
plt.hist(resultats, density = True)
plt.show()
Vous pouvez changer la valeur de ''n'' pour voir l'effet sur le résultat.
Vous pouvez aussi faire le même travail sur les écarts-types.