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 binomialeComparaison 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 tableauComparaison 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)