逆関数法

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

逆関数サンプリング法(ぎゃくかんすうサンプリングほう、: inverse transform sampling)とは、コンピュータで用いられる、任意の確率分布に従う擬似乱数を生成するサンプリング法である。

確率分布 P(x) に従う確率変数を生成するために、標準一様分布 U(0,1) に従う変数 u累積分布関数 F(x) の逆関数 F−1(u) を作用させて生成する。F−1(u) は P(x) の分位関数である。

方法[編集]

ここではP(x)を与えられた確率分布とし P(x)の累積分布関数F(x)とする。

  1. 標準一様分布 U(0,1)に従う擬似乱数 u を生成する。
  2. uF−1を作用させ、新たな変数 v = F−1 (u) を得る。このvがP(x)に従う擬似乱数となる。

証明[編集]

U (x)(水色の図形) が、関数 y = f (x) により P (y)(ピンク色の図形) に移される。f により各長方形の幅が変化するが、面積(確率)は一定に保たれる。このため、 が成り立つ。

u を標準一様分布 U(0,1) に従う確率変数とする。uの確率分布は以下の関数 U (x) で表される。

ここで u のとりうる区間 [0,1] を n 個の微小区間 に分割する。このとき u が区間 におさまる確率は以下の式で表される。(なお簡便のため微小区間とその区間の長さを同じ記号で表す。)

ここで u に関数 f を作用させた新たな確率変数 v を考える。微小区間 が関数 f により微小区間 に移されるとすると、 u が区間 におさまる確率は、 v が区間 におさまる確率と等しいはずである。v が確率分布 P (x) に従うとすると、この関係は以下の式で表される。

ここで は微小区間 内の実数を表す。1からnについて和をとると以下の式になる。

ここで は微小区間 内の実数を表す。 微小区間の極限をとると、和は積分になり以下の式が得られる。

ここでF(x)はP(x)の累積分布関数である。 以上から

となり、 f F−1 であることが分かる。

積分や逆関数を求めるのが困難な場合[編集]

逆関数サンプリング法では与えられた確率分布の累積分布関数とその逆関数を計算する必要がある。それらの関数の解析解が既知である場合は、単純なプログラムで与えられた分布に従う擬似乱数を生成することができる。しかしこれらを解析的に求めるのは困難な場合もある。

求根アルゴリズムを使用する方法[編集]

確率密度関数を数値積分して累積分布関数の F(x) を求め、F(x) = u は F(x) - u = 0 の事なので求根アルゴリズムニュートン法など)で x を求めてサンプリングする方法もある。F(x) - u の導関数は P(x) なので、それを求根アルゴリズムでは使用できる。

区分的線形累積分布関数を使用する方法[編集]

確率密度関数から区分的線形累積分布関数を作り、そこから求める方法もある[1]

同時確率分布の場合[編集]

条件付き確率の定義 P(A, B) = P(B | A) P(A) を使い、単変量サンプリング問題に分割し、A → B と順番にサンプリングする方法もある。ただし、問題によっては、マルコフ連鎖モンテカルロ法などの他のサンプリング法を使用した方が良い場合もある。

正規分布の場合[編集]

正規分布に従う擬似乱数の生成法としては、ボックス=ミュラー法などが知られる。正規分布の分位関数は解析的に求められないが、分位関数の多項式近似を用いた逆関数法でも十分に精度よく正規分布に従う擬似乱数を生成することができ、実際にR言語では正規分布に従う擬似乱数の生成に逆関数サンプリング法が使われている[2]。計算が高速な手法としてはジッグラト法英語版がある。

出典[編集]

[ヘルプ]

関連項目[編集]