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 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
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 ")
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