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