逆関数法
概要
逆関数法(英: inversion method, inverse transform method)は、計算機シミュレーションなどで、ある特定の
確率分布に従う乱数を生成するために用いられる基本的な手法の一つです。この方法は、比較的扱いやすい標準一様分布に従う乱数を基にして、目的とする分布の
累積分布関数の逆関数を適用することで、所望の乱数を得るものです。そのため、逆関数サンプリング法(英: inverse transform sampling)とも呼ばれます。
原理
目的の
確率分布に従う
確率変数を $X$ とし、その
累積分布関数を $F(x) = P\{X \leq x\}$ とします。ここで、 $[0,1)$ の区間で定義される標準一様分布に従う
確率変数を $U$ とします。
もし
累積分布関数 $F(x)$ が連続かつ単調増加であれば、その逆関数 $F^{-1}(y)$ が存在します。このとき、新たに定義される
確率変数 $X := F^{-1}(U)$ は、元の
累積分布関数 $F(x)$ を持つ
確率分布に従うことが示されます。これは、確率の等式 $P\{F^{-1}(U) \leq x\} = P\{U \leq F(x)\} = F(x)$ から確認できます。
一般的に、
累積分布関数 $F(x)$ は右連続で単調非減少な関数であり、必ずしも厳密な意味での逆関数が常に存在するわけではありません。しかし、このような場合でも、逆関数 $F^{-1}(y)$ を
$$F^{-1}(y) := \inf \{x \mid F(x) \geq y\}, \quad 0 \leq y \leq 1$$
と定義することで、同様に
確率変数 $X = F^{-1}(U)$ が目的の分布に従うように生成できます。
適用と課題
逆関数法は、理論的には連続分布と離散分布のどちらに対しても適用可能です。しかし、この方法を実際に用いる上ではいくつかの課題があります。主な課題は、目的とする
確率分布の
累積分布関数 $F(x)$ を解析的に求めることが難しい場合や、その逆関数 $F^{-1}(y)$ を閉じた形で表現できない場合があることです。また、逆関数が求められたとしても、その計算に時間がかかり、高速な乱数生成に適さない場合もあります。
具体的な例
逆関数が比較的容易に求められる分布に対しては、逆関数法が直接適用されます。
指数分布: 期待値 $\mu > 0$ の指数分布の
累積分布関数は $F(x) = 1 - e^{-x/\mu}$ です。その逆関数は $F^{-1}(y) = -\mu \ln{(1-y)}$ となります。したがって、$X = -\mu \ln{(1-U)}$ によって指数分布に従う乱数を生成できます。さらに、 $1-U$ も標準一様分布に従うため、計算効率を考慮して $X = -\mu \ln{(U)}$ の形を用いることも一般的です(ただし、 $U=0$ の場合の扱いに注意が必要です)。
コーシー分布: 尺度母数 $\sigma > 0$ の
コーシー分布の
累積分布関数は $F(x) = \frac{1}{2} + \frac{1}{\pi} \arctan \frac{x}{\sigma}$ です。その逆関数は $F^{-1}(y) = \sigma \tan{\pi \left(y-\frac{1}{2}\right)}$ となります。これにより、$X = \sigma \tan{\pi \left(U-\frac{1}{2}\right)}$ で
コーシー分布に従う乱数を生成できます。
離散分布: 離散分布の場合も、
累積分布関数の逆関数を $F^{-1}(y) = \inf \{x \mid F(x) \geq y\}$ と定義することで適用可能です。
確率変数がある値 $x_k$ を取る確率を $p_k$ とするとき、累積確率の和 $\sum_{i=1}^{k-1} p_i < U \leq \sum_{i=1}^k p_i$ を満たす $k$ に対応する $x_k$ を生成します。つまり、$X = x_k$ となります。ただし、離散値の数が多くなると、この条件を満たす $k$ を探す処理に時間がかかるため、効率が悪くなることがあります。
逆関数が扱いにくい場合
累積分布関数やその逆関数が解析的に求まらない、または計算が複雑な場合、逆関数法をそのまま適用することは困難です。このような場合には、以下のような代替的なアプローチが考えられます。
求根アルゴリズムの利用: $F(x) = u$ となる $x$ を求めるために、 $F(x) - u = 0$ の根を数値的に探索する手法です。ニュートン法などの求根アルゴリズムを利用できます。この際、
累積分布関数の導関数である確率密度関数 $p(x) = F'(x)$ が利用できる場合があります。
区分的線形累積分布関数の構築: 確率密度関数から、
累積分布関数を区分的に線形な関数で近似し、それを用いて乱数を生成する方法もあります。
同時確率分布への適用: 複数の
確率変数の
同時分布からサンプリングする場合、
条件付き確率の考え方 $P(A, B) = P(B \mid A) P(A)$ を利用して、単変数のサンプリング問題に分解し、順次サンプリングを行うアプローチがあります。ただし、問題によっては
マルコフ連鎖モンテカルロ法などの他のサンプリング手法がより適している場合もあります。
*
正規分布の場合: 正規分布の
累積分布関数の逆関数(分位関数)は解析的に簡単な形で得られませんが、分位関数の多項式近似を用いることで、逆関数法でも精度良く
正規分布に従う乱数を生成できます。実際に、統計解析ソフトウェア
R言語などではこの手法が利用されています。なお、
正規分布の乱数生成には、ボックス=ミュラー法やジッグラト法など、逆関数法とは異なる高速なアルゴリズムも知られています。
逆関数法は、その原理が直感的で理解しやすいため、多くの基本的な
確率分布の乱数生成に用いられますが、効率や実装の容易さは分布の性質に依存します。