「《モンテカルロ法》」の版間の差分

提供: ORWiki
ナビゲーションに移動 検索に移動
8行目: 8行目:
 
:<math>
 
:<math>
 
\theta = E[g(Y)]=\int_{-\infty}^\infty g(y)\mathrm{d}F(y) =
 
\theta = E[g(Y)]=\int_{-\infty}^\infty g(y)\mathrm{d}F(y) =
\int_0^1 h(u) \mathrm{d}u,
+
\int_0^1 h(u) \mathrm{d}u, \,  
 
</math>
 
</math>
  
16行目: 16行目:
  
 
:<math>
 
:<math>
A_1(N) = \sum_{i=1}^N h(U_i)/N
+
A_1(N) = \sum_{i=1}^N h(U_i)/N \,
 
</math>
 
</math>
  
25行目: 25行目:
 
:<math>
 
:<math>
 
V(A_1(N)) = \frac{\sigma^2}N, \ \ \ \ \  
 
V(A_1(N)) = \frac{\sigma^2}N, \ \ \ \ \  
\sigma^2 = \int_0^1 h^2(x) \mathrm{d}x-\theta^2
+
\sigma^2 = \int_0^1 h^2(x) \mathrm{d}x-\theta^2 \,
 
</math>
 
</math>
  
37行目: 37行目:
  
 
:<math>
 
:<math>
A_2(N) = \frac 1 N \sum_{i=1}^N \frac{h(X_i)}{w(X_i)}
+
A_2(N) = \frac 1 N \sum_{i=1}^N \frac{h(X_i)}{w(X_i)} \,
 
</math>
 
</math>
  
49行目: 49行目:
  
 
:<math>
 
:<math>
Y_\alpha = Y-\alpha(Z-\zeta)
+
Y_\alpha = Y-\alpha(Z-\zeta) \,
 
</math>
 
</math>
  
57行目: 57行目:
  
 
:<math>
 
:<math>
V(Y_{\alpha^*})=(1-\rho^2)V(Y)
+
V(Y_{\alpha^*})=(1-\rho^2)V(Y) \,
 
</math>
 
</math>
  
67行目: 67行目:
  
 
:<math>
 
:<math>
Y_\alpha = h(u)-\alpha(h_0(u)-\zeta)
+
Y_\alpha = h(u)-\alpha(h_0(u)-\zeta) \,
 
</math>
 
</math>
  
82行目: 82行目:
  
 
:<math>
 
:<math>
V(X-Y)=V(X)+V(Y)-2 \mathrm{Cov}(X,Y)
+
V(X-Y)=V(X)+V(Y)-2 \mathrm{Cov}(X,Y) \,
 
</math>
 
</math>
  

2007年7月11日 (水) 14:15時点における版

【もんてかるろほう (Monte Carlo method) 】

 システムの特性値などを推定するために, 適当なモデルと乱数を使って実験し, 大数の法則や中心極限定理などを利用して推測を行う方法のこと. システムに確率的な変動が内在する場合だけでなく, 確定的な問題を解くためにも使われる.

 モンテカルロ法の原理を簡単な例で示そう. 推定したい特性値を$\theta$とし, これは既知の分布関数$F(y)$を持つ確率変数$Y$の関数$g(Y)$の平均値に等しいものとすれば,



と書ける. ただし, $h(u)=g(F^{-1}(u))$である. そこで, 区間[0,1]上の一様乱数$U_1, U_2, \cdots, U_N$を発生し, 算術平均



を$\theta$の推定値とすることが考えられる. $A_1(N)$は$\theta$の不偏推定量であり, 分散は



となる. したがって, 推定量$A_1(N)$に含まれる誤差の標準偏差は$\sigma/\sqrt N $であり, 精度を十進で1桁上げるためには, サンプル数$N$を10倍に増やさなければならない. このように, モンテカルロ法の収束は遅いので, これを改善するための方法が種々提案されており, 分散減少法と総称されている. ただし, これらは$1/\sqrt N$というオーダーを改善するものではなく, 比例係数を小さくするための工夫である.

重点サンプリング

 積分区間から一様にサンプルをとるのではなく, 重要と考えられる部分($h(x)$の絶対値が大きい部分)により多くの重みをおく密度関数$w(x)$に従う乱数$X_1,\cdots,$\quad $X_N$を発生し,



で$\theta$を推定する. $w(x)$が$\left| h(x) \right|$に比例するように選べれば分散は最小となるので, なるべくそれに近くなるように工夫する.

制御変量法

 $\theta$に対するひとつの不偏推定量を$Y$とする. $Y$と相関があって平均値$\zeta$が既知の確率変数$Z$のことを, $Y$の制御変量という. $\alpha$を定数として



と定義すれば, $Y_\alpha$も$\theta$の不偏推定量となり, その分散は$\alpha^* = {\mbox{\rm Cov}}(Y, Z)/V(Z)$のとき最小となり, 最小値は



である. ここで$\rho$は$Y$と$Z$の相関係数であるから, $Y$と相関の強い制御変量を選ぶほど効果的である.

 定積分の例では, $h(u)$に近い関数$h_0(u)$で, その積分の値$\zeta$が正確に計算できるものを選び,



に対して単純な一様サンプリングを適用する.

負相関変量法

 $\theta$の不偏推定量$Y$と平均値が同じで負の相関を持つ変量$Z$を利用して, $W=(Y+Z)/2$を$\theta$の推定量とする. この分散は, $Y$に対して2回独立にサンプルをとって平均する場合の分散より小さくなる. 定積分の例では, もし$h(u)$が単調な関数ならば, $Y=h(U),\;\;\;Z=h(1-U)$とするとよい.

共通乱数法

 二つの特性値$\theta,\phi$をそれぞれ確率変数$X,Y$に関するモンテカルロ実験によって推定し, 比較したいものとし, $\theta=E[X], \phi=E[Y]$とする.


であるから, ${\mbox{\rm Cov}}(X,Y)$が大きいほど推定の精度が良くなる. $X$と$Y$の分布関数をそれぞれ$F,G$とし, $X$と$Y$を逆関数法で作るものとする. このとき, $X$と$Y$用に別々の一様乱数列を使う代りに, ひとつの乱数列$\{U\}$を使って, \noindent$X=F^{-1}(U), Y=G^{-1}(U)$とすれば, ${\mbox{\rm Cov}}(X,Y)$が最大となる. これが共通乱数法の原理である.



参考文献

[1] 伏見正則, 『確率的方法とシミュレーション』(岩波講座 応用数学), 岩波書店, 1994.

[2] G. S. Fishman, Monte Carlo-Concepts, Algorithms, and Applications, Springer, 1996.

[3] A. M. Law and W. D. Kelton, Simulation Modeling and Analysis, 2nd. ed., McGraw-Hill, 1991.