En statistique, la fréquence est le rapport entre le nombre d’issues favorable à un évènement et le nombre total des issues. (ou la population totale). La fluctuation de fréquence est un phénomène que l’on peut rencontrer lorsqu’on fait des calculs de probabilité. (Voire cours de statistique)
Dans ce cours de mathématique nous allons voir les éléments suivants :
- Les paramètres qui influent sur la fluctuation de fréquence.
- Les effets de la fluctuation de fréquence sur les résultats d’un calcul de probabilité
- Comment faire pour faire des probabilités fiables
- Et en fin de cours nous allons travailler sur un script python pour simuler un phénomène aléatoire afin de mettre en évidence la fluctuation de fréquence.
Fluctuation de fréquence dans une expérience aléatoire
Imaginons que j’ai dans une urne 4 boules de forme identique mais de couleurs différentes (rouge, bleu, noir et vert). Les boules ne sont pas identifiables au touché. Si je ferme les yeux et je tire au hasard une boule, théoriquement chacune des boules a une probabilité de ¼ = 0,25 = 25% d’être tirée.
Alors si cette probabilité est juste, le fait de tirer 20 fois une boule au hasard, chaque boule devra être tirée exactement 5 fois.
Voici les résultats d’un tirage au hasard de 20 fois.
- Noir Bleu Vert Bleu
- Vert Vert Vert Noir
- Noir Bleu Vert Bleu
- Bleu Rouge Vert Noir
- Rouge Bleu Bleu Bleu
Comme on peut le constater, les fréquences de tirage des boules ne sont pas toutes les mêmes. Les boules bleues sortent plus (8 fois) que les vertes (6 fois). Les noires sont sorties 4 fois et les rouges 2 fois.
Fréquence théorique
La probabilité de tirer au hasard une des boules est égale à 0,25. La probabilité est aussi appelée fréquence théorique. On remarque donc que pratiquement et avec un échantillon de 20 tirages, les fréquences réelles ne sont pas égales à la fréquence théorique.
Voici le tableau correspondant à cet échantillon :
Couleur | Noir | Bleu | Rouge | Vert | Total |
Effectif | 4 | 8 | 2 | 6 | 20 |
Fréquence | 4/20 = 0,2 | 0,4 | 0,1 | 0,3 | 1 |
Calcul de l’étendu :
L’étendu est la différence entre la plus grande et la plus petite valeur de fréquence. Dans ce cas précis, l’étendu = 0,4 – 0,1 = 0,3.
C’est un écart très important. C’est même plus grand que la fréquence théorique.
Fluctuation d’échantillonnage
On peut se poser la question suivante : si on refait un autre tirage avec un échantillon égal à 20, que se passerait il ?
On remarque que pour un même échantillon on peut avoir différentes fréquences, et donc différentes valeurs pour les étendus.
Ce phénomène s’appelle la fluctuation d’échantillon. Et il est observé lorsqu’on étudie le même caractère sur plusieurs échantillons de même taille et d’une même population. Et quand on observe que les résultats changent selon l’échantillon.
Fluctuation de fréquence
Prenons maintenant l’ensemble des expériences réalisées. Il y a eu au total 80 tirages (4 échantillons de 20). Ce qui revient à considérer un échantillon plus grand de 80. Voici le tableau correspondant à cet échantillon :
Couleur | Noir | Bleu | Rouge | Vert | Total |
Effectif | 21 | 19 | 25 | 15 | 100 |
Fréquence | 0,2625 | 0,2375 | 0,3125 | 0,1875 | 1 |
Étendu | 0,3125 – 0,1875 = 0,125 |
Ce que l’on peut remarquer c’est que l’étendu a beaucoup baissé par rapport aux expériences effectuées avec des échantillons plus petits.
Alors on peut émettre l’hypothèse suivante : est ce qu’en augmentant encore plus la taille de l’échantillon on peut réduire encore la valeur de l’étendu.
Algorithme et script python pour mesurer la fluctuation de fréquence
On peut simuler cette expérience aléatoire en utilisant un script python. Voici un algorithme qui permet de faire cela :
- Initialiser un compteur qui compte le nombre de fois les couleurs tirées
- Fixer une taille de l’échantillon
- Répéter autant de fois que la taille de l’échantillon les deux instructions suivantes :
- Choisir aléatoirement une couleur de la liste de 4 couleurs
- Incrémenter le nombre de fois que chaque couleur a été tirée
- Afficher le compteur
Et voici le script python qui permet de faire cette expérience aléatoire :
from random import *
conteur = {"Rouge":0, "Bleu":0, "Noir":0, "Vert":0}
echantillon = 1000
for i in range(echantillon):
x = choice(list(conteur.keys()))
conteur[x] +=1
print(conteur)
Description du script python
Alors pour effectuer cette expérience aléatoire j’ai utilisé la fonction choice de la bibliothèque random. Pour plus de détails sur cette bibliothèque et ses fonctions, on peut consulter l’article qui détaille les cinq plus importantes fonctions pour simuler le hasard.
Ensuite pour stocker les résultats de l’expérience aléatoire, j’ai préféré utiliser une variable de type dictionnaire. Je trouve que c’est plus pratique d’utiliser ce type car il permet de centraliser les résultats dans une seule variable et de réduire ainsi la taille du sript. Pour plus de détail sur l’utilisation des dictionnaires on peut consulter la documentation officielle de python. Les dictionnaires sont indexés par des clés qui peuvent être de n’importe quel type.
L’attribut .keys() qui est appliqué au dictionnaire permet de créer une liste avec toutes les clés du dictionnaire.
Le résultat que j’ai obtenu avec ce programme python avec un échantillon de 1000 tirages est le suivant :
{‘Rouge’: 262, ‘Bleu’: 250, ‘Noir’: 252, ‘Vert’: 236}.
Aussi, il est judicieux d’ajouter à la fin du programme précédent, les lignes de codes suivantes qui permettent de calculer les fréquences.
Code python pour le calcul de fréquence :
print("Echantillon : ", echantillon)
print("Effectifs : ", conteur)
frequences = {}
for k in conteur.keys():
frequences[k] = conteur[k]/echantillon
max_f = max([frequences[f] for f in frequences.keys()])
min_f = min([frequences[f] for f in frequences.keys()])
etendu = max_f - min_f
print("Fréquences : ", frequences)
print("Etendu : ", etendu)
Et finalement on obtient le résultat suivant pour plusieurs échantillons de tailles différentes :
Échantillon : 1000
Effectifs : {‘Rouge’: 219, ‘Bleu’: 260, ‘Noir’: 255, ‘Vert’: 266}
Fréquences : {‘Rouge’: 0.219, ‘Bleu’: 0.26, ‘Noir’: 0.255, ‘Vert’: 0.266}
Étendu : 0.047
Echantillon : 5000
Effectifs : {‘Rouge’: 1230, ‘Bleu’: 1230, ‘Noir’: 1253, ‘Vert’: 1287}
Fréquences : {‘Rouge’: 0.246, ‘Bleu’: 0.246, ‘Noir’: 0.251, ‘Vert’: 0.257}
Etendu : 0.011
Echantillon : 10000
Effectifs : {‘Rouge’: 2560, ‘Bleu’: 2491, ‘Noir’: 2481, ‘Vert’: 2468}
Fréquences : {‘Rouge’: 0.256, ‘Bleu’: 0.249, ‘Noir’: 0.248, ‘Vert’: 0.247}
Etendu : 0.009
Echantillon : 100000
Effectifs : {‘Rouge’: 25091, ‘Bleu’: 25087, ‘Noir’: 25089, ‘Vert’: 24733}
Fréquences : {‘Rouge’: 0.251, ‘Bleu’: 0.251, ‘Noir’: 0.251, ‘Vert’: 0.247}
Etendu : 0.004
Echantillon : 1000000
Effectifs : {‘Rouge’: 250835, ‘Bleu’: 250068, ‘Noir’: 250301, ‘Vert’: 248796}
Fréquences : {‘Rouge’: 0.251, ‘Bleu’: 0.25, ‘Noir’: 0.25, ‘Vert’: 0.249}
Etendu : 0.002
Donc on remarque que plus l’échantillon est grand, plus l’étendu des fréquences diminue et plus les fréquences deviennent stables et tendent vers la fréquence théorique.
Exercice de fluctuation de fréquence
Pour ceux qui veulent aller encore plus loin, voici un exercice qui reprend les principes et notions vus dans ce cours.
Lors d’un jet d’une pièce de monnaie, il y a 50% de chance de tomber sur face et 50% de chance de tomber sur pile. Simuler cette expérience avec un script python et tracer le résultat sous forme d’un diagramme en secteur.
Voici un exemple de visuel que l’on peut afficher.
Voilà encore un exemple qui illustre la fluctuation de fréquence. Et le fait de plus on augmente le nombre d’échantillon plus on tend vers la probabilité ou la fréquence théorique.
Et une autre image qui illustre la fluctuation d’échantillonnage avec un échantillon de 20 lancers.