TP9 : Simulation de v.a.r. suivant une loi usuelle discrète via la

publicité
ECE2-B
2015-2016
TP9 : Simulation de v.a.r. suivant une loi usuelle discrète via la
fonction rand
Pré-requis : je vous invite à consulter les chapitres de cours correspondants sur ma page (support
informatique). Pour ce TP, on pourra en particulier se reporter à la section « Tracés d’histogrammes »
du CH 8.
I Dans votre dossier Info_2a, créez le dossier TP_9.
I. Simulation d’une v.a.r. suivant une loi de Bernoulli
I Pour quel type d’expérience définit-on une v.a.r. suivant une loi de Bernoulli ?
Considérons une expérience aléatoire possédant deux issues non forcément équiprobables.
L’une de ces issues est nommée « succès » et se produit avec probabilité p ; l’autre est
nommée « échec » et se produit avec probabilité 1 − p.
Alors la v.a.r. X égale à 1 en cas de succès et 0 en cas d’échec (i.e. calculant le nombre de
succès) suit la loi de Bernoulli de paramètre p.
I Que signifie qu’une v.a.r. X suit la loi de Bernoulli de paramètre p ? (détailler)
X ,→ B (p) signifie :
X(Ω) = {0, 1}
P(X = 1) = p et P(X = 0) = 1 − p
On considère la fonction Scilab suivante.
1
2
3
4
5
6
7
8
function z = bernoulli(p)
r = rand()
if r < p then
z = 1
else
z = 0
end
endfunction
I Copier ce programme et l’enregistrer sous le nom bernoulli.sci.
Tester alors cette fonction sur plusieurs paramètres. Que renvoie-t-elle ?
Elle renvoie 1 avec la probabilité p et renvoie 0 avec la probabilité 1 − p.
I Écrire une fonction sampleBernoulli qui :
×
prend en paramètre un entier N,
(représente le nombre d’observations souhaitées)
×
prend en paramètre un réel p dans ]0, 1[,
×
renvoie un vecteur ligne vectRes contenant le résultat de la simulation de N v.a.r. indépendantes
suivant la loi B (p).
1
ECE2-B
2015-2016
I Recopier cette fonction ci-dessous.
1
2
3
4
5
6
function vectRes = sampleBernoulli(N, p)
vectRes = ones(1,N)
for i = 1:N
vectRes(i) = bernoulli(p)
end
endfunction
I Évaluer U = sampleBernoulli(10000, 0.3); Y = tabul(U, "i"). À quoi sert la commande tabul ?
On commentera en particulier la possibilité d’un argument optionnel de valeur "i" ou "d".
(on pourra se reporter à la rubrique d’aide)
L’appel tabul(U) renvoie une matrice de deux colonnes.
•
La première colonne liste les différentes valeurs présentes dans U.
•
La deuxième colonne liste l’effectif de chacune de ces valeurs.
L’argument optionnel permet de choisir l’ordre dans lequel sont listés les éléments de la
première colonne ("i" pour increasing et "d" pour decreasing).
I Évaluer alors clf(); bar(Y(:,1), Y(:,2)).
Expliquer le fonctionnement de la fonction bar en détaillant le contenu de Y(:,1) et Y(:,2).
L’appel bar(X, Y) permet de représenter un diagramme en bâtons. Le vecteur X représente
les abscisses des bâtons et le vecteur Y contient la hauteur de chaque bâton.
I Le résultat obtenu est-il cohérent ?
Le diagramme est cohérent : 1 apparaît environ 3000 fois et 0 apparaît environ 7000 fois.
I Le diagramme obtenu représente l’effectif de chaque classe.
Comment modifier l’appel pour obtenir un diagramme des fréquences ?
On divise les effectifs par l’effectif global : bar(Y(:,1), Y(:,2) / N)
II. Simulation d’une v.a.r. suivant une loi binomiale
I Pour quel type d’expérience définit-on une v.a.r. suivant une loi binomiale ?
On considère une expérience aléatoire qui consiste en une succession de n épreuves
indépendantes, chacune d’entre elles ayant deux issues : succès obtenu avec probabilité p et
échec obtenu avec probabilité q = 1 − p.
Autrement dit, l’expérience consiste à effectuer n épreuves de Bernoulli identiques et
indépendantes.
Alors la v.a.r. donnant le nombre de succès de l’expérience suit la loi binomiale de
paramètre (n, p).
I Que signifie qu’une v.a.r. X suit la loi binomiale de paramètre (n, p) ? (détailler)
X ,→ B (n, p) signifie :
X(Ω) = J0, nK
et
n k
∀k ∈ J0, nK, P(X = k) =
p (1 − p)n−k
k
2
ECE2-B
2015-2016
I Écrire une fonction binomiale qui :
prend en paramètre un entier n,
× prend en paramètre un réel p dans ]0, 1[,
× renvoie dans une variable z le résultat de la simulation d’une v.a.r. suivant la loi B (n, p).
On pourra utiliser la fonction sampleBernoulli.
×
1
2
3
function z = binomiale(n, p)
z = sum(sampleBernoulli(n, p))
endfunction
I Écrire une fonction sampleBinomiale qui :
×
×
×
×
prend en paramètre un entier N, (représente le nombre d’observations souhaitées)
prend en paramètre un entier n,
prend en paramètre un réel p dans ]0, 1[,
renvoie un vecteur ligne vectRes contenant le résultat de la simulation de N v.a.r. indépendantes
suivant la loi B (n, p).
1
2
3
4
5
6
function vectRes = sampleBinomiale(N, n, p)
vectRes = ones(1,N)
for i = 1:N
vectRes(i) = binomiale(n, p)
end
endfunction
I Détailler les commandes permettant d’obtenir le tracé d’un diagramme des effectifs à l’aide de la
fonction sampleBinomiale et de la fonction bar.
U = sampleBinomiale(N, n, p); Y = tabul(U, "i"); clf(); bar(Y(:,1), Y(:,2))
I Comment peut-on obtenir le même résultat en faisant appel à la fonction histplot ?
•
On obtient le même tracé avec histplot(n+1, sampleBinomiale(N, n, p)).
•
Attention, l’appel histplot(0:n, sampleBinomiale(N, n, p)) ne convient pas :
l’interpréteur Scilab considère alors que la première calsse est [0, 1] (et non pas [0, 1[ !).
La fonction histplot est plus adaptée lorsque l’on simule des variables à densité.
III. Simulation d’une v.a.r. suivant une loi géométrique
I Pour quel type d’expérience définit-on une v.a.r. suivant une loi binomiale ?
On considère une expérience aléatoire qui consiste en une succession infinie d’épreuves
indépendantes, chacune d’entre elles ayant deux issues : succès obtenu avec probabilité p et
échec obtenu avec probabilité q = 1 − p.
Autrement dit, l’expérience consiste à effectuer une infinité d’épreuves de Bernoulli
identiques (même paramètre) et indépendantes (le résultat de l’une ne dépend pas du
résultat des autres).
Alors la v.a.r. donnant le rang d’apparition du premier succès de l’expérience suit la loi
géométrique de paramètre p.
3
ECE2-B
2015-2016
I Que signifie qu’une v.a.r. X suit la loi géométrique de paramètre p ? (détailler)
X ,→ G (p) signifie :
X(Ω) = N∗
et
∀k ∈ N∗ , P(X = k) = p (1 − p)k−1
On considère la fonction Scilab suivante.
1
2
3
4
5
6
7
8
function rang = geometrique(p)
rang = 1
aux = bernoulli(p)
while (aux == 0)
rang = rang+1
aux = bernoulli(p)
end
endfunction
I Copier ce programme et l’enregistrer sous le nom geometrique.sci.
Tester alors cette fonction sur plusieurs paramètres. Que calcule-t-elle ?
Elle simule une v.a.r. suivant une loi géométrique de paramètre p. Plus précisément :
×
on simule les résultats successifs d’épreuves de Bernoulli de paramètre p,
×
on s’arrête dès le premier succès rencontré,
×
le compteur rang calcule le rang d’apparition de ce succès, qui est le résultat renvoyé.
I Est-on sûr que cette fonction s’arrête toujours ?
Si aux vaut toujours 0 (les épreuves de Bernoulli produisent toutes un échec), la boucle est
infinie. Cependant, la terminaison est assurée ici car un succès a lieu presque sûrement.
I Écrire une fonction sampleGeometrique qui :
×
×
×
prend en paramètre un entier N, (représente le nombre d’observations souhaitées)
prend en paramètre un réel p dans ]0, 1[,
renvoie un vecteur ligne vectRes contenant le résultat de la simulation de N v.a.r. indépendantes
suivant la loi G (p).
1
2
3
4
5
6
function vectRes = sampleGeom(N, p)
vectRes = ones(1, N)
for i = 1:N
vectRes(i) = geometrique(p)
end
endfunction
I Détailler les commandes permettant d’obtenir le tracé d’un diagramme des effectifs à l’aide de la
fonction sampleGeometrique et de la fonction bar.
U = sampleGeometrique(N, p); Y = tabul(U, "i"); clf(); bar(Y(:,1), Y(:,2))
I Peut-on obtenir le même résultat en faisant appel à la fonction histplot ?
On ne peut prévoir à l’avance le nombre de rangs différents que l’on va obtenir par cette
simulation. On ne peut donc utiliser histplot : on ne peut spécifier le nombre de bâtons à
tracer. De manière générale, on réserve histplot lorsque l’on simule des v.a.r. à densité.
4
Téléchargement