commandes utiliseés : boxplot(),

Simulation de sondages avec Python

Dans un pays imaginaire, la probabilité qu'un citoyen pris au hasard vote oui à un référendum est 0,48. On va simuler l'organisation de :

  1. 500 sondages sur un échantillon de 500 personnes
  2. 500 sondages sur un échantillon de 1 00 personnes
  3. 500 sondages sur un échantillon de 2 000 personnes
  4. 500 sondages sur un échantillon de 5 000 personnes
  5. 500 sondages sur un échantillon de 10 000 personnes
  6. 500 sondages sur un échantillon de 20 000 personnes

et on analyse les résultats obtenus, chaque sondage fournissant une fréquence de personnes déclarant voter oui.

On a créé 6 boites à moustaches décrivant chacune la répartition des 500 fréquences obtenues.

Extrait de code

#-*- coding:Utf-8 -*-

from random import *
import math
from pylab import*

def sondage(p,n,k):
    t=0
    for k in range(n):
        t=t+math.floor(p+random())
    t=t/n    
    return t
##probabilité du OUI
p=0.48

##nombre de sondages
x=500

bilan5=[sondage(p,500,k) for k in range(x)]
bilan10=[sondage(p,1000,k) for k in range(x)]
bilan20=[sondage(p,2000,k) for k in range(x)]
bilan50=[sondage(p,5000,k) for k in range(x)]
bilan100=[sondage(p,10000,k) for k in range(x)]
bilan200=[sondage(p,20000,k) for k in range(x)]

bilan=(bilan5,bilan10,bilan20,bilan50,bilan100,bilan200)
boxplot(bilan,0,vert=0,sym="o")
##enregistrer l'image
savefig('boite.png')
##visualiser l'image
show()


Télécharger le script complet

Commentaire

On importe le module random et le module math pour les fonctions random() et floor()

On importe pylab pour tout ce qui est graphique : fonction boxplot(), savefig(), show() et tout ce qui permet d'améliorer la présentation (voir script complet). Voir cette page

On a défini une fonction sondage() qui dépend de p (probabilité de vote oui et n (effectif de l'échantillon); malgré les apparences, elle ne dépend pas de k (c'est juste un artifice pour créer un tableau de fréquences).

fait le 23 janvier 2009