低差異シーケンスを正規分布に変換するための最良の方法?


9

私はそれらのプロパティが有用であることを発見したので、しばらくの間、不一致の少ないシーケンスを均一分布に使用してきました(主にコンピュータグラフィックスでランダムな外観とインクリメンタルな方法で[0,1]を密にカバーする能力)。

たとえば、上記のランダム値、以下のHaltonシーケンス値:

http://i.stack.imgur.com/gCXrh.png

いくつかの財務分析計画にそれらを使用することを検討していましたが、均一な分布とは異なる分布が必要です。Marsaglia極アルゴリズムを介して均一分布から正規分布を生成することから始めましたが、結果は均一分布の場合ほど良くありません。

別の例、上でランダム、下のハルトン:

http://i.stack.imgur.com/NNcdH.png

私の質問は次のとおりです。カバレッジ、インクリメンタルフィルイン、複数の次元にわたる非相関など、均一な低い不一致シーケンスから取得するプロパティを使用して正規分布を取得するための最良の方法は何ですか?私は正しい軌道に乗っていますか、それともまったく異なるアプローチをとるべきですか?

(上記で使用している均一および正規分布のPythonコード:Gist 2566569


3
きっとあなたは自然で明白な答えを見てきました。それは確率変換を一様な値に適用することです。このアプローチはどのような点でニーズを満たしませんか?
whuber

それが、一様な入力からそのような分布を作成する通常の方法であると想定していたのですが、そのようなアルゴリズムを見つけるのに苦労しました(私は統計学者ではなくプログラマーなので、最初から検索を始めました)。私が見つけた方法は、Box Muller、Marsaglia Polar、Ziggarat、Ratio of Uniformsでした。これらはすべて、複数の入力サンプルを混合する必要があり、低不一致シーケンスで保持しようとしていた特性を破壊しているようです。次のページを見つけました。home.online.no / 〜pjacklam / notes / invnormで、必要な情報が得られました。
エドゥアールプアー

3
はい、そのサイトは正規分布の確率変換を実装しています。これは非常によく知られているので、これを調査するのに苦労した可能性があります。ランダムな値を生成するほとんどの代替方法は、暗黙的にこの方法を使用できると想定し、特別なケース(リストにある4つの方法を含む)でより効率的な方法を探すことです。
whuber

3
この場合、反転が唯一の有効な方法になります!
kjetil b halvorsen 2012年

ベータ分布の準ランダム値など、他の分布の準ランダム値も取得できるのでしょうか。
user315648 2014

回答:


5

確率変数から、パーセントポイント関数とも呼ばれるCDFの逆関数を使用して他の分布に変換できます。scipy.stats.norm.ppfとして実装されていますU(0,1)scipy


6

私は最近この問題に遭遇しました。単純に、ユニフォームからの変換はうまくいくと思ったので、1D Sobol(およびHalton)シーケンスを、乱数ジェネレーターをstd::normal_distribution<>変量に変換するシーケンスのように接続しました。驚いたことに、それは機能しませんでした。明らかに非正規分布を生成しました。

それでは、数値レシピ第3版の第7.3.9章のNormal_dev関数を使用して、 "Ratio-of-Uniforms"の方法でSobolまたはHaltonシーケンスから通常の数を生成しましたが、同じように失敗しました。次に、コードを見ると、2つの正規乱数を生成するために2つの均一な乱数が必要です。おそらく、私がSobol(またはHalton)2Dシーケンスを使用した場合、それは機能します。まあ、それは再び失敗しました。

「Box-Muller法」(コメントで述べた)について覚えていて、より幾何学的な解釈があるので、うまくいくと思いました。まあ、それはうまくいきました!私は他のテストを始めることに非常に興奮しました、分布は正常に見えます。

私が見た問題は、分布がランダムであるということではなく、塗りつぶしという点で、少しがっかりしましたが、結果を公開する準備ができていました。

それから私はより深い検索をしました(何を探すべきか知っていたので)、そしてこの件に関する論文がすでにあることがわかりました:http : //www.sciencedirect.com/science/article/pii/S0895717710005935

この論文では実際に主張されている

疑似乱数で使用される2つのよく知られた方法は、ボックスミュラー法と逆変換法です。一部の研究者や金融エンジニアは、不一致率の低いシーケンスでBox-Muller法を使用するのは誤りであり、代わりに逆変換法を使用する必要があると主張しています。このホワイトペーパーでは、Box–Muller法が低差異シーケンスで使用できることを証明し、その使用が実際に有利になる場合について説明します。

だから全体的な結論はこれです:

1)2D低矛盾シーケンスでBox-Mullerを使用して、正規分布シーケンスを取得できます。しかし、私のいくつかの実験では、通常の変換されたシーケンスでは、低い不一致/スペース、たとえば充填特性が失われていることを示しているようです。

2)逆の方法を使用できます。おそらく、低い不一致/スペース充填プロパティが保持されます。

3)レシオオブユニフォームは使用できません。

編集:このhttps://mathoverflow.net/a/144234は同じ結論を指しています。

私はイラストを作成しました(最初の図(Sobolのユニフォームの比率)は、得られた分布が正規ではないことを示していますが、オーター(Box-Mullerおよび比較のためのランダム)は)です:

数字

EDIT2:

重要な点は、低い不一致シーケンスの「分布」を変換できる方法を見つけたとしても、良好な充填特性を維持できるかどうかは明らかではないということです。したがって、本当にランダムな(標準の)正規分布よりも優れているわけではありません。不一致が少ない方法をまだ見つけていませんが、不均一な分布でうまく満たされます。私はそのような方法は非常に自明ではなく、おそらく未解決の問題だと思います。


上記の論文(sciencedirect.com/science/article/pii/S0895717710005935)では、最後の文は次のように書かれています。正規分布から。」これは、述べられた結論のポイント1と矛盾しませんか?
ngiann

@ngiann、矛盾しない。この論文は、分布はBM変換によって正しく取得されるが、他の方法によっては取得されないという私の同じ結論に達しました。文の2番目の部分(「しかし、低不一致/スペース充填プロパティは失われているようです。」)は、スペースの効率的な充填など、低不連続シーケンスで探す2次プロパティに関連しています。私の実験では、通常の変換されたシーケンスに変換されたプロパティは示されませんでした。私が正しく覚えていれば、紙はその特定の問題には入りません。結論を出すには、もっと研究が必要だと思います。
alfC

1

2つの良い方法があります。まず、上記のように、ガウス分布の逆数に対する正確な近似を使用できます。次に、任意の低差異シーケンスをガウスに変換できます。

2番目の方法はBox-Mullerです。この方法では、2つの入力番号(RおよびA)が必要で、2つの出力を生成します。2次元の低差異シーケンスが必要です。1つは(たとえば、Haltonシーケンスで)半径成分(R)と角度成分(A)の素数のペアが使用されます。放射成分についてはSqrt(-2 * Log(R))を取得し、角度成分についてはSin(2 * Pi * A)とCos(2 * Pi * A)を取得します。半径に2つの角度成分を(別々に)掛けると、2つのガウス分布が得られます。効率は上記と同じです。2つの準ランダム入力と2つのガウス出力。

問題の次元に応じて、多次元の低差異シーケンスを使用できます。


0

最もネイティブな方法は、逆CDFを使用して通常のガウス分布に変換することですが、これにも問題があります。たとえば、ランク1のラティスで作成されたLDSポイントセットがある場合、開始点は常に(0,0)であるため、これを変換するには少しシフトが必要です。コーナー(1,1)。

これまでのところまだ問題はありませんが、理想的なガウス分布の場合、N(0,1)+ N(0,1)は差と同じ分布を与えるはずです。ただし、これは、各変数のランク1ラティスLDSとiCDFを使用する場合には当てはまりません。各変数の開始点は、(Nに依存)のような特定のiCDFを与えるため、違いは。- 6 σ3σ6σ

そして、それは極端な値であり、本当に系統的なエラーを引き起こします(たとえば、反対側でを取得することはありません)。変換されたLDSを合計と差についても検査し、そのような極端な点をチェックし、スキューと尖度をチェックすることをお勧めします。+6σ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.