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

逆関数法

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

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

逆関数法の目的

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

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

逆関数法とその証明

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

定理

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

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

証明

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

ここで,

Uu    F1(U)F1(u)U\leq u\iff F^{-1}(U)\leq F^{-1}(u)

に注意すると上式は P(F1(U)F1(u))=uP(F^{-1}(U)\leq F^{-1}(u))=u となる。

さらに,F1(u)=xF^{-1}(u)=x と置くと,

P(F1(U)x)=F(x)P(F^{-1}(U)\leq x)=F(x)

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

図による理解

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

逆関数法の意味

  • [0,1][0,1] 上の一様乱数→青い区間内でランダムに打つ(例えば青い点線)

  • F1(U)F^{-1}(U) →青い点線と累積分布関数のぶつかった点の xx 座標を採用

  • 確率を高くしたいところ(累積分布関数の傾きが急なところ)には当たりやすい(緑の範囲)

  • 確率を低くしたいところ(累積分布関数の傾きが緩いところ)には当たりにくい(紫の範囲)

指数分布の場合の例

例題

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

解答

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

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

この逆関数を求めたいので,上式を xx について解く:

exμ=1F(x)e^{-\frac{x}{\mu}}=1-F(x)

x=μlog(1F(x))x=-\mu\log (1-F(x))

つまり,F1(u)=μlog(1u)F^{-1}(u)=-\mu\log (1-u)

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

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

uu log(1u)\log(1-u)
0.10.1 0.100.10
0.20.2 0.220.22
0.30.3 0.350.35
0.40.4 0.510.51
0.50.5 0.690.69
0.60.6 0.910.91
0.70.7 1.201.20
0.80.8 1.601.60
0.90.9 2.302.30

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

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

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