Probabilités & statistiques · L2 · Section 4/9
Simulation Monte Carlo
Progression
#Simulation Monte Carlo
La simulation Monte Carlo approxime une quantité déterministe (probabilité, espérance, intégrale) par la moyenne empirique de tirages aléatoires. Quand un calcul exact est impossible ou long à établir, simuler donne une estimation accompagnée de son erreur. La méthode remplace la résolution formelle par la répétition, et fournit un instrument de vérification universel: toute formule peut être confrontée à un simulateur.
Objectifs d’apprentissage
- Estimer une probabilité par une fréquence simulée et une espérance par une moyenne simulée, avec graine fixée.
- Quantifier l’erreur d’estimation par l’erreur standard et un intervalle de confiance, et relier sa décroissance en 1/√n au théorème central limite.
- Valider un simulateur sur un cas où la valeur exacte est connue avant de l’appliquer au cas inconnu.
Prérequis: variables aléatoires (espérance, variance, TCL), bases de Python (
random).
#Principe et cadre d’emploi
Soit une quantité d’intérêt θ = E[g(X)] pour X de loi connue (le cas « probabilité d’un événement A » correspond à g = indicatrice de A). La méthode:
- Modéliser: identifier la loi de X et la fonction g. Toute l’exactitude de la méthode réside ici.
- Simuler: générer X₁, …, Xₙ selon cette loi, indépendamment.
- Estimer: la moyenne empirique ĝₙ = (1/n) Σ g(Xᵢ) converge vers θ par la loi des grands nombres.
- Quantifier: l’erreur-type de l’estimation vaut σ̂/√n où σ̂ est l’écart-type empirique des g(Xᵢ); un intervalle approximatif à 95% est ĝₙ ± 1,96·σ̂/√n, justifié par le TCL.
Hypothèses: les tirages sont indépendants et suivent exactement la loi visée. La première dépend du générateur pseudo-aléatoire, la seconde de votre implémentation. Un biais de modélisation (mauvaise loi, dépendance cachée) n’est pas corrigé en augmentant n: plus n grandit, plus l’estimation converge vers la mauvaise valeur, avec une confiance croissante.
#Exemple 1: estimer π
On tire n points uniformément dans le carré [0,1]² et on compte ceux qui tombent dans le disque inscrit (centre (0,5; 0,5), rayon 0,5). La probabilité de tomber dans le disque vaut le rapport des aires, (π·0,5²)/1 = π/4: d’où l’estimateur π̂ = 4·k/n où k est le nombre de points dans le disque.
Avec la graine 42: π ≈ 3,2000 (n = 100), 3,1800 (n = 1000), 3,1392 (n = 10⁴), 3,1403 (n = 10⁵); erreurs 0,058, 0,038, 0,0024, 0,0013. Diviser l’erreur par 10 exige environ 100 fois plus de tirages.
#Exemple 2: espérance et erreur standard
Estimons E[X²] pour X normale centrée réduite: valeur exacte 1. La simulation fournit l’estimation, l’erreur-type, et un intervalle qui doit couvrir la vraie valeur environ 95 fois sur 100 si on répète l’expérience.
Avec la graine 42 et n = 10 000: estimation 0,9992, erreur-type 0,0140, IC [0,9717; 1,0268], qui couvre bien 1. Notez que g(X) = X² est très asymétrique (loi du χ² à 1 degré de liberté): le TCL s’applique à la moyenne, pas à g(X) elle-même, et c’est suffisant.
#Exemple 3: processus, avec validation par calcul exact
Une marche aléatoire part de 0 et fait des pas ±1 équiprobables. Quelle est la probabilité de repasser par 0 au moins une fois en n pas? Ici le calcul exact est facile (programme de propagation de loi ci-dessous), ce qui permet de valider le simulateur avant de l’utiliser sur des variantes sans formule.
Avec 2 000 simulations (graine 1): 0,758 contre exact 0,754 (10 pas), 0,889/0,888 (50), 0,924/0,920 (100), 0,971/0,964 (500). L’écart de simulation décroît en 1/√2000 ≈ 0,022: c’est exactement l’ordre de grandeur observé. La probabilité de retour tend vers 1: la marche est récurrente en dimension 1 (elle revient presque sûrement), mais le temps moyen du premier retour est infini.
#Bonnes pratiques
Reproductibilité: fixez la graine (random.seed) en tête de script. Sans elle, aucun chiffre n’est vérifiable par un tiers, ni par vous deux semaines plus tard.
Budget de calcul: déboguez avec n petit (1 000) où tout va vite, produisez le chiffre final avec n grand. L’erreur-type affichée dit quand vous êtes assez précis.
Validation systématique: avant de faire confiance à un simulateur sur le cas inconnu, exécutez-le sur un cas où la réponse exacte est connue (valeur fermée, petite variante calculable par énumération exhaustive). L’exemple 3 montre le motif: simulateur et calcul exact côte à côte.
Réduction de variance: plutôt que de multiplier n par 100, divisez σ. Échantillonnage préférentiel (tirer où g contribue le plus, en corrigeant par le rapport de vraisemblance), variables antithétiques (appairer u et 1−u pour annuler une partie des fluctuations), stratification (répartir les tirages dans des strates disjointes). Diviser σ par 2 vaut mieux que quadrupler n: même gain d’erreur, même coût réduit.
#Applications
Finance: valorisation d’options et mesures de risque par simulation de trajectoires. Physique et ingénierie: intégration en grande dimension, fiabilité des systèmes, tolérance dimensionnelle. Informatique: analyse d’algorithmes probabilistes, test de charge, bootstrap en statistique, méthodes MCMC pour l’échantillonnage de lois complexes. Partout, la discipline est la même: modèle explicite, graine fixée, erreur calculée.
#Quiz
#Exercices
Exercice 1 (intégrale par Monte Carlo). Estimez l’intégrale de e^(−x²) sur [0,1] par Monte Carlo avec n = 100 000 et graine 42. Comparez à la valeur exacte 0,7468 (soit (√π/2)·erf(1)).
Éléments de vérification. g(x) = e^(−x²) sur [0,1]: estimation ≈ 0,7469, erreur-type ≈ 0,0009 (σ de g vaut environ 0,29), intervalle [0,7451; 0,7487] qui couvre 0,7468. L’intégrale exacte s’écrit (√π/2)·erf(1) ≈ 0,74682. La méthode se généralise telle quelle aux dimensions supérieures, où elle devient la seule praticable.
Exercice 2 (probabilité d’un événement). Estimez P(U₁ + U₂ > 1,2) où U₁, U₂ sont indépendantes uniformes sur [0,1], avec n = 100 000 et graine 42, puis retrouvez le résultat par le calcul.
Corrigé. Simulation: ≈ 0,3201. Calcul exact: l’événement {u₁ + u₂ > s} est le triangle au-dessus de la droite u₂ = s − u₁ dans le carré unité. Pour 1 < s ≤ 2, ce triangle a pour côtés (2 − s), donc son aire vaut (2 − s)²/2. Avec s = 1,2: P = (0,8)²/2 = 0,32, en accord avec la simulation. Le piège est de confondre avec le cas s ≤ 1, où l’aire vaudrait 1 − s²/2: dessinez le carré et la droite avant d’intégrer.
Exercice 3 (budget de précision). Un dépistage simulé doit estimer une probabilité de l’ordre de 0,05 avec une erreur-type maximale de 0,001. Quel n minimal? Combien de temps de calcul si un tirage coûte 1 µs?
Corrigé. Pour une indicatrice de paramètre p, σ = √(p(1−p)) ≈ √(0,0475) ≈ 0,218. L’exigence σ/√n ≤ 0,001 donne n ≥ (0,218/0,001)² ≈ 47 500 tirages, arrondi à 50 000. À 1 µs le tirage: environ 0,05 s de calcul. Retenez la règle: pour estimer une petite probabilité p avec une erreur relative de r, il faut n de l’ordre de (1−p)/(p·r²): les événements rares sont chers à estimer, et c’est là que la réduction de variance paie.