Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur...

12
Classe BE2 Application de Scilab aux Probabilités 1) Les instructions à connaître rand() : génère un nombre aléatoire suivant une loi uniforme sur ]0,1[ Remarque : Pour générer un nombre aléatoire suivant une loi uniforme discrète sur ]0, n[ (n 1) on peut utiliser la syntaxe floor(n*rand())+1 rand(m,c) : génère, pour m et c deux entiers positifs non nuls, une matrice à m lignes et c colonnes remplie de nombres aléatoires suivant une loi uniforme sur ]0,1[ grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs non nuls, une matrice à m lignes et c colonnes remplie de nombres aléatoires suivant une loi usuelle donnée par son nom et ses paramètres. Les étudiants doivent connaître l’ensemble des syntaxes possibles par coeur car elles ne sont pas données dans les énoncés aux concours : Si X=(x 1 , ..., x n ) est un vecteur (voir I.3) représentant la réalisation d’un n-échantillon de variables aléatoires alors : mean(X) : calcule la moyenne empirique de X (suivant la formule 1 n n i=1 x i ) variance(X) : calcule la variance empirique de X (suivant la formule 1 n n i=1 (x i - mean(X )) 2 ) stdev(X) : calcule l’écart-type empirique de X Si X et Y sont deux vecteurs statistiques de même taille : corr(X,Y,1) : calcule la covariance empirique du couple (X,Y) Toutes les instructions matricielles telles que min, max ou sum ... restent valables lorsqu’on les utilise avec des vecteurs de probabilités. Pour simuler les n premières réalisations d’une chaîne de Markov de matrice de transition P, on utilise grand(n,’markov ’,P’,x0) où x0 est la position de départ et P la matrice de transition (voir le TD 2 de 2e année) 2) Utilisation de l’instruction rand() rand() génère un nombre aléatoire compris strictement entre 0 et 1 suivant une loi uniforme continue. Dans les annales antérieures à 2015, son usage en Turbo-Pascal (fonction : random) était indispensable dès qu’on voulait associer probas et informatique, c’est moins le cas aujourd’hui avec Scilab mais ... Application de Scilab aux probabilités Page 1/ 11

Transcript of Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur...

Page 1: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Classe BE2

Application de Scilab aux Probabilités

1) Les instructions à connaître

rand() : génère un nombre aléatoire suivant une loi uniforme sur ]0,1[

Remarque : Pour générer un nombre aléatoire suivant une loi uniforme discrète sur ]0,n[ (n≥ 1) on peut utiliser lasyntaxe floor(n*rand())+1

rand(m,c) : génère, pour m et c deux entiers positifs non nuls, une matrice à m lignes et c colonnes remplie denombres aléatoires suivant une loi uniforme sur ]0,1[

grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs non nuls, une matrice à m lignes et ccolonnes remplie de nombres aléatoires suivant une loi usuelle donnée par son nom et ses paramètres.Les étudiants doivent connaître l’ensemble des syntaxes possibles par coeur car elles ne sont pas données dans lesénoncés aux concours :

Si X= (x1, ...,xn) est un vecteur (voir I.3) représentant la réalisation d’un n-échantillon de variables aléatoires alors :

mean(X) : calcule la moyenne empirique de X (suivant la formule 1n

n∑

i=1xi)

variance(X) : calcule la variance empirique de X (suivant la formule 1n

n∑

i=1(xi−mean(X))2)

stdev(X) : calcule l’écart-type empirique de X

Si X et Y sont deux vecteurs statistiques de même taille :corr(X,Y,1) : calcule la covariance empirique du couple (X,Y)

Toutes les instructions matricielles telles que min, max ou sum ... restent valables lorsqu’on les utilise avec desvecteurs de probabilités.

Pour simuler les n premières réalisations d’une chaîne de Markov de matrice de transition P, on utilisegrand(n,’markov ’,P’,x0) où x0 est la position de départ et P la matrice de transition (voir le TD 2 de 2e année)

2) Utilisation de l’instruction rand()

rand() génère un nombre aléatoire compris strictement entre 0 et 1 suivant une loi uniforme continue. Dans lesannales antérieures à 2015, son usage en Turbo-Pascal (fonction : random) était indispensable dès qu’on voulaitassocier probas et informatique, c’est moins le cas aujourd’hui avec Scilab mais ...

Application de Scilab aux probabilités Page 1/ 11

Page 2: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

On peut encore vous demander de simuler, par inversion de la fonction de répartition de nombreuses lois à partird’une loi uniforme.

On peut également, à l’aide de rand() simuler des expériences probabilistes de type tirages de boules dans desurnes. Il convient donc de bien maîtriser cette instruction.

2.1) Simulation d’une loi de Bernoulli de paramètre p

La méthode la plus simple est de simuler une loi binomiale de paramètre (1, p) avec l’instruction :

X=grand(1,1,’bin’,1,p)

Une deuxième méthode consiste à utiliser rand. On génère une valeur comprise entre 0 et 1 qui a une probabilité pd’être inférieure à p (fonction de répartition)

(1) x=rand(p)(2) if x<p then(3) X=1(4) else(5) X=0(6) end(7) disp(X)

1.2) Simulation d’une binomiale ou d’une géométrique avec rand

Très peu d’intérêt en pratique car il vaut mieux utiliser grand mais bon, il fut un temps (2015-2017) où c’étaitencore à la mode, donc, on ne sait jamais, ça peut servir.

Exercice : avant de tourner la page, essayez de générer une binomiale de paramètres (n, p) et une géométrique deparamètre p avec rand

Application de Scilab aux probabilités Page 2/ 11

Page 3: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

1.3) Utilisation de rand dans des tirages de boules

Un grand classique de EM Lyon ou d’ECRICOME ...

Principe général : "se ramener à une Bernouilli".

On suppose qu’on a n boules noires, b boules blanches dans l’urne. La probabilité de tirer une blanche est p = bb+n .

Soit la variable aléatoire X qui prend la valeur 1 lorsqu’on tire une blanche et 0 sinon alors X suit une loi deBernouilli de paramètre p qu’on sait simuler (voir 1.1). Une fois qu’on a compris ça, on fait ... ce qu’on veut.

Exemple : Une urne contient initialement n boules noires et b boules blanches. On effectue des tirages successifs dela manière suivante : lorsqu’on tire une noire, on la remet et on rajoute c boules noires. Lorsqu’on tire une blanche,on l’enlève et on ne remet pas d’autres boules. Lorsqu’on a tiré la dernière boule blanche, le processus s’arrête.Ecrire un programme simulant la variable aléatoire Y ="nombre de tirages nécessaires pour que les tirages s’arrêtent"

Application de Scilab aux probabilités Page 3/ 11

Page 4: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Exercices :EML 2017On considère une urne contenant initialement une boule bleue et deux boules rouges.On effectue, dans cette urne, des tirages successifs de la façon suivante : on pioche une boule au hasard, on note sacouleur, puis on la replace dans l’urne en ajoutant une boule de la même couleur que celle qui vient d’être obtenue.Pour tout k de N∗, on note :

Bk l’événement : "on obtient une boule bleue au k-ième tirage"Rk l’événement : "on obtient une boule rouge au k-ième tirage"

Recopier et compléter la fonction suivante afin qu’elle simule l’expérience étudiée et renvoie le nombre de boulesrouges obtenues lors des n premiers tirages, l’entier n étant entré en argument.

function s=EML(n)b=1 // b désigne le nombre de boules bleues présentes dans l’urner=2 // r désigne le nombre de boules rouges présentes dans l’urnes=0 // s désigne le nombre de boules rouges obtenues lors des n tiragesfor k=1:n

x=rand()if ... then

...else

...end

endendfunction

ECRICOME 2016

Soient n, b et c trois entiers strictement positifs.Une urne contient initialement n boules noires et b boules blanches. On effectue l’expérience suivante, en distinguanttrois variantes.• On pioche une boule dans l’urne.

On définit X la variable aléatoire qui vaut 1 si cette boule est noire et 2 si elle est blanche.• On replace la boule dans l’urne et :

? Variante 1 : on ajoute dans l’urne c boules de la même couleur que la boule qui vient d’être piochée.? Variante 2 : on ajoute dans l’urne c boules de la couleur opposée à celle de la boule qui vient d’être

piochée.? Variante 3 : on n’ajoute pas de boule supplémentaire dans l’urne.

• On pioche à nouveau une boule dans l’urne.On définit Y la variable aléatoire qui vaut 1 si cette seconde boule piochée est noire et 2 si elle est blanche.

1. Compléter la fonction Scilab suivante, qui simule le tirage d’une boule dans une urne contenant b boulesblanches et n boules noires et qui retourne 1 si la boule tirée est noire, et 2 si la boule tirée est blanche.

function res = tirage( b , n )r = rand()if ........... thenres = 2elseres = 1endendfunction

Application de Scilab aux probabilités Page 4/ 11

Page 5: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

2. Compléter la fonction suivante, qui effectue l’expérience étudiée avec une urne contenant initialement bboules blanches, n boules noires et qui ajoute éventuellement c boules après le premier tirage, selon le choixde la variante dont le numéro est variante.Les paramètres de sortie sont :— x : une simulation de la variable aléatoire X— y : une simulation de la variable aléatoire Y

function [ x , y ] = experience ( b , n , c , variante )x = tirage ( b , n )if variante == 1 thenif x == 1 then...........else...........endelse if variante == 2 then.......................................................endy = tirage ( b , n )endfunction

1.4 ) Simulation d’une uniforme discrète à partir de rand

Soient a et b deux entiers. Pour simuler une uniforme discrète sur Ja,bK on peut utiliser grand bien entendu ou alorsutiliser rand de la manière suivante :

2) Inversion de la fonction de répartition

FONDAMENTAL! Grand classique de l’EDHEC mais qu’on a aussi vu à HEC en 2019 (où on demandait même derappeler l’aspect théorique). On commence par un petit rappel ... théorique :

Théorème : soit X une variable aléatoire réelle telle que sa fonction de répartition FX soit inversible (bijection)

Soit U la variable aléatoire FX(X), alors U suit une loi uniforme U (]0,1[)

Application de Scilab aux probabilités Page 5/ 11

Page 6: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Démonstration : ∀u ∈]0,1[, P(U ≤ u) = P(FX(X)≤ u) = P(X ≤ FX−1(u)) = FX(FX

−1(u)) = u

Donc ∀u ∈]0,1[, P(U ≤ u) = u et U suit bien une loi uniforme U (]0,1[)

Rappel : FX est croissante donc FX−1 aussi d’où P(FX(X)≤ u) = P(X ≤ F−1X (u))

Ce théorème permet de générer la loi de n’importe quelle variable aléatoire X dont la fonction de répartition estinversible à partir d’une loi uniforme U ↪→U (]0,1[) car en remontant le raisonnement de la démonstrationprécédente on montre que F−1

X (U)) suit la loi de X . En termes d’application pratique, il faut bien entendu que F−1X

soit facile à exprimer.

Le générateur aléatoire de base de Scilab étant rand() qui suit une loi uniforme U (]0,1[), on voit tout l’intérêt dece théorème

Exemple : le "grand classique" ... Si U ↪→U (]0,1[) et si λ > 0 alors X =− 1λ

ln(1−U) ↪→ E (λ ) (à rédémontrer ...)

Dès lors, on peut simuler une loi exponentielle avec l’instruction -1/lambda*log(1-rand()) sans utiliser grand

Ca ne sert à rien sauf à vous poser d’autres questions SCILAB derrière (voir paragraphe 4) ...

Exercice : Proposer une instruction simulant une loi géométrique à partir d’une loi exponentielle après avoirredémontré que si X suit une loi exponentielle de paramètre 1 et si Y = baXc+1 alors Y suit une loi géométrique deparamètre p = 1− exp(−1

a)

Réponse : 1) X=floor(log(1-rand())/log(1-p))+1 ou 2) X=floor(grand(1,1,’exp’,1/a))+1

3) Simulation d’une loi normale avec le Théorème de la Limite Centrée

On verra dans le TD1 plusieurs procédés de simulations de lois. En voici un tombé à EDHEC à l’époque du langagePascal mais transposable à Scilab ...

Soit (Xi) des var iid suivant une loi uniforme continue U (a,b) dont on prend un n-échantillon avec a = m−√

3nσ etb = m+

√3nσ alors X1+X2+...+Xn

n suit approximativement une loi normale N(m,σ2)

4) Comparaison de lois

On rencontre souvent des exercices où on vous fait démontrer qu’une v.a. X1 d’expression compliquée a en faitmême loi qu’une v.a. X2 connue ou alors qu’une suite de v.a. (Xi) avec un paramètre dépendant d’un entier nconverge en loi vers une variable aléatoire X . L’exercice se poursuit alors par 2 questions Scilab classiques :

1) dans le cas d’une comparaison entre 2 lois, on vous propose de simuler la loi X1,

2) on vous propose un algorithme à compléter ou à rédiger qui génére un grand nombre d’échantillons de X1 etde X2 et les "compare" pour "prouver" informatiquement l’égalité des lois ou dans le cas d’une convergence en loi,on vous proposera "pour n grand" de "comparer" Xn et X

Deux méthodes de comparaison : la plus répandue aux concours (Edhec et Ecricome en général) est de superposerdes histogrammes de valeurs pour un grand nombre de simulations de X1 et X2, la seconde, plus rare (Parisiennes) estde comparer les fonctions de répartition (empiriques bien entendu) sur la base de leurs courbes

Application de Scilab aux probabilités Page 6/ 11

Page 7: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Exemple : une suite de variables aléatoires suivant une loi binomiale de paramètres (n, λ

n ) converge en loi vers uneloi de Poisson de paramètre λ

A noter que cette méthode permet également de conjecturer la convergence en loi d’une suite de variablesaléatoires (Xn) vers une variable aléatoire X . En effet, pour n grand, on simule un grand nombre de réalisations de lavariable aléatoire Xn, on effectue la même simulation avec X et on compare les histogrammes de répartition desvaleurs. Voir exercice 4 en annales.

Deuxième méthode : Préliminaire : fonction de répartition empirique d’une v.a. discrète :

Soit X un vecteur comportant un grand nombre de simulations d’une v.a. discrète, en utilisant l’instruction gsort quirange les valeurs de X par ordre (croissant ou décroissant suivant les options choisies), on peut créer la fonction derépartition empirique d’une variable aléatoire.

La fonction gsort(X) utilisée sans paramètre classe les valeurs d’une série statistique X par ordre décroissant.Classement que l’on peut récupérer dans un vecteur ligne V en tapant V=gsort(X). Pour avoir un ordre croissant, onécrit V=-gsort(-X)

Application de Scilab aux probabilités Page 7/ 11

Page 8: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Exemple :X=[1 -1 -1 2 -1 4 4 -2]V=gsort(X)

Le résultat affiché est V=[4 4 2 1 -1 -1 -1 -2]Si on tape V=-gsort(-X) le résultat est : V=[-2 -1 -1 -1 1 2 4 4]

On peut également indiquer à gsort des options telles que ’i’ qui veut dire increase donc ordre croissant (pour unordre décroissant : ’d’). Il faut également ajouter un ’g’ avant ...

X=[1 -1 -1 2 -1 4 4 -2]V=gsort(X,’g’,’i’)

le résultat est : V=[-2 -1 -1 -1 1 2 4 4]

On peut donc créer la fonction de répartition empirique d’une variable aléatoire ou plutôt d’un n-échantillon d’unevariable aléatoire puisqu’on part d’un vecteur ligne X comportant n=length(X) simulations de la variable aléatoire :

Exemples :

1) Y=grand(1,1000,’exp’,1/2

2) Y=grand(1,1000,’geom’,1/2

Application de Scilab aux probabilités Page 8/ 11

Page 9: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

On peut maintenant comparer deux variables entre elles via leur fonction de répartition empirique :

Application de Scilab aux probabilités Page 9/ 11

Page 10: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Annales d’entraînement

Exercice 1 : ECRICOME 2019

Soit une variable aléatoire D prenant de manière équiprobable les valeurs 1 et −1. Ecrire une fonction d’entêtea = D(n) qui renvoie une matrice ligne contenant n réalisations de la variable aléatoire D.

Exercice 2 : EDHEC 2019

Soit n un entier naturel supérieur ou égal à 3.Une urne contient une boule noire non numérotée et n−1 boules blanches, dont n−2 portent le numéro 0 et uneporte le numéro 1. On extrait ces boules au hasard, une à une, sans remise, jusqu’à l’apparition de la boule noire.Pour chaque i de J1,n−1K, on note Bi l’événement : « le i-ème tirage donne une boule blanche », on pose Bi = Ni eton note X la variable aléatoire égale au rang d’apparition de la boule noire.On note Y la variable aléatoire qui vaut 1 si la boule numérotée 1 a été piochée lors de l’expérience précédente, et quivaut 0 sinon.

Simulation informatique.

On rappelle qu’en Scilab, la commande grand(1,1,’uin’,a,b) simule une variable aléatoire suivant la loiuniforme sur Ja,bK.

Compléter le script Scilab suivant afin qu’il simule l’expérience aléatoire décrite dans cet exercice et affiche lavaleur prise par la variable aléatoire X .On admettra que la boule noire est codée tout au long de ce script par le nombre nB+1, où nB désigne le nombre deboules blanches.

n=input(’entrez une valeur pour n : ’)nB=n-1X=1u=grand(1,1,’uin’,1,nB+1)while u<nB+1nB=——u=grand(1,1,’uin’,1,——)X=——enddisp(X,’la boule noire est apparue au tirage numéro’)

Compléter les lignes 4 et 8 ajoutées au script précédent afin que le script qui suit renvoie et affiche, en plus de celleprise par X , la valeur prise par Y .

n=input(’entrez une valeur pour n : ’)nB=n-1X=1Y=——u=grand(1,1,’uin’,1,nB+1)while u<nB+1nB=——if u==1 then Y=——endu=grand(1,1,’uin’,1,——)X=——enddisp(X,’la boule noire est apparue au tirage numéro’)disp(Y,’la valeur de Y est’)

Application de Scilab aux probabilités Page 10/ 11

Page 11: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Exercice 3 : EDHEC 2018

On dispose de trois pièces : une pièce numérotée 0, pour laquelle la probabilité d’obtenir "pile" vaut12

et celle

d’obtenir "face" vaut également12

, une pièce numérotée 1, donnant "pile" à coup sûr et une troisième pièce,numérotée 2, donnant "face" à coup sûr.On choisit l’une de ces pièces au hasard et on la lance indéfiniment.Pour tout i de {0,1,2}, on note Ai l’événement : « on choisit la pièce numérotée i ».Pour tout entier naturel k non nul, on note Pk l’événement : « on obtient "pile" au lancer numéro k » et on poseFk = Pk.On considère la variable aléatoire X , égale au rang d’apparition du premier "pile" et la variable aléatoire Y , égale aurang d’apparition du premier "face". On convient de donner à X la valeur 0 si l’on n’obtient jamais "pile" et dedonner à Y la valeur 0 si l’on n’obtient jamais "face".Informatique.On rappelle que , pour tout entier naturel m, l’instruction grand(1,1,’uin’,0,m) renvoie un entier aléatoirecompris entre 0 et m (ceci de façon équiprobable).On décide de coder "pile" par 1 et "face" par 0 .Compléter le script Scilab suivant pour qu’il permette le calcul et l’affichage de la valeur prise par la variablealéatoire X lors de l’expérience réalisée dans cet exercice.

piece = grand(1,1,’uin’,- - -,- - -)x=1if piece==0

then lancer=grand(1,1,’uin’,- - -,- - -)while lancer==0lancer=- - -x=- - -end

elseif piece==1 then x=- - -end

enddisp(x)

Exercice 4 : EDHEC 2017Je n’ai laissé de l’énoncé que les questions (dont vous admettrez les réponses sans les démontrer) permettant detraiter les question SCILAB.

Application de Scilab aux probabilités Page 11/ 11

Page 12: Classe BE2 - runetmaths.files.wordpress.com · nombres aléatoires suivant une loi uniforme sur ]0,1[grand(m,c,’nom’,paramètres) : génère, pour m et c deux entiers positifs

Application de Scilab aux probabilités Page 12/ 11