[PYTHON] Méthode de Monte Carlo

La méthode de Monte Carlo est une méthode de conversion de l'intégrale d'une fonction en somme de points échantillonnés afin de reproduire une fonction donnée.

[Wikipédia](http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%AB%E3%83%AB%E3%83 Cela dépend de la qualité de la génération de nombres aléatoires, comme décrit dans% AD% E6% B3% 95).

Le principe de la méthode Monte Carlo

Le principe du calcul numérique par la méthode de Monte Carlo est que dans le questionnaire, un grand nombre d'échantillons est extrait du département auquel appartient un grand nombre de personnes, et un petit nombre d'échantillons est extrait d'un département auquel appartient un petit nombre de personnes. C'est similaire à l'idée que cela peut être reflété dans un questionnaire. Par exemple, pour calculer le rapport de circonférence, générez un ensemble de nombres aléatoires dans la plage de 0 à 1, voyez-le comme un point sur la coordonnée xy et déterminez s'il se trouve dans le premier quadrant du cercle unitaire ou non à partir du rapport. ..

Pour les variables stochastiques qui prennent des valeurs consécutives, la distribution stochastique est représentée par la fonction de densité stochastique f (x). A ce moment, la valeur moyenne u et la variance σ ^ 2 sont les suivantes.

\mu = \int{xf(x)dx} \\
\sigma^2 = \int{(x - \mu)}^2f(x)dx

En fait, essayez avec du code

Il y avait deux équipes sportives A et B. Les deux équipes sportives ont obtenu exactement le même score, mais avec des écarts différents. Ceci est exprimé par la simulation de Monte Carlo.

from pylab import *
from scipy.stats import *
import matplotlib.pyplot as plt

runs = 10000

#Résultats de chaque équipe
teamperfA = [0.9,0.8,0,9] #Score de l'équipe A
teamperfB = [0.9,0.8,0.9] #Score de l'équipe B

#Répartition des résultats par équipe
teamvarianceA = [0.03, 0.04, 0.02]
teamvarianceB = [0.05, 0.08, 0.09] #L'équipe B est plus dispersée

weights = [1.0, 0.95, 0.8]

def result(perf,variance,weights):
    res = 0.0
    for i in range(len(perf)-1):
        res += perf[i] * weights[i] * norm(1,variance[i]).rvs()

    return res

resultsA = zeros(shape=(runs,), dtype=float)
resultsB = zeros(shape=(runs,), dtype=float)

for i in range(runs):
    resultsA[i] = result (teamperfA,teamvarianceA,weights)
    resultsB[i] = result (teamperfB,teamvarianceB,weights)

subplot(211)
width = 2
height=runs

title('Team A')
hist(resultsA, bins=50)
axis([1.4,1.9,0,height/10])

subplot(212)
title('Team B')
hist(resultsB, bins=50)

axis([1.4,1.9,0,height/10])

show()
plt.savefig("image.png ")

image.png

référence

Python matplotlib, Monte Carlo simulation, and basic statistics http://softwaredevelopmentperestroika.wordpress.com/2013/12/06/python-matplotlib-monte-carlo-simulation-and-basic-statistics/

Recommended Posts

Méthode de Monte Carlo
Introduction à la méthode Monte Carlo
Simuler la méthode Monte Carlo en Python
Estimation de π par la méthode de Monte Carlo
Jeu de compression Dominion analysé par la méthode de Monte Carlo
Méthode #Monte Carlo pour trouver le rapport de circonférence en utilisant Python
Essayez d'implémenter la méthode Monte Carlo en Python
Comparaison de vitesse de chaque langue par la méthode de Monte Carlo
Augmentez la vitesse de la méthode Monte Carlo de l'implémentation de découpage Cython.
Saupoudrer de grains de riz pour trouver le rapport de circonférence (méthode de Monte Carlo)
Recherche du rapport de circonférence avec une fonction à 3 lignes [méthode Python / Monte Carlo]
Trouvez le ratio de la superficie du lac Biwa par la méthode de Monte Carlo
Méthode binaire
IA à cinq yeux en recherchant les arbres de Monte Carlo
Méthode spéciale
Méthode spéciale
[Statistiques] Je vais expliquer l'échantillonnage par la méthode de Monte Carlo en chaîne de Markov (MCMC) avec animation.
PRML Chapitre 11 Implémentation Python Monte Carlo Chaîne de Markov
Résumé de chacune des méthodes de la chaîne de Markov et de Monte Carlo