8 Cours
8 Cours
8 Cours
Exemple: On souhaite simuler une variable aléatoire X ayant pour support X(Ω) = {1, 2, 3} et
pour probabilités ponctuelles :
On va pour cela découper l’intervalle [0,1] en trois intervalles de longueurs 0.5, 0.3 et 0.2.
1 2 3
0 0.5 0.8 1
Pour simuler la variable X, on tire alors au hasard un nombre t de [0, 1] avec la fonction
rd.random() et on retourne :
• x = 1 si t ∈ [0, 0.5], ce qui se produit avec la probabilité 0.5
def simulation():
t = rd.random()
if t <= 0.5 :
x = 1
elif t <= 0.8 :
x = 2
else:
x = 3
return x
1
Cas général: Soit à présent X une variable discrète qui prend les valeurs x1 < x2 < · · · < xn
Rappelons que sa fonction de répartition est en escalier, donnée par :
0 si x < x1
i=j
∀x ∈ R, F (x) = P (X ≤ x) = X
P (X = xi ) si xj < x < xj+1
i=1
Méthode
Pour simuler la variable discrète X, on procèdera comme suit :
• on détermine l’intervalle Ik =]F (xk−1 ), F (xk )] tel que t ∈ Ik (si k = 1, I1 = [0, F (x1 )])
• on retourne xk
2 Représentations graphiques
2.1 Comparaison diagramme des fréquences / probabilités théoriques
Soit X une variable aléatoire discrète. Supposons qu’on dispose d’une fonction Loi permettant de
simuler la loi de X. Pour juger de la pertinence des simulations, on peut utiliser des représentations
graphiques. Pour cela, on procèdera comme suit :
• on crée un échantillon de taille N , c’est-à-dire un vecteur ligne x contenant N réalisations de
la fonction Loi.
• on compare graphiquement les fréquences empiriques obtenues (c’est-à-dire grâce à l’échantillon)
avec les probabilités théoriques pour vérifier la pertinence de la simulation.
Dans le cas de simulation de variables aléatoires discrètes, on va comparer plus particulièrement :
• l’histogramme de notre échantillon de taille N.
• le diagramme en bâtons des probabilités théoriques P (X = k) pour k ∈ X(Ω).
Si notre simulation est bonne, on doit constater que :
2
Exemple:
x = np.array([1,2,3])
p = np.zeros(3)
p[0] = 0.5
p[1] = 0.3
p[2] = 0.2
plt.title("Loi théorique")
plt.bar(x,h)
plt.show()
• on décide des valeurs m1 < m2 < · · · < mk qu’on souhaite représenter (dans le cas où elles
seraient en nombre infini)
• on définit les classes c = (m1 − 0.5 < m1 + 0.5 < m2 − 0.5 < · · · < mk + 0.5)
plt.hist(x,c,density=’True’,edgecolor=’k’)
3
Exemple:
N = 1000
v = np.zeros(N)
for i in range(N):
v[i] = simulation()
c = np.arange(0.5,4.5)
plt.title("Simulation")
plt.hist(v,c,density=’True’,edgecolor=’k’)
plt.show()
0 1
0 p 1
4
def bernoulli(p):
t = rd.random()
if t <= p :
x = 0
else:
x = 1
return x
def Bernoulli(p,N):
v = np.zeros(N)
for i in range(N):
v[i] = bernoulli(p)
return v
def binomiale(n,p):
u = Bernoulli(p,n)
return np.sum(u)
def Binomiale(n,p,N):
v = np.zeros(N)
for i in range(N):
v[i] = binomiale(p)
return v