Vous êtes sur la page 1sur 5

Méthodes de Monte-Carlo

June 18, 2023

HASSAN FACOITI

1 Inroduction
Les méthodes de Monte-Carlo sont des techniques statistiques qui utilisent des échantillons aléa-
toires pour résoudre des problèmes numériques.
L’idée générale des méthodes de Monte-Carlo est de générer des échantillons aléatoires pour es-
timer une quantité inconnue ou effectuer des simulations. Les méthodes de Monte-Carlo les plus
couramment utilisées :
• Échantillonnage aléatoire simple : Cette méthode consiste à générer des échantillons aléatoires
à partir d’une distribution donnée et à utiliser ces échantillons pour estimer une quantité.
Par exemple, pour estimer l’intégrale d’une fonction, on génère des points aléatoires dans le
domaine d’intérêt et on calcule la moyenne des valeurs de la fonction à ces points.
• Méthode de Monte-Carlo par chaînes de Markov (MCMC) : Cette méthode est utilisée pour
générer des échantillons à partir d’une distribution de probabilité complexe. Elle est couram-
ment utilisée pour effectuer des simulations bayésiennes et pour résoudre des problèmes
d’optimisation. Les algorithmes MCMC, tels que l’algorithme de Metropolis-Hastings et
l’échantillonneur de Gibbs, permettent d’explorer l’espace des échantillons de manière effi-
cace.
• Méthode de Monte-Carlo par importance : Cette méthode permet d’estimer une quantité en
utilisant des échantillons générés à partir d’une distribution différente de celle du problème.
Elle est utile lorsque la distribution d’échantillonnage la plus simple n’est pas disponible. Les
échantillons sont pondérés en fonction de la différence entre les distributions d’échantillonnage
et du problème, afin d’obtenir une estimation sans biais.
• Méthode de Monte-Carlo par rejet : Cette méthode est utilisée pour générer des échantillons
à partir d’une distribution de probabilité en utilisant une distribution de proposition plus
simple. Les échantillons sont acceptés ou rejetés en fonction d’un critère, ce qui permet de
générer des échantillons représentatifs de la distribution cible.

[6]: import random


import numpy as np
import matplotlib.pyplot as plt

def monte_carlo_simple(n):
count = 0

1
pi_estimations = []

for i in range(1, n+1):


x = random.uniform(-1, 1)
y = random.uniform(-1, 1)

if x**2 + y**2 <= 1:


count += 1

pi_estimation = 4 * count / i
pi_estimations.append(pi_estimation)

return pi_estimations

def monte_carlo_mcmc(n):
count = 0
x, y = 0, 0
pi_estimations = []

for i in range(1, n+1):


delta_x = np.random.uniform(-1, 1)
delta_y = np.random.uniform(-1, 1)

x_new = x + delta_x
y_new = y + delta_y

if x_new**2 + y_new**2 <= 1:


x = x_new
y = y_new
count += 1

pi_estimation = 4 * count / i
pi_estimations.append(pi_estimation)

return pi_estimations

def monte_carlo_importance(n):
count = 0
pi_estimations = []

for i in range(1, n+1):


x = np.random.normal(0, 1)
y = np.random.normal(0, 1)

if x**2 + y**2 <= 1:


weight = 1 / (2 * np.pi)
count += weight

2
pi_estimation = 4 * count / i
pi_estimations.append(pi_estimation)

return pi_estimations

def monte_carlo_rejection(n):
count = 0
pi_estimations = []

for i in range(1, n+1):


x = random.uniform(-1, 1)
y = random.uniform(-1, 1)

if x**2 + y**2 <= 1:


count += 1

pi_estimation = 4 * count / i / 0.7854


pi_estimations.append(pi_estimation)

return pi_estimations

# Utilisation des méthodes avec 1 million d'échantillons


n = 1000000

pi_estimates_simple = monte_carlo_simple(n)
pi_estimates_mcmc = monte_carlo_mcmc(n)
pi_estimates_importance = monte_carlo_importance(n)
pi_estimates_rejection = monte_carlo_rejection(n)

# Tracé des estimations de � en fonction du nombre d'échantillons


x = np.arange(1, n+1)

plt.figure(figsize=(10, 10))
plt.plot(x, pi_estimates_simple, label='Échantillonnage aléatoire simple')
plt.plot(x, pi_estimates_mcmc, label='MCMC')
plt.plot(x, pi_estimates_importance, label='Importance sampling')
plt.plot(x, pi_estimates_rejection, label='Rejet')
plt.axhline(y=np.pi, color='r', linestyle='--', label='Valeur réelle de �')
plt.xlabel('Nombre d\'échantillons')
plt.ylabel('Estimation de �')
plt.title('Estimation de � par les méthodes de Monte-Carlo')
plt.legend()
plt.show()

# Affichage des estimations de �

3
print("Estimation de � (échantillonnage aléatoire simple) :",␣
,→pi_estimates_simple[-1])

print("Estimation de � (MCMC) :", pi_estimates_mcmc[-1])


print("Estimation de � (importance sampling) :", pi_estimates_importance[-1])
print("Estimation de � (rejet) :", pi_estimates_rejection[-1])

Estimation de � (échantillonnage aléatoire simple) : 3.142712


Estimation de � (MCMC) : 2.121832
Estimation de � (importance sampling) : 0.2503195311125551
Estimation de � (rejet) : 4.002597402597402
• Estimation de � (échantillonnage aléatoire simple) : 3.142712 Cette méthode génère des points
aléatoires dans le carré unitaire et estime � en calculant la proportion de points qui se trouvent

4
à l’intérieur du cercle. Le résultat obtenu est proche de la valeur réelle de � (environ 3.14159),
ce qui indique une estimation précise avec un grand nombre d’échantillons.
• Estimation de � (MCMC) : 2.121832 La méthode de Monte-Carlo par chaînes de Markov
(MCMC) utilise une chaîne de Markov pour générer des échantillons, et l’estimation de � est
basée sur la proportion de points à l’intérieur du cercle. Dans ce cas, l’estimation obtenue est
légèrement plus éloignée de la valeur réelle de �, ce qui suggère une convergence plus lente de
la chaîne de Markov.
• Estimation de � (importance sampling) : 0.2503195311125551 La méthode de Monte-Carlo
par importance sampling utilise une distribution différente de la distribution uniforme pour
générer les échantillons. L’estimation obtenue est étonnamment basse et très éloignée de la
valeur réelle de �. Cela peut indiquer un choix inapproprié de la distribution d’importance,
ce qui conduit à une mauvaise estimation.
• Estimation de � (rejet) : 4.002597402597402 La méthode de Monte-Carlo par rejet génère des
points dans le carré et sélectionne uniquement les points à l’intérieur du cercle. L’estimation
obtenue est légèrement supérieure à la valeur réelle de �, ce qui suggère une légère surestimation
due au rejet de certains points aléatoires.

2 Conclusion
En conclusion, les méthodes de Monte-Carlo offrent différentes approches pour estimer la valeur de
�. Dans notre exemple, nous avons utilisé l’échantillonnage aléatoire simple, la méthode MCMC,
l’importance sampling et le rejet.
L’estimation de � par l’échantillonnage aléatoire simple s’est révélée précise, se rapprochant de la
valeur réelle de �. Cela démontre l’efficacité de cette méthode lorsque le nombre d’échantillons est
suffisamment élevé.
La méthode MCMC a également produit une estimation de �, bien que légèrement moins précise
que l’échantillonnage aléatoire simple. Cela peut s’expliquer par une convergence plus lente de la
chaîne de Markov utilisée pour générer les échantillons.
En revanche, l’estimation de � par importance sampling a donné un résultat éloigné de la valeur
réelle de �. Cela peut indiquer une mauvaise sélection de la distribution d’importance, conduisant
à une estimation peu fiable.
La méthode de rejet a fourni une estimation légèrement supérieure à la valeur réelle de �, ce qui
peut être attribué à la nature du rejet de certains points aléatoires.
Il est important de noter que ces résultats sont spécifiques à notre exemple et peuvent varier en
fonction des paramètres choisis et du nombre d’échantillons utilisés. Dans l’ensemble, les méthodes
de Monte-Carlo offrent une approche puissante et flexible pour estimer � et d’autres quantités en
utilisant des simulations aléatoires. La sélection de la méthode appropriée dépendra du contexte
et des caractéristiques spécifiques de chaque problème.

Vous aimerez peut-être aussi