Concentration autour de l'espérance On simule $N$ échantillons de taille $n$ d'une variable aléatoire d'espérance $\mu$ et d'écart-type $\sigma$. Loi binomiale Comparaison de l'écart-type $s$ de la série des moyennes à $\sigma/\sqrt{n}$

from random import* from math import * # Renvoie la moyenne d'une liste def moyenne(L): n = len(L) m = 0 for i in range(0,n): m = m+L[i] return (1.0*m)/n # Renvoie l'écart-type d'une liste def sigma(L): n = len(L) e = 0 m = moyenne(L) for i in range(0,n): e = e +(L[i]-m)**2 return sqrt((1.0*e)/n) # Crée une liste de taille "taille" des occurences d'une va suivant une loi binomiale de paramètres n et p def bernoulli(n,p,taille): L = [0]*taille for i in range(0,taille): X = 0 for j in range(0,n): ps = uniform(0,1) c = 0 if ps < p: c = 1 X = X+c L[i] = X return L # Renvoie l'écart-type de la série ds moyennes de N échantillons def sigmaSimul(N,n,nb,p): M = [0]*N for i in range(0,N): M[i] = moyenne( bernoulli(nb,p,n) ) return sigma(M) N = 100 n = 10 nb = 30 p = 0.3 print sigmaSimul(N,n,nb,p) print sqrt(nb*p*(1-p)/n)

Proportion des échantillons pour lesquels l’écart entre la moyenne et $\mu$ est inférieur ou égal à $ks$, ou à $k \sigma / \sqrt{n}$ , pour $k = 1,\, 2,\, 3$.

from random import* from math import * # Renvoie la moyenne d'une liste def moyenne(L): n = len(L) m = 0 for i in range(0,n): m = m+L[i] return (1.0*m)/n # Renvoie l'écart-type d'une liste def sigma(L): n = len(L) e = 0 m = moyenne(L) for i in range(0,n): e = e +(L[i]-m)**2 return sqrt((1.0*e)/n) # Crée une liste de taille "taille" des occurences d'une va suivant une loi binomiale de paramètres n et p def bernoulli(n,p,taille): L = [0]*taille for i in range(0,taille): X = 0 for j in range(0,n): ps = uniform(0,1) c = 0 if ps < p: c = 1 X = X+c L[i] = X return L # Renvoie la proportion des échantillons situés à k*sigma de mu def propEcart(N,n,nb,p,k): s = 0 for i in range(0,N): e = abs(moyenne(bernoulli(nb,p,n))-nb*p) if e <= k*sqrt(nb*p*(1-p)/n): s = s+1 return 1.0*s/N # Renvoie la proportion des échantillons situés à k*ecart-type de mu def propEcart2(N,n,nb,p,k): M = [] c = 0 for i in range(0,N): M.append( moyenne(bernoulli(nb,p,n) )) s = sigma(M) for i in range(0,N): if abs(M[i]-nb*p) <= k*s: c = c+1 return 1.0*c/N N = 100 n = 10 nb = 30 p = 0.3 print "Ecart par rapport a k*sigma : " print propEcart(N,n,nb,p,1) print propEcart(N,n,nb,p,2) print propEcart(N,n,nb,p,3) print "---------------------" print "Ecart par rapport a k*ecart-type : " print propEcart2(N,n,nb,p,1) print propEcart2(N,n,nb,p,2) print propEcart2(N,n,nb,p,3) Loi donnée sous forme d'un tableau Comparaison de l'écart-type $s$ de la série des moyennes à $\sigma/\sqrt{n}$

from random import* from math import * # Renvoie la moyenne d'une liste def moyenne(L): n = len(L) m = 0 for i in range(0,n): m = m+L[i] return (1.0*m)/n # Renvoie l'écart-type d'une liste def sigma(L): n = len(L) e = 0 m = moyenne(L) for i in range(0,n): e = e +(L[i]-m)**2 return sqrt((1.0*e)/n) def moyenneP(A,B): n = len(A) m = 0 c = 0 for i in range(0,n): c = c+B[i] m = m +B[i]*A[i] return (1.0*m)/c def sigmaP(A,B): n = len(A) e = moyenneP(A,B) s = 0 c = 0 for i in range(0,n): c = c+B[i] s = s + B[i]*(A[i]-e)**2 return sqrt( (1.0*s)/c ) def echantillon(X,P,taille): n = len(P) L = [0]*n M = [0]*n s = 0 for i in range(0,n): s = s + P[i] L[i] = s for i in range(0,taille): r = uniform(0,1) k = 0 while r > L[k] and k < n: k = k+1 M[k] = M[k]+1 return M # Renvoie l'écart-type de la série ds moyennes de N échantillons def sigmaSimul(N,n,X,P): M = [0]*N for i in range(0,N): M[i] = moyenneP( X,echantillon(X,P,n) ) return sigma(M) N = 500 n = 100 X = [0,1,2,5,10] P = [0.8,0.1,0.05,0.03,0.02] print sigmaSimul(N,n,X,P) print sigmaP(X,P)/sqrt(n)

Proportion des échantillons pour lesquels l’écart entre la moyenne et $\mu$ est inférieur ou égal à $ks$, ou à $k \sigma / \sqrt{n}$ , pour $k = 1,\, 2,\, 3$.

from random import* from math import * # Renvoie la moyenne d'une liste def moyenne(L): n = len(L) m = 0 for i in range(0,n): m = m+L[i] return (1.0*m)/n # Renvoie l'écart-type d'une liste def sigma(L): n = len(L) e = 0 m = moyenne(L) for i in range(0,n): e = e +(L[i]-m)**2 return sqrt((1.0*e)/n) def moyenneP(A,B): n = len(A) m = 0 c = 0 for i in range(0,n): c = c+B[i] m = m +B[i]*A[i] return (1.0*m)/c def sigmaP(A,B): n = len(A) e = moyenneP(A,B) s = 0 c = 0 for i in range(0,n): c = c+B[i] s = s + B[i]*(A[i]-e)**2 return sqrt( (1.0*s)/c ) def echantillon(X,P,taille): n = len(P) L = [0]*n M = [0]*n s = 0 for i in range(0,n): s = s + P[i] L[i] = s for i in range(0,taille): r = uniform(0,1) k = 0 while r > L[k] and k < n: k = k+1 M[k] = M[k]+1 return M # Renvoie la proportion des échantillons situés à k*sigma de mu def propEcart(N,n,X,P,k): s = 0 mu = moyenneP(X,P) sigma = sigmaP(X,P) for i in range(0,N): E = echantillon(X,P,n) m = moyenneP(X,E) e = abs(m - mu) if e <= k*sigma/sqrt(n): s = s+1 return 1.0*s/N # Renvoie la proportion des échantillons situés à k*ecart-type de mu def propEcart2(N,n,X,P,k): mu = moyenneP(X,P) M = [] c = 0 for i in range(0,N): M.append( moyenneP(X, echantillon(X,P,n)) ) s = sigma(M) for i in range(0,N): if abs(M[i]- mu ) <= k*s: c = c+1 return 1.0*c/N N = 500 n = 100 X = [0,1,2,5,10] P = [0.8,0.1,0.05,0.03,0.02] print "Ecart par rapport a k*sigma : " print propEcart(N,n,X,P,1) print propEcart(N,n,X,P,2) print propEcart(N,n,X,P,3) print "Ecart par rapport a k*ecart-type : " print propEcart2(N,n,X,P,1) print propEcart2(N,n,X,P,2) print propEcart2(N,n,X,P,3)