逆関数法

逆関数法（ぎゃくかんすうほう、）とは、累積分布関数の逆関数を用いて、標準一様分布に従う確率変数から、所望の分布に従う確率変数を生成させる方法。逆関数サンプリング法（ぎゃくかんすうサンプリングほう、）とも呼ばれる。計算機シミュレーションにおいて、一様分布に従う乱数から、所望の乱数を生成させるのに用いられる。
方法.
 を生成させたい確率分布に従う確率変数とし、 をその累積分布関数とする。 が連続な単調増加関数であれば、逆関数 が存在する。 を上の一様分布に従う確率変数とすると、
は累積分布関数 をもつ確率分布に従う確率変数となる。実際、これは
であることから確認できる。
一般に は右連続な単調非減少関数であり、通常の意味での逆関数が存在するとは限らないが、その逆関数 を
で定義すれば、同様な結果が得られる。このように、一様分布に従う確率変数 と累積分布関数の逆関数 から所望の分布に従う確率変数 を生成させる方法を逆関数法という。逆関数法は、原理的には連続分布、離散分布に適用可能であるが、必ずしも逆関数が容易にも求まるとは限らず、また高速な乱数生成が得られるとは限らない。
例.
指数分布.
期待値を とする指数分布の累積分布関数
に対し、逆関数は
であり、
となる。 も標準一様分布に従うため、高速化のために を で置き換えた
を使うことができる。この場合、での処理に注意する必要がある。
コーシー分布.
を とするコーシー分布の累積分布関数
に対し、その逆関数は
であり、
となる。
離散分布.
離散分布に従う確率変数 についても、累積分布関数の逆関数をと定義することで、逆関数法を適用できる。値 を取る確率が である離散分布において、
が満たされるならば、
であるから、
となる。但し、この方法は の取りうる値が多いと大小関係の評価時間がかかり、高速化には不向きである。
一覧.
逆関数が陽に求まり、逆関数法が直接適用できる連続分布として、以下の例がある。
積分や逆関数を求めるのが困難な場合.
逆関数サンプリング法では与えられた確率分布の累積分布関数とその逆関数を計算する必要がある。それらの関数の解析解が既知である場合は、単純なプログラムで与えられた分布に従う擬似乱数を生成することができる。しかしこれらを解析的に求めるのは困難な場合もある。
求根アルゴリズムを使用する方法.
確率密度関数を数値積分して累積分布関数の F(x) を求め、F(x) = u は F(x) - u = 0 の事なので求根アルゴリズム（ニュートン法など）で x を求めてサンプリングする方法もある。F(x) - u の導関数は P(x) なので、それを求根アルゴリズムでは使用できる。
区分的線形累積分布関数を使用する方法.
確率密度関数から区分的線形累積分布関数を作り、そこから求める方法もある。
同時確率分布の場合.
条件付き確率の定義 P(A, B) = P(B | A) P(A) を使い、単変量サンプリング問題に分割し、A → B と順番にサンプリングする方法もある。ただし、問題によっては、マルコフ連鎖モンテカルロ法などの他のサンプリング法を使用した方が良い場合もある。
正規分布の場合.
正規分布に従う擬似乱数の生成法としては、ボックス＝ミュラー法などが知られる。正規分布の分位関数は解析的に求められないが、分位関数の多項式近似を用いた逆関数法でも十分に精度よく正規分布に従う擬似乱数を生成することができ、実際にR言語では正規分布に従う擬似乱数の生成に逆関数サンプリング法が使われている。計算が高速な手法としてはがある。