2015/06/25

逆関数法を用いた乱数生成の証明と例


逆関数法:累積分布関数が $F(x)$ であるような確率分布に従う乱数を生成したいときには,$[0,1]$ 上の一様分布に従う乱数を生成してそれに $F^{-1}$ をかませばよい。

逆関数法のモチベーション,方法,具体例などを解説します。

やりたいこと

  • $[0,1]$ 上の一様乱数は生成できるものとする
  • これを使って累積分布関数が $F(x)$ で表されるような確率分布に従う乱数を生成したい

一様乱数という生成しやすい単純な乱数を使って複雑な乱数を生成したいというモチベーションです。
→一様分布の平均,分散,特性関数など

逆関数法とその証明

累積分布関数 $F(x)$ の逆関数が簡単に計算できるとき,逆関数法という技が使えます。

$[0,1]$ 上の一様分布に従う確率変数を $U$ とする。このとき $F^{-1}(U)$ は目的の確率分布に従う。

累積分布関数,逆関数の定義を用いるだけで簡単に証明できます!

証明

$U$ が一様分布に従うことを式で表す:$P(U\leq u)=u$
(ただし $0\leq u\leq 1$)

ここで,$U\leq u\iff F^{-1}(U)\leq F^{-1}(u)$
に注意すると上式は $P(F^{-1}(U)\leq F^{-1}(u))=u$ となる。

さらに,$F^{-1}(u)=x$ と置くと,
$P(F^{-1}(U)\leq x)=F(x)$

これは確率変数 $F^{-1}(U)$ が,累積分布関数が $F(x)$ であるような確率分布に従うことを表している。

図による理解

かなり大雑把ですが図を用いて感覚的に理解することもできます。

逆関数法の意味
  • $[0,1]$ 上の一様乱数→青い区間内でランダムに打つ(例えば青い点線)
  • $F^{-1}(U)$ →青い点線と累積分布関数のぶつかった点の $x$ 座標を採用
  • 確率を高くしたいところ(累積分布関数の傾きが急なところ)には当たりやすい(緑の範囲)
  • 確率を低くしたいところ(累積分布関数の傾きが緩いところ)には当たりにくい(紫の範囲)

指数分布の場合の例

例題

逆関数法を用いて,平均 $\mu$ の指数分布に従う乱数を生成する具体的な手続きを述べよ。

解答

平均 $\mu$ の指数分布の確率密度関数は $f(x)=\dfrac{1}{\mu}e^{-\frac{x}{\mu}}\:(x\geq 0)$ である。→指数分布の意味と具体例

よって,累積分布関数は $F(x)=\displaystyle\int_0^{x}\dfrac{1}{\mu}e^{-\frac{t}{\mu}}dt=1-e^{-\frac{x}{\mu}}$

この逆関数を求めたいので,上式を $x$ について解く:
$e^{-\frac{x}{\mu}}=1-F(x)$
$x=-\mu\log (1-F(x))$
つまり,$F^{-1}(u)=-\mu\log (1-u)$

よって,$[0,1]$ 上の一様分布に従う乱数 $u$ を生成して,$-\mu\log (1-u)$ を計算すればよい。


試しに平均を $\mu=1$ として,$u$ と$-\log (1-u)$ の値を並べてみました:

$u\:\:-\log (1-u)$
$0.1\:\:0.10$
$0.2\:\:0.22$
$0.3\:\:0.35$
$0.4\:\:0.51$
$0.5\:\:0.69$
$0.6\:\:0.91$
$0.7\:\:1.20$
$0.8\:\:1.60$
$0.9\:\:2.30$

$-\log (1-u)$ は $1$ を下回る確率が高い一方でかなり大きな値になる確率もあり,指数分布に従うっぽいことが分かります!

自分はあまり詳しい分野ではありませんが,乱数の話題もけっこう奥が深そうです。

Tag: 数学的モデリングまとめ