« Mathématiques avec Python et Ruby/Statistique inférentielle avec Python » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 77 :
 
<source lang="python">
from random import *
m=[] #liste des moyennes des echantillons
s=[] #liste des ecarts-types des echantillons
Ligne 99 ⟶ 100 :
 
{{Cadre|Sur les 100 000 électeurs d'une ville, 43 000 s'apprêtent à voter pour le maire sortant, mais celui-ci ne le sait pas. Alors il commande un sondage, et l'institut de sondage constitue un échantillon de 100 habitants sur lesquels 52 disent vouloir voter pour le maire. Fou de joie, celui-ci achète le champagne pendant la campagne, avant les élections, et se fait battre lors des élections. Il accuse l'institut de sondage d'avoir triché. Qu'en penser?}}
 
Comme ''Python'' sait faire des tirages sans remise, on peut constituer une liste ordonnée de ''pour'' et de ''contre'', et y puiser des échantillons au hasard. On peut estimer la proportion d'entre eux qui donne de faux espoirs au maire (au moins 50 ''pour'' parmi les 100).
 
<source lang="python">
from random import *
population=['contre' for n in range(57000)]+['pour' for n in range(43000)]
 
print(len(population))
 
#On choisit 1000 echantillons de 100 et on compte combien sont favorables au maire:
p=len([n for n in range(1000) if len([v for v in sample(population,100) if v=='pour'])>=50])
 
print(p)
print(p/1000)
</source>
 
L'échantillon choisi par l'institut de sondage, s'il a réellement été choisi au hasard, était favorable au maire avec une probabilité d'environ 0,09. Cette probabilité n'est pas si ridicule que ça, et l'institut de sondage aurait pu répondre au maire "c'est la faute à pas de chance": Il est tombé sur les 9 % d'échantillons favorables...
 
Plus sérieux (et plus prudent, pour éviter la vindicte de l'ancien maire, désormais dans l'opposition, et qui a maintenant le temps de mener une croisade contre les instituts de sondage) eût été la publication par l'institut de sondage, d'un [[w:Intervalle de confiance|intervalle de confiance]], par exemple à 95% (c'est-à-dire un intervalle qui contient en moyenne 95% des échantillons). Expérimentalement, on peut s'inventer un intervalle et compter la fréquence des échantillons de 100 personnes qui sont dedans. Ce sera un estimateur de la probabilité que l'échantillon soit représentatif de l'ensemble de la population:
 
<source lang="python">
from random import *
 
h=0.1
 
p=0
for n in range(1000):
pourcentage=len([v for v in sample(population,100) if v=='pour'])/100
if pourcentage>0.52-h and pourcentage<0.52+h:
p+=1
 
print(p/1000)
</source>
 
On voit que l'intervalle ''[0,42 ; 0,62]'' obtenu avec ''h=0,1'' est un intervalle à 50 %. En modifiant la valeur de ''h'' on constate que si ''h'' diminue (l'intervalle rétrécit), on perd de la confiance (la probabilité qu'il soit bon diminue aussi), et qu'il faut donc augmenter ''h'' si on veut arriver à 95 % de confiance. On voit aussi que pour ''h'' environ égale à 2, environ 98 % des échantillons sont dans l'intervalle obtenu, qui est donc un intervalle à 98 %.
 
==Pour des moyennes==