「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

金融工学でのモンテカルロ法(04/N):一般の分布に従う乱数(1)

 今回から、金融工学におけるシミュレーションについて学んでいく。テキストとして以下を使う。今回はP.41-P.52まで。

 モンテカルロ法

  • 問題に沿った(同時)分布に従う(多変量)乱数列の生成
  • その乱数列を使った計算

の2つの部分に分けて考えられる。乱数列の生成は更に

  1. .一様分布に従う乱数列\{u_1,u_2,\cdots,u_n\}の生成
  2. .それを元にした必要な同時分布に従う乱数列\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_n\}の生成

に分けられる。

4. 一般の分布に従う乱数

4.1 1変量乱数列

 一様乱数列\{U_n\}から一般の1変数乱数列を生成する。

4.1.1 逆関数

 逆関数法は分布関数Fに従う確率変数XFによって一様分布U(0,1)に従う確率変数Uに変換され、逆にUが分布関数の(擬)逆関数F^{-1}によってXに変換されることを活用してFに従う乱数列を生成する方法である。

 X\sim Fとし、またF^{(-1)}


\begin{aligned}
F^{(-1)}(\alpha)=\inf\{x: F(x)\geq\alpha\}
\end{aligned}

で定義する。これを擬逆関数(quasi-inverse function)という。さらにU\sim U(0,1)とするとき、

  • F^{(-1)}(U)\sim F
  • F(X)\sim U(0,1)

が成り立つ。
 実際、確率変数Xが狭義単調増加かつ連続な分布関数F(x)に従うとする。このとき


\begin{aligned}
P(\{F(x)\leq x\})&=P(\{X\leq F^{(-1)}(x)\}),\ 0\leq x\leq 1\\
&=F(F^{(-1)}(x))\\
&=(F\cdot F^{(-1)})(x)\\
&=x
\end{aligned}

これはF(X)の分布関数が一様分布の分布関数に等しいことを意味する。逆にY\sim U(0,1)を基にX=F^{(-1)}(Y)とすれば、X\sim Fである。

4.1.2 逆関数法の例:一様分布

 U\sim(a,b),\ a\lt bの分布関数は


\begin{aligned}
F_{U}(x)=\displaystyle{\frac{x-a}{b-a}},\ a\lt x\lt b
\end{aligned}

であるから、その逆関数


\begin{aligned}
x=\displaystyle{\frac{F_{U}^{(-1)}(x)-a}{b-a}},\ a\lt x\lt b
\end{aligned}

を満たすから、F^{(-1)}(x;a,b)=(b-a)x+a,\ 0\lt x\lt 1が成り立つ。

4.2 採択棄却法

 採択棄却法は平面上のある部分に一様に分布する点列(2変量乱数列)から一般の分布に従う1変量乱数列を生成する方法である。
 連続確率変数Xの分布関数F(x)について0,\ x\lt a, 1,\ b \lt xが成り立つ。また確率密度関数についてf(x)\leq cである。(x,y)平面上のx軸とy=f(x)に囲まれた部分にN個の点からなる集合\{(x_i,y_i)\}が一様に分布しているとする。そこでそれぞれの点のx座標の値だけを取り出した\{x_i\}確率密度関数f(x)の値が大きい部分には多く、小さい部分には少なく分布している。そこでx軸とx=a,\ x=d,\ (a\lt d\lt b)f(x)に囲まれた部分にある点の個数をNで割ることにより、F(d)の近似値を得ることが出来る。
 具体的には、

(1) 4点(a,0),\ (a,c),\ (b,c),\ (b,0)を頂点とする長方形に一様に分布する点列\{x_i,y_i\}を用意する。
(2) y_if(x_i)を比較し、
 (a) y_i\gt f(x_i)ならばその点を捨てる 
 (b) y_i\leq f(x_i)ならばその点を採用する。
(3) iを1つずつ増やしながら(2)を繰り返す。採用した点のx_iを取り出して順番に並べることで数列\{x_j\}を得る。

という手順を辿る。ただし密度関数によっては棄却する点の割合が多くなるために効率性は悪い。

4.2.1 採択棄却法の例

確率変数X確率密度関数

{\displaystyle 
\begin{eqnarray}
 f(x)=\left\{
    \begin{array}{l}
       3x^2,\ 0\leq x\leq1,\\
       0,\ x\lt0,\ 1\lt x
    \end{array}
  \right.
\end{eqnarray}
}

の分布p関数Fに従う乱数列を採択棄却法によって得ることにする。

(1) 4点(0,0),\ (0,3),\ (1,3),\ (1,0)を頂点とする長方形に一様に分布する点列\{x_i,y_i\}を用意する。
(2) u_i\leq3{u_i}^2のときにu_iを採用する。
(3) (2)を繰り返して点列\{u_i\}を得る。

4.3 多変量乱数列

4.3.1 超立方体に一様に分布する点列

 一般に周辺分布が定まっても同時分布は一意には定まらない。したがって確率ベクトルについて各成分を成す確率変数を生成しても同時分布に従う確率ベクトルを得ることは一般にはできない。

多変量の離散確率ベクトル(X^{(1)},\cdots,X^{(k)})に対し


\begin{aligned}
P(X^{(1)}=x^{(1)},\cdots,X^{(k)}=x^{(k)},\cdots)=\prod_{i=1}^{k}P(X^{i}=x^{i})
\end{aligned}

が成り立つとき、X^{(1)},\cdots,X^{(k)}はそれぞれ互いに独立であるという。
 連続の場合は


\begin{aligned}
f(x^{(1)},\cdots,x^{(k)},\cdots)=\prod_{i=1}^{k}f(x^{i})
\end{aligned}

が成り立つとき、X^{(1)},\cdots,X^{(k)}はそれぞれ互いに独立であるという。
 \{\boldsymbol{x}_n\}=\{(x_n^{(1)},\cdots x_n^{(k)})\}k次元超立方体\left(0,1\right)^kに一様に分布する点列であるとする。このときi次元を取り出した列x_n^{(i)}の分布は他の分布を取り出した列に依存しないから、\boldsymbol{x}の各次元の列は互いに独立である。
 超立方体\left(0,1\right)^k内に一様に分布する点列\boldsymbol{x}_nは以下の手続きで得られる:

(1) 一様乱数に従う乱数列\{u_n\}を生成する。
(2) 乱数列の最初のk個を取り出して\boldsymbol{x}_1=(u_1,\cdots,u_k)とする。
(3) \boldsymbol{x}_2=(u_2,\cdots,u_{k+1})とする。
(4) 以降を繰り返して\boldsymbol{x}_3,\boldsymbol{x}_4\cdotsを得る。
4.3.2 一般の多次元分布

 2次元確率ベクトル(X,Y)について一般の場合には、条件付き分布が既知であるという前提の下で、条件付き分布法を用いてk次元の独立でない確率変数\boldsymbol{X}^{(1)},\cdots,\boldsymbol{X}^{(k)}の同時分布に従う点列が得られる:

(1) k次元超立方体(0,1)^kに一様に分布する点列\{(u_n^{(1)},\cdots,u_n^{(k)})\}を生成する。
(2) u_1^{(1)}からX^{(1)}の周辺分布を用いてx_1^{(1)}を得る。
(3) u_1^{(2)}からX^{(1)}=x_1^{(1)}の条件下でのX^{(2)}の条件付き分布x_1^{(2)}を得る。
(4) 以上を繰り返して(x_1^{(1)},\cdots,x_1^{(k)})を得る。
(5) 以上を繰り返して(x_n^{(1)},\cdots,x_n^{(k)})を得る。

 周辺分布がすべて区間(0,1)上の一様分布となるような多変量分布をコピュラ*1という。2次元コピュラにはたとえば以下がある:

  • Fréche-Hoeffding上限:M(u,v)=\min{(u,v)}
  • Fréche-Hoeffding下限:W(u,v)=\max{(u+v-1,0)}
  • 積コピュラ:\Pi(u,v)=uv

 このコピュラに関してはSklarの定理が有用である:

 2次元の同時分布Hとし、その周辺分布をそれぞれF,\ Gとする。このとき^{\forall}x,y\in\mathbb{R}について


\begin{aligned}
H(x,y)=C(F(x),G(y))
\end{aligned}

を満たすようなコピュラCが存在する。もしF,\ Gが共に連続ならば、このコピュラCは一意に定まる。

 また

 2次元の同時分布をHとし、その連続な周辺分布をF,\ Gとする。このときあるコピュラCが存在し、^{\forall}x,y\in\mathbb{R}に対して


\begin{aligned}
C(u,v)=H(F^{-1}(x),G^{-1}(y))
\end{aligned}

が成り立つ。

なおこれらは2以上の一般の多次元においても成り立つ。
 以上を活用すれば一般の多次元分布に従う多変量乱数列を生成できる。コピュラCおよび周辺分布F^{(k)}(x)が分かっていれば、次の方法でk次元の独立でない同時分布に従う点列が得られる:

(1) k次元超立方体(0,1)^kに一様に分布する点列\{u_n^{(1)},\cdots,u_n^{(k)}\}を生成する。
(2) コピュラの条件付き分布を用いて、周辺分布は一様分布であるものの(0,1)^kでは一様に分布しない点列\{x_n^{(1)},\cdots,x_n^{(k)}\}を生成する。
(3) Sklarの定理および周辺分布F^{(k)}(x)\{x_n^{(1)},\cdots,x_n^{(k)}\}から求める同時分布に従う
\begin{aligned}\{y_n^{(1)},\cdots,y_n^{(k)}\}\end{aligned}
を生成する。

*1:日本語では接合関数

プライバシーポリシー お問い合わせ