Aller au contenu principal

Probabilités & statistiques · L2 · Section 4/9

Simulation Monte Carlo

Progression

Points d’expérience : XPSérie de jours consécutifs : · —Progression du module : — / —compris

#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:

  1. Modéliser: identifier la loi de X et la fonction g. Toute l’exactitude de la méthode réside ici.
  2. Simuler: générer X₁, …, Xₙ selon cette loi, indépendamment.
  3. Estimer: la moyenne empirique ĝₙ = (1/n) Σ g(Xᵢ) converge vers θ par la loi des grands nombres.
  4. 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.
Modéliser
Définir X, g et θ = E[g(X)]
Simuler
Générer n réalisations, graine fixée
Estimer
Moyenne empirique des g(Xᵢ)
Quantifier
Erreur-type σ̂/√n ; IC à 95%

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.

Chargement de l’éditeur...

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.

Chargement de l’éditeur...

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.

Chargement de l’éditeur...

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

L'estimation Monte Carlo a une erreur-type de 0.005 avec n = 10000. Quel n pour une erreur-type de 0.0025?
L'estimation Monte Carlo a une erreur-type de 0.005 avec n = 10000. Quel n pour une erreur-type de 0.0025?

#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.