シンプレックスからの均一なサンプリング


29

私は、N個の乱数の配列を生成するアルゴリズムを探しています。N個の数字の合計は1で、すべての数字は0と1の範囲内にあります。たとえば、N = 3、ランダムポイント(x、y、 z)三角形内にある必要があります:

x + y + z = 1
0 < x < 1
0 < y < 1
0 < z < 1

理想的には、エリア内の各ポイントに等しい確率が必要です。難しすぎる場合は、要件を削除できます。ありがとう。


ターゲット配布とは何ですか?何を試しましたか?
ラファエル

3
常に拒否サンプリングが行われることに注意してください:一様な数字をサンプリングし、数字がならない場合は拒否します。ここでは、予想される反復回数が不快なほど多いため、別のことを行う必要があります。1n1
ラファエル

回答:


28

最初に、サンプルを

x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1

サンプルポイントは要求されたエリアに高い確率で存在するため、これは大きな違いにはなりません。

これで、シンプレックスからポイントをサンプリングすることができます。3Dの例では、3Dで実現された2Dシンプレックス(三角形)を取得します。

このブログ投稿で、ランダムに均一にポイントを選択する方法について説明しました(コメントを参照)。

あなたの問題では、間隔から乱数を取得し、とを追加して個の数字のリストを取得することを意味します。リストをソートしてから、2つの連続した要素の違いを記録します。これにより、合計なるリストが得られます。さらに、このサンプリングは均一です。この考えは、ベイジアンブートストラップアンのドナルドB.ルービンにあります。統計学者。9、1981、130-134。0 1 0 1 、N + 1 、N 1n1(0,1)01n+1n1

たとえば()3つの乱数があり、ソートされたシーケンスを取得し、これにより差が得られます。構築により、これら4つの数値は合計1になります。n=40.4 0.2 0.10 0.1 0.2 0.4 10.1 0.1 0.2 0.6

別のアプローチは次のとおりです。ハイパーキューブからの最初のサンプル(つまりを忘れているx+y+z=1)で、サンプルポイントを正規化します。正規化は、 -hypercubeから -simplexへの投影です。シンプレックスの中心のポイントには、外側よりも「前イメージポイント」があることを直感的に明確にする必要があります。したがって、ハイパーキューブから均一にサンプリングする場合、シンプレックスで均一なサンプリングを行うことはできません。ただし、適切な指数分布でハイパーキューブからサンプリングすると、この効果は相殺されます。図は、両方の方法がどのようにサンプリングされるかを示しています。しかし、私はその単純な形式のために「ソート」方法を好みます。実装も簡単です。d 1dd1

2つのサンプリング方法の例


素朴なアイデア-から数字を引き出して正規化する-は間違っていると思います。0 1 n(0,1)
ラファエル

拡張回答であなたの質問に答えました。
A.シュルツ

1
ソートが均一な分布を与えることを示す簡単な証拠はありますか?私は確率の初歩的な背景しか持っていないので、紙は私の頭の上にあります。
チャオシュー

5
@ChaoXu は、シンプレックス内の数字とサブ区間への区間パーティションとの間に1対1の対応があることを観察します。サンプリングアルゴリズムは、「スロー」ランダム「間隔エンドポイント」に対応します。帰納法や条件付き確率を使用するなどして、それが均一であることを検証することができます。0 1 N 、N - 1 0 1 n(0,1)nn1(0,1)
サショニコロフ

1
@Orient:別の投稿で質問してください。コメントを誤用しないでください。
A.シュルツ14

8

これは、既存の回答に追加することです。

Devroyeは、この種の質問の優れたリファレンスです。第7章では、OPが後の統一次数統計を生成するために必要なアルゴリズムを示します。

一様な順序の統計を生成するには、サンプルをソートします。このアプローチには時間かかります。より速い方法(本で利用可能)は、 pdf から乱数をサンプリングすることを含み ます。(これらは均一なpdfの間隔です)。次に、値 をます。全体で時間でソートされます。(ここでA.Schulzの答えと重複しています-計算をより明確にするだけです)。[ 0 1 ] O N ログN N 、X 1... X N Eがxは、P1 )、 Y I 1 iがN = Σ 1 ... iが xはjでn[0,1]O(nlogn)nx1,,xnExp(1) On

(yi)1in=1ixj1nxj
O(n)

逆CDFサンプリングを介して、上の不均一なpdfをサンプリングするために、同じアプローチを適用できます。また、標準シンプレックス以外のシンプレックス(たとえば)で均一にサンプリングできるようにするトリックもあります。2 、X + 3 Y + Z = 5[0,1]2x+3y+z=5


ここで答えに従えば:stackoverflow.com/questions/2106503/…その後、指数分布から乱数を生成するには、対数の評価が必要になりますが、これは少し遅い場合があります。
R ZU

3
X[0] = 0
for i = 1 to N-1
    X[i] = uniform(0,1)
X[n] = 1
sort X[0..N]
for i = 1 to N
    Z[i] = X[i] - X[i-1]
return Z[1..N]

ここでuniform(0,1)は、0から1の間で独立して均一に分布する実数を返します。


5
これは、説明のないコードでのA.シュルツの答えですよね?
ラファエル

1

この論文を参照してください:Smith、N. and Tromble、R.、Sampling from Uniform from unit simplex


2
答えを読みやすい形式にフォーマットしてください。あなたはbibtexコンパイラではなく、人間のために書いています。また、論文がオンラインで入手できる場合、リンクを提供する方がはるかに効率的です。
デビッドリチャービー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.