[바이스 통계학 재입문 ③] 몬테카로법

8174 단어 몬테카로법
복습과 동시에 Bays 통계의 해설과 Python의 실시를 진행한다.
세 번째는 몬테카로법에 관한 것이다.
몬테카로법
먼저 몬테카로법이 무엇인지 설명해 주시오.
예를 들어 다음 한 쪽을 고려하여 무작위로 정사각형 구역에 점을 쳐서 원주율을 구한다.

무작위 타점 수량은 $n, 원의 포인트는 $p
\frac{p}{n}
계산하다.무작위 타점의 크기가 커질 때, 이 계산은 $\rac {\pi] {4} 달러 (반경 1의 원의 면적의 4분의 1) 에 가까워야 한다.
\frac{p}{n}\approx \frac{\pi}{4}
이렇게 해서 무작위 수를 사용하는 수치 계산법을 Monte Carlo법이라고 부른다.
이루어지다
몬테카로 방법도 원주율의 근사치를 계산하는 데 쓰인다.
몬테카로의 방법을 바꿀 수 있는 슬라이더를 만들고 상호작용 프로그램을 만듭니다.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#インタラクティブな描画
from IPython.html.widgets import interact
#グラフを埋め込むために以下を入力
%matplotlib inline

#ggplotというスタイルでグラフを表示する(お好みで)
plt.style.use("ggplot")
#乱数のseedを固定
np.random.seed(123)

NMC = 100
xmc = np.random.rand(NMC)
ymc = np.random.rand(NMC)
#スライドするバーの設定(0からNMCまで1刻み)
@interact(mcs=(0,NMC,1))
def animation(mcs=0):
    plt.figure(figsize=(6,6))
#グラフの描画範囲を明示的に指定
    plt.xlim([0,1])
    plt.ylim([0,1])
#円を描画
    x = np.arange(0,1,0.001)
    y = (1-x**2)**0.5
    y2 = np.ones(x.shape[0])#すべての要素が1のarray
    plt.plot(x,y)
#色を塗りつぶす(α値で透明に)
    plt.fill_between(x,y,alpha=0.3)
    plt.fill_between(x,y,y2,alpha=0.3)
    r = (xmc[:mcs]**2 + ymc[:mcs]**2)**0.5
#円の中に入ったかどうかの判定(r<=1ならば1,それ以外なら0)
    accept = np.where(r<=1, 1, 0)
    accept_ratio = np.sum(accept) / mcs
    plt.scatter(xmc[:mcs], ymc[:mcs], color="black", marker=".")
    plt.show()
    print("Monte Carlo: ",accept_ratio)
    print("pi/4: ",np.pi / 4.0)


100 정도면 정밀도가 미묘해요.점의 수를 늘리면 더 가깝지만 랜덤점 때문에 목적치에 접근하거나 멀리 떨어질 때 흔들흔들 다가오는 것으로 알려져 있다.
다음에는 샘플링 버림과 MCC에 대해 쓰고 싶습니다.

좋은 웹페이지 즐겨찾기