Ceci est une ancienne révision du document !
en construction
Pour la définition: voir http://fr.wikipedia.org/wiki/Loi_hyperg%C3%A9om%C3%A9trique
On utilise la loi hypergéométrique au lieu de la loi binomiale lorsque la taille de l'échantillon n'est plus négligeable devant la taille de la population (>10%).
<m>Prob(k)=c_g_k_c_t-g^{n-k}}}/{{C_t}^n}</m>
Avec <m>{{C_n}^k}</m> = calcul du nombre de combinaisons de n objets pris k à k:
<m>{{C_n}^k}~=~{n!}/{k!(n-k)!}~=~{n(n-1)(n-2)…(n-k+1)}/{k!}</m>
Voici le code proposé. Il applique strictement la définition, et utilise la fonction combin() définie dans la page de l'analyse combinatoire de ce site.
#!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import division def hypgeo(k,n,g,t): """hypgeo(k,n,g,t): prob d'avoir k réussites dans un échantillon de taille n, sachant qu'il y en a g dans la population de taille t""" return combin(g,k)*combin(t-g,n-k)/combin(t,n) # Exemple d'utilisation: print hypgeo(3,5,13,52) # affiche:
Il s'agit de la somme des probabilités précédentes pour 0,1,2,…,k.
#!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import division def hypgeocum(k,n,g,t): """hypgeocum(k,n,p,t): prob d'avoir 0,1,..,k réussites dans un échantillon de taille n, sachant qu'il y en a g dans la population de taille t""" x=0 for i in range(0,k+1): x+=hypgeo(i,n,g,t) return x # Exemple d'utilisation: print hypgeocum(3,5,13,52) =>