commandes utiliseés :count(), bar(),csv.reader()

Nos vaches et nos poules obéissent-elles à la loi de Benford ?

La loi de Benford est invoquée quand on remarque que, sous certaines conditions, une série statistique de mesures vérifie une propriété surprenante : si on s'intéresse au premier chiffre de chaque mesure, on constate que la fréquence des mesures non nulles dont le premier chiffre est 1 est d'environ 30%, celle des mesures dont le premier chiffre est 2 est d'environ 18%,…, alors qu'on attendrait plutôt une répartition équilibrée des fréquences.

En savoir plus sur la loi de Benford

Les sources statistiques

Nous allons faire une expérience avec des statistiques de l'Insee. On peut obtenir sur cette page des statistiques donnant pour chaque commune de France, entre autres, l'effectif du cheptel bovin et de volailles. On récupère un énorme un énorme fichier Excel.

Dans la première feuille du tableur, la colonne BM nous donne l'effectif du cheptel bovin par commune. En cliquant sur BM, on sélectionne toute la colonne que l'on colle dans un nouveau fichier Excel ou Calc. On sauvegarde alors le nouveau fichier sous le format CSV, par exemple vac.csv . Ici, c'est simplement un fichier texte avec une seule colonne de nombres.

Vous pouvez télécharger le fichier vac.csv et l'ouvrir avec un simple éditeur de texte ou un tableur.

Plus de renseignements sur le format CSV .


Les résultats

Les bovins

Avec un script Python, on compte le nombre de communes dont l'effectif bovin est un nombre qui commence par 1, puis 2, … On obtient la distribution suivante :

Les volailles

On a mis les fréquences en ordonnées.

On lit qu'environ 30% des communes ayant un cheptel de volailles ont un effectif de volailles dont le premier chiffre est un 1. On est très proche de la situation décrite sur cette page

Les cornes

On compte le nombre de cornes de bovins en multipliant par deux et on obtient :

Les sabots

On multiplie par … 4 (bravo ! )

Toujours la même allure…

Le script Python

#module pour lire les csv
import csv
#module pour faire un graphique
from pylab import *
#ouverture du fichier 
lecture= open('vac.csv','r')
read = csv.reader(lecture, dialect='excel')
li=list(read)
#on fait un tableau forme du premier caractere
#de la premiere chaine (il n y en a qu une)
#de chaque ligne non vide
compt=[int(elem[0][0]) for elem in li if len(elem) > 0 ] 
abs=range(1,10)
#on compte
effe=[compt.count(k) for k in abs]
#on represente
bar(abs,effe,width=0.35,color='r',align='center',edgecolor='b')
show()
lecture.close()


Télécharger le script Python

Un lien amusant

Sur cette page , vous trouverez une réflexion amusante sur les touches de votre calculatrice.

fait le 16 février 2009