逆変換サンプリング

逆変換サンプリング(反転サンプリング逆確率積分変換逆変換法スミルノフ変換とも呼ばれる)は、疑似乱数サンプリング、つまり累積分布関数が与えられた任意の確率分布からランダムにサンプル番号を生成するための基本的な方法です。

逆変換サンプリングは、0から1までの数値を確率として解釈し、その数値を一様サンプルとして抽出し、確率変数の累積分布関数における最小の数値を返します例えば平均0で標準偏差が1の標準正規分布を想像してください。以下の表は、一様分布から抽出されたサンプルと、それらの標準正規分布における表現を示しています。

均一サンプルから正規サンプルへの変換
.50
.9751.95996
.9952.5758
.9999994.75342
1-2 −528.12589
正規分布の逆変換サンプリング

曲線の下の面積の割合をランダムに選び、その割合の面積がちょうどその数値の左側に現れるように、定義域内の数値を返します。直感的に言えば、裾野の端にある数値を選ぶ可能性は低いでしょう。裾野の端にある数値は面積が非常に小さいため、0または1に非常に近い数値を選ぶ必要があるからです。

計算的には、この手法は分布の分位関数を計算すること、つまり分布の累積分布関数(CDF)(定義域内の数値を0から1の間の確率にマッピングする)を計算し、その関数を反転することを意味します。これが、この手法の多くの名称で「逆」または「反転」という用語が使われている理由です。離散分布の場合、CDFの計算は一般にそれほど難しくありません。分布の様々な点における個々の確率を単純に合計するだけです。しかし、連続分布の場合は、分布の確率密度関数(PDF)を積分する必要がありますが、これはほとんどの分布(正規分布を含む)では解析的に行うことは不可能です。その結果、この手法は多くの分布に対して計算効率が悪く、他の手法が好まれます。しかし、棄却標本抽出法に基づくサンプラーなど、より一般的に適用可能なサンプラーを構築するには便利な手法です

正規分布の場合対応する分位関数の解析的表現が存在しないことから、計算的には他の手法(例えば、ボックス・ミュラー変換)が適している可能性がある。単純な分布であっても、逆変換サンプリング法は改良の余地があることは多い。[1]例えば、ジッグラトアルゴリズム棄却サンプリングを参照のこと。一方、中程度の次数多項式を用いれば正規分布の分位関数を極めて正確に近似することが可能であり、実際、この手法は十分に高速であるため、統計パッケージRでは、逆サンプリングが正規分布からのサンプリングのデフォルト手法となっている。[2]

正式な声明

任意の確率変数 に対して、確率変数 はと同じ分布に従います。ここで は累積分布関数一般化逆関数であり上で一様です[3]

連続ランダム変数の場合逆確率積分変換 は、累積分布関数を持つ連続ランダム変数の場合、ランダム変数が上で一様であることを示す確率積分変換の逆です

からへの反転手法のグラフ。右下には通常の関数、左上にはその反転が表示されています。

直感

から、 CDFを使用して を生成したいとします。は連続した厳密に増加する関数であると仮定します。これにより、優れた直感が得られます。

となるような厳密に単調な変換を見つけられるかどうかを確認したい

ここで、最後のステップでは、が 上で均一である場合にが使用されます

つまり、は の逆関数、つまり、

したがって

方法

逆変換サンプリングの概略図。 の逆関数はで定義できます
逆変換サンプリングが均一に分布した乱数から正規分布した乱数を生成する様子を示すアニメーション

逆変換サンプリング法が解決する問題は次のとおりです。

  • を累積分布関数によって分布が記述できる確率変数とします
  • この分布に従って分布する値を生成したいと考えています。

逆変換サンプリング方式は次のように機能します。

  1. 区間 の標準一様分布から乱数を生成する。つまり、
  2. 目的の CDF の一般化逆関数、つまり を見つけます
  3. を計算します。計算された確率変数は分布を持ち、したがって と同じ法則に従います

言い換えると、累積分布関数と一様変数が与えられた場合、確率変数は分布に従います[3]

連続の場合、そのような逆関数を微分方程式を満たすオブジェクトとして扱うことができる。[4]そのような微分方程式の中には、非線形であるにもかかわらず、明示的な冪級数解を許容するものもある。 [5]

逆行列を求めるには、
ここからステップ 1、2、3 を実行します。
  • 別の例として、x ≥ 0(それ以外は0)の指数分布を用いる。y=F(x)を解くと逆関数が得られる。
つまり、a からいくつかを抽出して計算すると、これは指数分布に従います。
この考え方は次のグラフに示されています。
乱数 y i は、0から1までの一様分布、すなわちY ~ U(0, 1)から生成されます。これらはy軸上に色付きの点として描画されます。各点はx=F −1 (y)に従ってマッピングされ、2つの例の点には灰色の矢印が示されています。この例では、指数分布を使用しています。したがって、x ≥ 0の場合、確率密度は、累積分布関数は です。したがって、 となります。この方法を用いると、指数分布で予想される通り、多くの点が0に近づき、高いx値を持つ点はごくわずかであることがわかります。
yではなく1-yから始めても分布は変わらないことに注意してください。したがって、計算上は[0, 1]の範囲で乱数yを生成し、単純に計算するだけで十分です。

正しさの証明

を累積分布関数としその一般逆関数とする(CDFは弱単調かつ右連続なので下限値を使用する[6] 。

主張:が上の均一ランダム変数である場合、その CDFは です

証拠:

切り捨て分布

逆変換サンプリングは、棄却サンプリングのコストをかけずに、区間 上の切り捨て分布のケースに簡単に拡張できます。同じアルゴリズムを使用できますが、0 から 1 の間で均一に分布する乱数を生成する代わりに、から の間均一に分布する を生成し、再度 を取ります

反転回数の削減

多数のサンプルを得るためには、分布の逆行列を同数だけ実行する必要がある。多数のサンプルを得ながら逆行列の回数を減らす一つの方法は、多項式カオス展開の枠組みの中で、いわゆる確率的コロケーション・モンテカルロ・サンプラー(SCMCサンプラー)を適用することである。これにより、解析的に逆行列が利用可能な変数(例えば標準正規分布)の独立サンプルを用いて、元の分布の逆行列を数回実行するだけで、任意の数のモンテカルロ・サンプルを生成することができる。[7]

ソフトウェア実装

逆サンプリング法が閉形式で利用できない場合に、逆数の近似値を用いて逆サンプリング法を適用するためのソフトウェア実装が存在します。例えば、ユーザーがPDF [8]やCDFなどの分布に関する情報を提供すれば、逆数の近似値を計算することができます。

  • CライブラリUNU.RAN [9]
  • RライブラリRunuran [10]
  • scipy.statsのPythonサブパッケージサンプリング[11] [12]

参照

参考文献

  1. ^ Luc Devroye (1986). 非一様乱数変量生成(PDF) . ニューヨーク: Springer-Verlag. 2014年8月18日時点のオリジナル(PDF)からアーカイブ。 2012年4月12日閲覧
  2. ^ 「R: 乱数生成」。
  3. ^ ab McNeil, Alexander J.; Frey, Rüdiger; Embrechts, Paul (2005).定量的リスク管理. プリンストン・シリーズ・イン・ファイナンス. プリンストン大学出版局, プリンストン, ニュージャージー州. p. 186. ISBN 0-691-12255-5
  4. ^ Steinbrecher, György; Shaw, William T. (2008年3月19日). 「Quantile mechanics」. European Journal of Applied Mathematics . 19 (2): 87– 112. doi :10.1017/S0956792508007341. S2CID  6899308.
  5. ^ Arridge, Simon; Maass, Peter; Öktem, Ozan; Schönlieb, Carola-Bibiane (2019). 「データ駆動型モデルを用いた逆問題の解決」. Acta Numerica . 28 : 1– 174. doi : 10.1017/S0962492919000059 . ISSN  0962-4929. S2CID  197480023.
  6. ^ Luc Devroye (1986). 「第2.2節 F(X) = U の数値解による逆変換」(PDF) .非一様乱数生成. ニューヨーク: Springer-Verlag.
  7. ^ LA Grzelak, JAS Witteveen, M. Suarez, CW Oosterlee. 確率的コロケーション・モンテカルロ・サンプラー:高コスト分布からの高効率サンプリング. https://ssrn.com/abstract=2529691
  8. ^ Derflinger, Gerhard; Hörmann, Wolfgang; Leydold, Josef (2010). 「密度のみが既知の場合の数値逆変換によるランダム変量生成」(PDF) . ACM Transactions on Modeling and Computer Simulation . 20 (4). doi :10.1145/945511.945517.
  9. ^ 「UNU.RAN - ユニバーサル非一様乱数ジェネレータ」。
  10. ^ 「Runuran: 'UNU.RAN'乱数変数ジェネレータへのRインターフェース」2023年1月17日。
  11. ^ 「乱数ジェネレーター (Scipy.stats.sampling) — SciPy v1.12.0 マニュアル」。
  12. ^ Baumgarten, Christoph; Patel, Tirth (2022). 「Pythonによるランダム変数の自動生成」.第21回Python in Science Conference Proceedings . pp.  46– 51. doi :10.25080/majora-212e5952-007.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Inverse_transform_sampling&oldid=1307944637"