GOL500 – Industries de services Simulations - I Version 2016 Simulations Monte Carlo Objectifs pédagogiques À la fin de cette séance de cours, tu devras être capable: • De discerner les étapes d’une simulation Monte Carlo; • De modéliser les paramètres incertains par des variables aléatoires; • De générer des échantillons de ces variables aléatoires; • D’effectuer la simulation Monte Carlo; • D’Analyser les résultats à l’aide d’outils statistiques. 2 Simulations Monte Carlo Introduction La simulation est une méthode numérique pour analyser la performance d’un système, modèle, problème dont la description est sous forme mathématique ou sous forme de règles algorithmiques; La simulation convient lorsque la complexité d’un système est telle • L’analyse mathématique exacte est intraitable (insoluble); • L’approximation numérique ne donne pas de bon résultat; • Les paramètres ont des valeurs incertaines; • Etc. 3 Simulations Monte Carlo Introduction La simulation Monte Carlo est privilégiée lorsque les paramètres d’un système sont incertaines • Les paramètres sont le produit de processus aléatoires; • Les paramètres sont caractérisés par des distributions de probabilité. Dans ce cas, les résultats de l’analyse seront des estimations statistiques • Ces estimations pourront être de plus en plus proche de la réalité mais jamais être exactes; C’est pourquoi la simulation Monte Carlo est souvent considérée comme une technique d’aide à la décision. 4 Simulations Monte Carlo Introduction L’analyse de performance par la simulation Monte Carlo est le sujet de cette section; Elle s’applique à la plupart des problèmes sans égard à la nature du modèle de représentation ; Elle peut nous renseigner sur des mesures de performance difficiles à obtenir analytiquement; Elle peut nous aider à trouver des réponses à des questions de type « what-if »; Par contre, la simulation Monte Carlo n’est pas une technique d’optimisation • Elle aide dans la prise de décision mais elle ne peut nous donner une solution optimale. 5 Simulations Monte Carlo Section Processus de simulation 6 Simulations Monte Carlo Processus de simulation Il existe un nombre d’approche dans la réalisation d’une simulation Monte Carlo; On identifie les étapes communes suivantes: 1. Modéliser le système par des distributions de probabilité; 2. Échantillonner d’une façon répétitive ces distributions; 3. Évaluer le système à l’aide de ces échantillons; 4. Répéter un grand nombre de fois les étapes 2 et 3; 5. Comptabiliser les sorties et calculer les statistiques. Ainsi, l’attrait de la simulation Monte Carlo est aussi la simplicité de son application. 7 Nelson, B. (2013) Foundations and methods of stochastic simulation: A first course, Springer, 978-1461461593. Simulations Monte Carlo Processus de simulation Modélisation du système Dorénavant, le terme système sera synonyme de modèle, de problème, etc. • Concrètement cela signifie qu’il faut une description mathématique ou algorithme du système sous étude; • Il faut aussi déterminer la mesure ou les mesures de performance à analyser; • Il faut aussi une ou des distributions de probabilité pour représenter les paramètres incertains du système sous étude. Nous ferons, un peu plus tard, un bref survol des concepts de base en probabilité et statistique utiles pour la simulation Monte Carlo. 8 Nelson, B. (2013) Foundations and methods of stochastic simulation: A first course, Springer, 978-1461461593. Simulations Monte Carlo Processus de simulation Monte Carlo Échantillonnage répétitif des fonctions de probabilité • Le but est de générer des valeurs aléatoires pour les paramètres incertains du système; • Ces valeurs aléatoires doivent provenir des distributions choisies précédemment pour représenter les paramètres incertains; • En pratique, ces valeurs aléatoires seront générées à partir des fonctions de répartition des distribution de probabilité – une technique de base dans la génération des nombres aléatoires par ordinateur. 9 Nelson, B. (2013) Foundations and methods of stochastic simulation: A first course, Springer, 978-1461461593. Simulations Monte Carlo Processus de simulation Monte Carlo Évaluer le système sous étude à l’aide de ces valeurs aléatoires • Cette procédure est souvent intégrée dans la procédure d’échantillonnage répétitif; • La ou les mesures de performance du système est calculée en utilisant les valeurs aléatoires obtenues des distribution; • Le calcul est répété un grand nombre de fois en utilisant à chaque fois des valeurs aléatoires différentes (d’où la nécessité d’un échantillonnage répétitif); Une analogie grossière Plus un footballeur pratique son coup franc, plus il devient bon dans son exécution. Combien de coups francs? Un grand nombre, un très grand nombre! Bon. Pour la simulation Monte Carlo, la réponse ne devient pas meilleure, c’est plutôt sa variance qui est réduite. Plus la variance est petite plus la moyenne est confinée dans un petit intervalle. 10 Nelson, B. (2013) Foundations and methods of stochastic simulation: A first course, Springer, 978-1461461593. Simulations Monte Carlo Processus de simulation Monte Carlo Comptabiliser les sorties et calculer les statistiques. • L’évaluation répétitive du système sous étude donnera une série de valeurs de sortie et elles doivent être analysées par des outils statistiques; • La raison est que ces valeurs de sortie sont des produits de variables aléatoires ayant une distribution de probabilité; • On dit que les valeurs de sortie d’une simulation Montre Carlo constitue une distribution empirique et on peut estimer différentes statistiques de la population en utilisation les valeurs de l’échantillon – moyenne, écarttype, variance, minimum, maximum, asymétrie, etc. 11 Nelson, B. (2013) Foundations and methods of stochastic simulation: A first course, Springer, 978-1461461593. Simulations Monte Carlo Section Exemples de fonctionnement 12 Simulations Monte Carlo , on fait quoi? 13 Simulations Monte Carlo Estimer la valeur Il s’agit d’un exemple classique incontournable • On sait que l’aire d’un cercle est Ac = r 2 où r est le rayon du cercle; • On place ce cercle dans un carré comme ceci: • L’aire du carré est longueur largeur. • On écrit l’aire du carré en fonction du rayon r du cercle et on obtient As = (2r) (2r) = 4 r 2; • On fait le rapport de ces deux aires et isoler : Le problème est transformé en un problème de ratio de surfaces. Ac r 2 2 As 4 r 4 4 Ac As 14 Simulations Monte Carlo Estimer la valeur Il s’agit d’un exemple classique incontournable • Pour estimer le ratio Ac / As, on peut le considérer comme une estimation de proportion dans une plan cartésien; • On génère des points (x, y) aléatoirement sur le plan cartésien délimité par le carré; • Le nombre de points (x, y) tombant dans le cercle divisé par le nombre total des points donne une estimation du ratio Ac / As. Autrement dit: Ac nombrede pointsdans le cercle As nombre total de points générés nombrede pointsdans le cercle 4 nombre total de points générés 15 Simulations Monte Carlo Estimer la valeur Il s’agit d’un exemple classique incontournable • Utiliser Excel pour réaliser cette simulation Monte Carlo. Colonne B et C: les coordonnées x, y des points. On utilise la fonction rand(), distribution uniforme entre [0, 1] Colonne D: la distance du point par rapport à l’origine. Parce que rand() génère des nombres aléatoires entre [0, 1], on doit déplacer l’origine du plan cartésien à (0.5, 0.5) pour maintenir l’équiprobabilité des coordonnées. Colonne E: équation qui donne 1 si la distance par rapport à l’origine est < 0.5, c’est-à-dire si le point tombe dans le cercle. Autrement, l’équation donne 0. 16 Simulations Monte Carlo Estimer la valeur Il s’agit d’un exemple classique incontournable • Utiliser Excel pour réaliser cette simulation Monte Carlo. Cellule G2: Comptabilisation des résultats. On calcule le nombre de fois un point tombe dans le cercle par sum(E:E) divisé par le nombre de points au total. Le tout multiplié par 4. Remarque 1: Plus le nombre de points est grand plus l’estimation du ratio Ac / As s’approche de la réalité; Remarque 2: Excel génère des évènements qui provoquent la mise à jour des formules de la feuille de calcul. Ainsi, l’entrée d’une valeur dans une cellule provoque l’exécution des fonctions rand() de la feuille. Conséquemment, de nouveaux points seront générés et un nouveau résultat apparaît dans la cellule G2. C’est normal. 17 Simulations Monte Carlo Estimer la valeur Il s’agit d’un exemple classique incontournable • Utiliser Excel pour réaliser cette simulation Monte Carlo. Taille: Nombre de points utilisés dans l’estimation du ratio Ac / As multiplié par 4. Moyenne: Moyenne de l’estimation du résultat sur n répétitions. Remarque 1: Le nombre de répétitions est important pour l’analyse statistique. En pratique, on doit réaliser 103 à 106 répétitions pour que le résultat soit statistiquement significatif. Remarque 2: On constate que la simulation Monte Carlo n’est pas une méthode efficiente pour calculer la valeur . 18 Simulations Monte Carlo Estimer la valeur Il s’agit d’un exemple classique incontournable • Les espiègles peuvent rapidement constater qu’il n’est pas nécessaire d’utiliser des points aléatoires pour estimer Ac / As – il suffit de placer les points uniformément dans le carré et compter les points qui sont dans le cercle versus le nombre total de points! • Cette constatation est effectivement vraie et a été étudiée par des mathématiciens et physiciens (les premiers utilisateurs de simulation Monte Carlo); • Pour ce genre d’application, la simulation Monte Carlo nécessite moins de points que la méthode des grilles; • La méthode des grilles est difficilement réalisable lorsque la dimension du problème est élevée. 19 Simulations Monte Carlo On revient toujours au point de départ… 20 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… • Thème de romans, de chansons mélancoliques et de débats philosophiques mais est-ce vrai? Vérifions-le par la simulation Monte Carlo; 1. On génère aléatoirement un nombre de déplacements (nord, sud, est, ouest) dans le plan cartésien; 2. On vérifie la position initiale et la position finale; 3. Répéter les étapes 1 et 2 plusieurs fois et tirer une conclusion. On veut savoir combien de fois le déplacement aléatoire nous ramène au point de départ. 21 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Colonne A et B: les coordonnées x, y des déplacements. Elles sont générées aléatoirement à l’aide d’une formule du type =IF(RAND() < 0.5, A5-1, A5+1). Donc, le déplacement est relatif à la coordonnées de la cellule précédente. Remarque 1: La position initiale est à l’origine 0,0. Remarque 2: L’utilisation de la fonction rand() signifie que le déplacement est équiprobable dans les 4 directions. 22 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Un parcours type obtenu par la simulation. Remarque 1: L’utilisation des nombres entiers dans les coordonnées fait en sorte que le marcheur peut sembler revenir sur ses pas. 23 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Comptabiliser les résultats en utilisant une table de données (data table). Colonnes O et P: Il suffit d’enregistrer le dernier point du trajet puisqu’on connaît le point de départ. Ainsi, =A104 =B104 lient les cellules contenant le dernier point du trajet de cet exemple. Colonne Q: calcule un code de sortie {0, 1, 2} • 0, le dernier point coïncide avec le point départ; • 1, l’une des coordonnées du dernier point coïncide avec l’une des coordonnée du point de départ; • 2, le dernier point ne coïncide pas avec le point de départ. Remarque: Pour cet exemple, une distance 1 est considérée comme nulle. 24 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Comptabiliser les résultats en utilisant une table de données (data table). Une table de données Excel ou data table est normalement utilisée pour évaluer une fonction avec différentes valeurs d’une variable (maximum 2 variables) comme entrée. Une sorte d’analyse “what-if”. Ici, on l’utilise pour automatiser la comptabilisation des répétitions de la simulation Monte Carlo. Voici les étapes à faire: 1. Lier la dernière position du trajet dans la première ligne de la data table par =A104 et la colonne O et par =B104 dans la colonne P; Attention, il faut lier la dernière position pas copier les coordonnées de la dernière position du trajet. 25 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Comptabiliser les résultats en utilisant une table de données (data table). Ici, on l’utilise pour automatiser la comptabilisation de plusieurs répétitions de la simulation Monte Carlo. Voici les étapes à faire: 2. Sélectionner les cellules de la colonne N jusqu’à la colonne P; Il faut sélectionner la colonne N qui est à gauche de la coordonnée x. La colonne N doit être vide pour forcer la data table à répéter la première ligne de la table jusqu’à la dernière ligne de la table et ainsi comptabiliser le dernier point des trajets. Futé n’est-ce pas . 26 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Comptabiliser les résultats en utilisant une table de données (data table). Ici, on l’utilise pour automatiser la comptabilisation de plusieurs répétitions de la simulation Monte Carlo. Voici les étapes à faire: 3. 4. Choisir « Data Table » du menu « What-If Analysis » dans le groupe « Data Tools »; Dans le panneau des paramètres, laisser « Row input cell » vide et entrer dans « Column input cell » l’adresse d’une cellule qui est à l’extérieur de la data table et dont le contenu est vide. L’étape 4 est importante. Cette étape et l’étape 2 servent à forcer la data table à répéter la première ligne de la table jusqu’à la dernière ligne de la table. 27 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Comptabiliser les résultats en utilisant une table de données (data table). Voici l’affichage de la comptabilisation automatique des résultats. La data table a provoqué 20 répétitions de la simulation Monte Carlo et elle a placer le dernier point du trajet de ces répétitions dans les colonnes O et P. La colonne Q calcule le code de sortie selon les coordonnées x et y de la data table. Remarque 1: Il suffit d’augmenter la taille (lignes) de la data table pour augmenter le nombre de répétitions de la simulation; Remarque 2: plus le nombre de répétitions est élevé, plus le nombre de calculs augmente et Excel peut devenir de plus en plus lent. 28 Simulations Monte Carlo La marche aléatoire On en revient toujours au point de départ… Pour 100 déplacements aléatoires et 20 répétitions de la simulation, les résultats sont: • • • On ne revient pas au point de départ dans la majorité des trajets aléatoires; On revient à moitié (l’une des coordonnées du point est près de l’origine) est le 2e résultat le plus probable; Il est plutôt rare qu’on revienne au point de départ. Ces constatations sont tirées de 100 déplacements aléatoires et 20 répétitions seulement. Que passe-t-il lorsque l’on augmente considérablement les points aléatoires et le nombre de répétitions de la simulation? 29 Simulations Monte Carlo Ne partez pas sans eux… 30 Simulations Monte Carlo Fluctuations du taux de change Ne partez pas sans eux… un autre exemple classique • Planifier votre prochain voyage en Europe en utilisation une simulation Monte Carlo sur le taux de change 1. Cette fois on génère aléatoirement des taux de change selon une distribution normale - les taux de change ne sont pas équiprobables; 2. En analysant des données historiques, on observe, une moyenne de 0.69 $EURO pour 1 $CAD avec un écart type de 0.02 $EURO; 3. Pour être prudent, on génèrera 1000 taux de change aléatoires et calculer les coûts pour le voyage. On veut savoir combien ça pourrait nous coûter en tenant des fluctuations du taux de change. 31 Simulations Monte Carlo Fluctuation du taux de change Ne partez pas sans eux… Les dépenses pour un voyage de 10 jours en Europe. La moyenne du taux de change et l’écart type observé (données historiques) Le calcul des coûts est simplement: =(hotel+cell+train+((bouffe_jour + autres_jour) * nb_jour)) / moy_taux_change Remarque: Ces données et cette formule constituent le modèle du problème. Le paramètre incertain est le taux de change. 32 Simulations Monte Carlo Fluctuation du taux de change Ne partez pas sans eux… Utilisation d’une table de données (data table) pour comptabiliser les coûts engendrés par différents taux de change; Colonne D: Les taux de change sont générés par la formule =NORM.INV(RAND(), moy_taux_change, ecart_type) Colonne E: La première cellule est liée à la cellule B11 (=B11) qui contient la moyenne des taux de change. Colonne F: La première cellule est liée à la celluleB14 (=B14) qui contient les coûts du voyage (la formule de calcul) Attention. On a affaire à une data table et on doit lier les cellules B11 et B14. Il ne faut pas copier leur contenu dans une data table. 33 Simulations Monte Carlo Fluctuation du taux de change Ne partez pas sans eux… Utilisation d’une table de données (data table) pour comptabiliser les coûts engendrés par différents taux de change; Sélectionner les colonnes D, E et F et activer l’option « Data Table » du menu « What-If Analysis ». Entrer l’adresse $B$11 dans « Column input cell ». La cellule $B$11 est le taux de change qui sert dans le calcul des coûts du voyage. Voici un exemple de l’affichage de la data table. 34 Simulations Monte Carlo Fluctuation du taux de change Ne partez pas sans eux… Utilisation d’une table de données (data table) pour comptabiliser les coûts engendrés par différents taux de change; Note: La colonne D semble redonnant dans la data table puisque la colonne E est la colonne des taux de change. 1 Générer 3 2 Calculer Copier Cette configuration est nécessaire pour déjouer un comportement standard d’Excel. Normalement, le calcul des coûts de la colonne F provoque la mise à jour des cellules de la feuille Excel. Les formules de la colonne D sont donc calculées à nouveau. Résultat: les taux de change affichés dans la colonne D ne sont pas ceux utilisés dans le calcul de la colonne F! Le fait d’instaurer la colonne E force la data table à copier la colonne D dans E avant de faire les calculs de la colonne F. 4 35 Simulations Monte Carlo Fluctuation du taux de change Ne partez pas sans eux… Le n-ième percentile d’un ensemble de données donne la valeur à laquelle n pourcents des données sont plus petites qu’elle. Les résultats des simulations sont: • • • La moyenne des coûts est de 4 665.91$ CAD À 25e percentile : 3 362.50 $CAD À 75e percentile: 5 609.83 $CAD Ainsi, les coûts du voyage est quelque part entre 3 362.50 $ et 5609.83 $CAD. La moyenne du taux de change de l’échantillon a 95% de chance d’être contenue dans l’intervalle [0.65, 0.73] Évidemment, le taux de change peut changer en amplitude d’une façon drastique (crise, scandale, etc.). Le modèle ne peut tenir de ces changements causaux. Après tout, on utile une distribution de probabilité pour représenter la volatilité du taux de change. 36 Simulations Monte Carlo Variables aléatoires Un survol (Document: Var_Aléatoires.pptx) 37 Simulations Monte Carlo Section Identification des distributions 38 Simulations Monte Carlo Identification des distributions La première étape de la simulation Montre Carlo est la modélisation des paramètres incertains par des variables aléatoires • Souvent les distributions de probabilité nécessaires sont connus ou déduites du problème; Dans le cas où les distributions sont inconnues • Il est nécessaire de prélever les données par la mesure; • Ensuite, on doit effectuer une identification des distributions à partir de ces données o Il n’est pas recommandé d’utiliser les données mesurées directement dans la simulation Monte Carlo; o Pourquoi? 39 Simulations Monte Carlo Identification des distributions Il existe un nombre de techniques utilisées dans l’identification des distributions à partir de données mesurées; Un nombre de programmes ont été conçus pour cette tâche; • Certains programmes identifient automatiquement les distributions les plus appropriées – plus pratiques; • D’autres exigent la sélection manuelle des distributions à identifier – plus académiques. MATLAB app « dfittool » fait partie des outils qui exigent la sélection manuelle des distributions à identifier. 40 Simulations Monte Carlo Identification des distributions Démarrer MATLAB et taper dans la fenêtre de commande: dfittool ou encore sélectionner l’onglet « Apps » et cliquer sur l’icône « Distribution Fitting » Les données mesurées Indentification d’une distribution Évaluer une identification la fonction de densité (pdf), la fonction de répartition (cdf) à des points précis 41 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Entrer les données dans l’environnement de MATLAB o • Il est possible d’importer les données à partir de l’outil « Import Data » de MATLAB Cliquer sur le bouton « Data… » de « Distribution Fitting Tool » (DFT) o Choisir la variable représentant les données et donner un nom à ces données; La variable MATLAB contenant les données Le nom représentant les données 42 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Cliquer sur le bouton « Create Data Set » pour générer les données internes nécessaires pour MATLAB; • Cliquer sur le bouton « Set Bin Rules » pour créer des intervalles d’analyse o Rappel: la probabilité d’une variable aléatoire continue est définie en termes d’intervalles. Choisir la règle Freedman – Diaconis pour créer les intervalles automatiquement. Cette règle fonctionne bien dans la plupart des cas. 43 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Retourner dans la fenêtre principale de « Distribution Fitting Tool »; • Cliquer sur le bouton « New Fit » pour effectuer l’identification des données à une distribution o Choisir une distribution de la liste déroulante et cliquer sur le boutn « Apply ». Pour cet exemple, choisir la distribution exponentielle. Nous allons comparer les données mesurées à celles générées par une distribution exponentielle. 44 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • L’outil surimposera la distribution sélectionnée et celle des données dans sa fenêtre principale; Oh là là! Ces deux fonctions de densité (pdf) ne ressemblent pas du tout! Pour avoir l’heure juste, retenir la valeur de « Log likelihood » de la fenêtre « Edit Fit » 45 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • L’outil surimposera la distribution sélectionnée et celle des données dans sa fenêtre principale; L’option « Probability plot » montre la déviation des données par rapport à la distribution exponentielle. On voit aussi que la variance estimée par la distribution exponentielle est beaucoup trop grande. 46 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Recommencer les mêmes étapes en utilisant une distribution log-normale Ah! C’est beaucoup mieux. La fonction de densité de la distribution log-normale ressemble davantage à celle des données. Pour avoir l’heure juste, retenir la valeur de « Log likelihood » de la fenêtre « Edit Fit » Paramètres de la distribution log-normale estimés 47 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Recommencer les mêmes étapes en utilisant une distribution log-normale L’option « Probability plot » montre une meilleure adéquation entre les données et la distribution log-normale. On voit aussi que la variance estimée par la distribution log-normale est moins grande que celle de la distribution exponentielle. 48 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Recommencer encore une fois les mêmes étapes en utilisant une distribution normale Pas mal aussi. La fonction de densité de la distribution normale est symétrique et semble « coller » davantage aux données mesurées. Pour avoir l’heure juste, retenir la valeur de « Log likelihood » de la fenêtre « Edit Fit » Paramètres de la distribution normale estimés 49 Simulations Monte Carlo Identification des distributions Voici les étapes à entreprendre: • Normalement, il faut continuer cette identification avec plusieurs autres distributions connues et obtenir les affichages, les valeurs de « Log likelihood », les moyennes et variances et prendre une décision: Distribution Log Likelihood Exponentielle -178.68 Log-normale -154.841 Normale -151.25 Plus la valeur de Likelihood « vraisemblance » est grande plus l’identification est bonne. Plus la courbe de la fonction de densité ressemble à celle des données, plus l’identification est bonne. 50 Simulations Monte Carlo Section Génération des nombres aléatoires 51 Simulations Monte Carlo Génération des nombres aléatoires Dans la simulation Monte Carlo, après avoir identifié les variables aléatoires • On doit pouvoir générer les valeurs possibles de ces variables aléatoires; • Il faut alors utiliser des générateurs de nombres aléatoires pour cette tâche; • Pour bien des spécialistes, il s’agit en fait de nombres pseudo-aléatoires – une séquence de nombres dont la périodicité est plus ou moins longue • o Cela n’a aucune importance pour nous; o Par contre, il faut savoir bien utiliser ces générateurs. Voici comment générer des nombres aléatoires dans le contexte du chiffrier Excel. 52 Simulations Monte Carlo Génération des nombres aléatoires Un mot sur les fonctions de répartition cdf • Dans bien des cas on peut utiliser l’inverse de la fonction de répartition et des nombres aléatoires uniformes pour générer des nombres aléatoires de la distribution correspondante; • Cela est possible grâce à une remarquable propriété des fonctions de répartition: o On obtient une distribution uniforme en mettant une variable aléatoire continue dans sa propre fonction de répartition; o C’est-à-dire, si X est une variable aléatoire continue ayant une fonction de répartition F ( ) alors u = F (X) est une variable aléatoire de distribution uniforme. 53 Simulations Monte Carlo Génération des nombres aléatoires Un mot sur les fonctions de répartition cdf • • Reprenons le résultat u = F (X) et posons ceci: o On connaît u qui est une variable aléatoire uniforme (par la commande rand() d’Excel); o On connaît F qui est la fonction de répartition d’une distribution de probabilité (via les notes de cours ou par le WEB); o Comment faire pour générer les valeurs de la variable X ? On peut générer les valeurs de X en faisant ceci: o X = F -1 (u) o C’est-à-dire, calculer l’inverse de la fonction de répartition de la distribution désirée et utiliser les valeurs de la distribution uniforme [0, 1) comme argument à la fonction inversée. 54 Simulations Monte Carlo Génération des nombres aléatoires Prenons le cas de la distribution exponentielle. Sa fonction de répartition cdf est F ( x; m) Pr( X x ) yx y 0 me my dy , 1 e mx . où m est la moyenne de la variable aléatoire exponentielle. L’inverse de cette fonction de répartition est X F 1 (u; m) • 1 ln(1 u ). m En donnant à u des valeurs d’une variable aléatoire uniforme X aura des valeurs d’une variable aléatoire exponentielle. 55 Simulations Monte Carlo Génération des nombres aléatoires La méthode par transformation inverse fonctionne si on connaît la fonction de répartition et qu’elle est inversible; Bien des fonctions de répartition ne sont pas inversibles analytiquement. Par exemple, la fonction cdf de la distribution normale n’est pas inversible analytiquement xm F ( x ; m, ) . Pour ces cas, on utilisera d’autres méthodes (Box-Muller, Accept-Rejet, etc.) pour générer les nombres aléatoires. Ceci explique, en partie, la présence des fonctions cdf inverse dans Excel (et dans des bibliothèques de programmation). 56 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution uniforme Fonction: rand() Nombres aléatoires continus de distribution uniforme Valeur: valeur réelle plus grande ou égale à 0 et plus petite que 1, [0, 1). Notez bien: la valeur 1 n’est pas généré par rand() Fonction: randbetween(lo, hi) Nombres aléatoires discrets de distribution uniforme Sortie: valeur entière entre lo et hi incluant lo et hi, [lo, hi] 57 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution normale Ici on utilise l’inverse de la fonction de répartition. Donc, u doit être des nombres aléatoires uniformes. Fonction: norm.inv(u, m, ect) où u est une probabilité, m une moyenne et ect est l’écart-type Nombres aléatoires continus de distribution normale Sortie: valeurs réelles centrées autour de la moyenne m et une dispersion ect 58 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution exponentielle Fonction: Il faut utiliser explicitement la fonction de répartition inverse F -1(u) = -ln(1 - u) / m où m est la moyenne Nombres aléatoires continus de distribution exponentielle Sortie: valeurs réelles suivant une distribution exponentielle de moyenne m 59 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution log-normale Fonction: lognorm.inv(u, m, ect) où u est une probabilité, m la moyenne de ln(u) et ect est l’écart-type de ln(u) Nombres aléatoires continus de distribution log-normale Sortie: valeurs réelles suivant une distribution log-normale 60 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution binomiale Fonction: binom.inv( n, ps, u) où n est le nombre d’essais, ps est la probabilité d’un “succès” et u est la probabilité cumulative binomiale Nombres aléatoires discrets de distribution binomiale Sortie: valeurs entières donnant le nombre de "succès" en fonction du nombre d'essais n et de la probabilité cumulative binomiale u 61 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution de Poisson Fonction: poissonrnd(m) où m est la moyenne Nombres aléatoires discrets de distribution de Poisson Sortie: valeurs entières donnant le nombre d’évènements en fonction de la moyenne, dans un intervalle de temps donné. 62 Simulations Monte Carlo Génération des nombres aléatoires Nombres aléatoires de distribution de Poisson La fonction poissonrnd(m) a été créée de toute pièce à l’aide de VBA pour Excel. Voici le code: Public Function poissonrnd(m As Double) As Double Application.Volatile (True) Cet algorithme a été tiré de la page Wikipedia sur la distribution de Poisson. Dim n As Integer Dim p As Double Dim expm As Double Il faut déclarer la fonction poissonrnd comme une fonction volatile. Une fonction volatile s’exécute lors de la mise à jour (recalcule) de la feuille. n = 0: p = Rnd: expm = Exp(-m) While (p > expm) p = p * Rnd n = n + 1 Wend poissonrnd = n Le code VBA a été placé dans un module pour être accessible dans les feuilles du fichier Excel. End Function 63 Simulations Monte Carlo Génération des nombres aléatoires La liste des fonctions statistiques d’Excel 1 3 Excel dispose d’un répertoire de fonctions statistiques. Bien des fonctions sont disponibles et il n’est pas nécessaire de réinventer la roue. 2 Note: D’autres distributions de probabilité sont également implantées. 64 Simulations Monte Carlo Section Exemples d’application 65 Simulations Monte Carlo Temps de parcours 66 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport • Un aéroport international désire construire un nouveau terminal pour accommoder l’augmentation du trafic aérien; Augmentation du nombre de portes d’embarquement vers la gauche • Poste de contrôle préembarquement Présentement, le poste de contrôle pré-embarquement est situé à l’une des extrémités du corridor des portes d’embarquement; 67 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport • On retour dans ce poste de contrôle pré-embarquement de l’aéroport: o Machine à rayon X pour les effets personnels et le bagage à main; o Détecteur de métal pour les passagers; o Ceux qui déclencheront le détecteur de métal doivent passer obligatoirement dans le scanner corporel; 68 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport • Un aspect qui soulève des questionnements sur le projet d’agrandissement est: o Le temps nécessaire pour les passagers de se rendre à leur porte d’embarquement après les travaux d’agrandissement. Poste de contrôle préembarquement 69 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport • Le temps nécessaire pour se rendre à leurs portes d’embarquement o Le trajet le plus long (partant du poste de contrôle préembarquement) est de 1.5 km; o Selon les mesures prélevées, la vitesse moyenne de marche est 5 km/h pour 70% des passagers et de 4 à 2 km/h pour les 30% restants. 30 70 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport • Le temps nécessaire pour se rendre à leurs portes d’embarquement. Au poste de contrôle préembarquement o Normalement, la machine à rayon X n’engendre pas de délai appréciable; o Par contre, ceux qui ont déclenché l’alarme du détecteur de métal doit passer en moyenne 1 à 5 minutes dans le scanner corporel 71 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport Au poste de contrôle pré-embarquement o On a identifié une distribution log-normale comme celle qui s’approche la plus les données prélevées: m =0.2, = 0.2; o La probabilité d’un déclenchement du détecteur de métal est situé à 1.25 fois la médiane de cette distribution; o Une fois l’alarme est déclenché, le passager doit passer de 1 à 5 minutes dans le scanner corporel. Détecteur de métal Bagages à main • Scanner corporel 72 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport 1. Modéliser le problème par des distributions de probabilité; o o o Pour la section de 1.5 km (du poste de sécurité jusqu’à la dernière porte d’embarquement) - distribution uniforme: o 70% des chances à 5 km/h; o 10% à 4 km /h; o 10% à 3 km / h; o 10% à 2 km / h. Déclenchement du détecteur de métal: o Distribution log-normale avec m = 0.2 et = 0.2; o 1.25 fois la médiane de la distribution; Le temps passé dans le scanner corporel – distribution uniforme entre 1 minute à 5 minutes. 73 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport 2. Échantillonner d’une façon répétitive ces distributions 5 km /h 4 km /h 3 km /h 2 km / h Cette table décrit les probabilités des vitesses de déplacement. =VLOOKUP(RAND()*100, $G$6:$H$9, 2) =LOGNORM.INV(RAND(), 0.2, 0.2) =D6 + A6 =(RAND() * 4 + 1) * 60 * C6 =IF(B6 > 1.25 * MEDIAN(B6:B1005), 1, 0) 74 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport 3. Évaluer le système à l’aide de l’échantillon; Cette tâche est réalisée directement dans la construction de la feuille de calcul =D6 + A6 75 Simulations Monte Carlo Exemples d’application Temps de parcours dans un aéroport 4. Répéter un grand nombre de fois les étapes 2 et 3 Nous avons utiliser 1000 valeurs pour effectuer les calculs. 5. Comptabiliser les sorties et calculer les statistiques Il y a une seule sortie qui est le temps de parcours. Selon les résultats de la simulation: • Le temps moyen du parcours est 22.5 minutes; • 50% des passagers prend moins que 18 minutes à parcourir le trajet; • 75% des passagers prend moins que le temps moyen pour le trajet • 100% des passagers peut parcourir le trajet en moins de 50 minutes. 76 Simulations Monte Carlo La part du marché 77 Simulations Monte Carlo Exemples d’application Croissance de la part du marché • Sans doute l’une des questions la plus importante pour toute entreprise de services; • Au lieu d’estimer la croissance par des points (max, moyenne, meilleur des cas, etc.), nous allons l’estimer à l’aide d’une simulation Monte Carlo par des variables telles: o PIB: produit intérieur brut; o CM: croissance/contraction du marché; o TM: taille du marché; o PM: croissance / contraction de la part du marché; o VV : volume des ventes estimée par Monte Carlo. 78 Simulations Monte Carlo Exemples d’application Croissance de la part du marché 1. Modéliser le problème par des distributions de probabilité; Pour faciliter la compréhension de la simulation Monte carlo, nous utilisons un modèle simpliste: o Au lieu de prendre une valeur moyenne, on utilisera une o variable aléatoire pour représenter cette contribution du secteur dans le PIB canadien. PIB: produit intérieur brut – distribution normale; Le PIB peut donc augmenter ou contracter selon une probabilité de distribution normale; CM: croissance du marché = PIB z où z est une variable aléatoire représentant la contribution du secteur de services dans le PIB. Cette contribution peut augmenter ou contracter selon une distribution normale. Par exemple, les services TIC représentent 4,9% du PIB canadien en 2011 et 4,3% en 2014. 79 Simulations Monte Carlo Exemples d’application Croissance de la part du marché 1. Modéliser le problème par des distributions de probabilité; Pour faciliter la compréhension de la simulation Monte carlo, nous utilisons un modèle simpliste: o La taille courante du marché est comptabilisée par des organismes gouvernementaux. Elle est une valeur o considérée comme une constante. TM: taille du marché = Taille courante (CM + 1) La croissance ou décroissance du section d’activité influence directement la taille du marché. Dans ce modèle cette influence est simplement linéaire. PM: croissance / contraction de la part du marché = TM + gain. La part du marché est la taille du marché PLUS le gain (ou la perte) du marché réalisé par notre entreprise. On modèlise ce gain (ou cette perte) par une variable aléatoire de distribution normale. 80 Simulations Monte Carlo Exemples d’application Croissance de la part du marché 1. Modéliser le problème par des distributions de probabilité; Pour faciliter la compréhension de la simulation Monte carlo, nous utilisons un modèle simpliste: o VV: volume de vente = TM PM Ce volume de vente est linéaire dicté par la taille du marché et la part du marché. On peut augmenter le réalisme en utilisant des modèles économiques publiés mais la démarche d’une simulation Monte Carlo demeure la même. 81 Simulations Monte Carlo Exemples d’application D’où viennent les paramètres des distributions? Ils sont souvent obtenus par l’identification des distributions sur des données empiriques. Croissance de la part du marché 2. Échantillonner d’une façon répétitive ces distributions L’échantillon doit avoir un grand nombre de données. Ici on a créé 1000 lignes pour un échantillon de 1000 valeurs pour chacune des variables aléatoires. =NORM.INV(RAND(); 2; 1) =NORM.INV(RAND(); 1.5; 5) =NORM.INV(RAND(); 2%; 2%) 82 Simulations Monte Carlo Exemples d’application Croissance de la part du marché 3. Évaluer le système à l’aide de l’échantillon; Cette tâche est réalisée directement dans la construction de la feuille de calcul Ici on calcule la moyenne du volume de vente de l’échantillon (1000 valeurs). =AVERAGE(G6:G1005) =A6 * B6 =$E$1 * (C6 + 1) =$H$1 + E6 =D6 * F6 83 Simulations Monte Carlo Exemples d’application Croissance de la part du marché 4. Répéter un grand nombre de fois les étapes 2 et 3 Cette tâche est réalisée à l’aide d’une data table d’Excel • • • La procédure de création d’une data table est identique à celle utilisée dans les exemples précédents. La data table sert uniquement à provoquer la MAJ automatique de la feuille un nombre de fois (au lieu de la façon manuelle par shift-F9) La data table aura 1000 lignes pour répéter 1000 le calcule de la moyenne du volume de vente (cellule I5). L’importance est de lier ces deux cellule à la cellule de la moyenne du volume de vente (=$I5) pour force la mise à jour de toutes les lignes des colonnes de la feuille et le recalcule de la cellule I5. 84 Simulations Monte Carlo Exemples d’application Croissance de la part du marché 5. Comptabiliser les sorties et calculer les statistiques Il y a une seule sortie qui est la moyenne du volume de vente; Les statistiques sont calculées à partir des résultats de la data table cellule K6 à L1005 Minimimum de la moyenne du volume de vente =MIN(L6:L1005) Maximum de la moyenne du volume de vente =MAX(L6:L1005) • La moyenne du volume de vente est calculée à l’aide de 1000 valeurs pour chacune des variables aléatoires de distribution normale; • La data table exécution 1000 fois le calcul de la moyenne du volume de vente; • On a donc au total 1 000 000 répétitions pour cette simulation Monte Carlo. La médiane de la moyenne du volume de vente =MEDIAN(L6:L1005) 85 GOL500 Industries de services Prochaine séance Encore de la simulation! 86 Fin de la séance #7