ソボル数列(LP τ数列または2進数の( t , s )数列とも呼ばれる)は、準ランダム低乖離数列の一種である。1967年にロシアの数学者イリヤ・M・ソボル(Илья Меерович Соболь)によって初めて導入された。[1]
これらのシーケンスは、2 を基数として単位間隔のより細かい均一なパーティションを連続的に形成し、各次元の座標を並べ替えます。
良い分布s次元単位超立方体
I s = [0,1] sを s次元単位超立方体とし、f をI s上の実積分関数とする。ソボルの当初の動機は、 I s上の数列x n を構築して、
収束は可能な限り速くなります。
和が積分に収束するためには、点x nがI sを埋めて穴を最小にする必要があることは多かれ少なかれ明らかです。もう 1 つの良い特性は、 x nをI sの低次元面に投影しても穴がほとんど残らないことです。したがって、低次元では多くの点が同じ場所にあるため、積分推定には役に立たず、 I sの均一な充填は適格ではありません。
これらの良い分布は、基数bの ( t , m , s )-ネットおよび ( t , s )-シーケンスと呼ばれます。これらを導入するには、まず基数bの基本s区間を、次の形式の I sのサブセットとして定義します。
ここで、a jとd j は負でない整数であり、すべてのj は{1, ...,s} の範囲内にあります。
2 つの整数が与えられたとき、基数bの( t , m , s )-ネットは、 b m個のIの点のシーケンスx nであり、超体積の基数bのすべての基本区間Pに対してλ ( P ) = b t−mとなります。
負でない整数tが与えられたとき、基数bの( t , s ) シーケンスは、すべての整数に対して、シーケンスが基数bの( t , m , s ) ネットであるような点x nの無限シーケンスです。
ソボルは論文の中で、Π τメッシュとLP τシーケンスについて説明しました。これらはそれぞれ、基数 2 の( t , m , s ) ネットと ( t , s ) シーケンスです。基数bの ( t , m , s ) ネットと ( t , s ) シーケンス(ニーダーライターシーケンスとも呼ばれる)という用語は、1988 年にHarald Niederreiterによって造られました。[2]ソボルシーケンスという用語は、後期の英語圏の論文で、ハルトン、フォーレ、その他の低差異シーケンス と比較して導入されました。
高速アルゴリズム
より効率的なグレイコードの実装は、アントノフとサレエフによって提案されました。[3]
Sobol 数の生成に関しては、n番目のポイントの描画を構築するためにn の代わりにグレイ コードを使用することで明らかに支援されています。
すでにn − 1までのソボルシーケンスの描画をすべて生成し、必要なすべての次元の 値x n −1, jをメモリに保存しているとします。グレイコードG ( n ) は、前のコードG ( n − 1 ) と 1 つだけ、たとえばk番目のビット ( n − 1の右端のゼロビット) だけ異なるため、 x n −1のすべてをx nに伝播させるには、各次元に対して1 回のXOR演算を 実行するだけで済みます。つまり 、
追加の均一性特性
ソボルは、特性AとA'として知られる追加の均一性条件を導入した。[4]
- 意味
- 低矛盾シーケンスは、長さ 2 dのd次元シーケンスの任意のバイナリセグメント(任意のサブセットではない) に対して、単位ハイパーキューブをその長さの延長に沿って半分に細分化して得られる各 2 dハイパーキューブに正確に 1 つの描画が存在する場合に、特性 A を満たすと言われます。
- 意味
- 低矛盾シーケンスは、長さ 4 dのd次元シーケンスの任意のバイナリセグメント(任意のサブセットではない) に対して、単位ハイパーキューブをその長さの延長に沿って 4 つの等しい部分に細分化して得られる各 4 dハイパーキューブに正確に 1 つの描画が存在する場合、特性 A' を満たすと言われます。
特性 A と A' を保証する数学的条件があります。
- 定理
- d次元ソボル列は、次の場合に限り特性Aを持つ
。
- ここで、V d は、次のように定義される
d × dの2進行列である。
- ここで、v k , j , mは方向数の2進小数点以下のm番目の桁を表します。v k , j = (0. v k , j ,1 v k , j ,2 ...) 2。
- 定理
- d次元ソボル列は、次の場合に限り特性A'を持つ
。
- ここでU dは2 d × 2 dの2進行列であり、次のように定義される。
- ここで、v k , j , mは方向数の2進小数点以下のm番目の桁を表します。v k , j = (0. v k , j ,1 v k , j ,2 ...) 2。
プロパティ A と A' のテストは独立しています。したがって、プロパティ A と A' の両方、またはいずれか 1 つのみを満たす Sobol' シーケンスを構築できます。
ソボル数の初期化
Sobol' シーケンスを構築するには、方向番号v i、jのセットを選択する必要があります。初期の方向番号の選択にはある程度の自由度があります。[注 1]したがって、選択した次元に対して Sobol' シーケンスの異なる実現を受け取ることができます。初期の番号の選択が適切でないと、計算に使用する際に Sobol' シーケンスの効率が大幅に低下する可能性があります。
おそらく、初期化数の最も簡単な選択は、l番目の左端のビットを設定し、他のすべてのビットを 0 にする、つまり、すべてのkとjに対してm k , j = 1にすることです。この初期化は通常、単位初期化と呼ばれます。ただし、このようなシーケンスは、低次元であってもプロパティ A と A' のテストに失敗するため、この初期化は適切ではありません。
実装と可用性
さまざまな次元数に適した初期化番号が複数の著者によって提供されています。たとえば、Sobol'は51次元までの初期化番号を提供しています。 [5] BratleyとFoxも同じ初期化番号セットを使用しています。[6]
高次元の初期化数はJoeとKuoから入手できます。[7] Peter Jäckelは著書「Monte Carlo methods in finance」で32次元までの初期化数を提供しています。[8]
その他の実装は、C、Fortran 77、またはFortran 90ルーチンとしてNumerical Recipesソフトウェアコレクションで利用できます。 [9] JoeとKuoの初期化数に基づく最大1111次元の無料/オープンソース実装は、Cで利用できます。[10]また、Python [11] [12]およびJuliaでは最大21201次元です。[13]最大1111次元の別の無料/オープンソース実装は、C++、Fortran 90、Matlab、およびPythonで利用できます。[14]
市販のSobol'シーケンスジェネレータは、例えばNAGライブラリ[15]から入手できます。BRODA Ltd. [16] [17 ]は、最大次元131072までの追加の均一性プロパティAとA'を備えたSobol'シーケンスジェネレータとスクランブルSobol'シーケンスジェネレータを提供しています。これらのジェネレータはI. Sobol'教授と共同開発されました。MATLAB [18]には、統計ツールボックスの一部として次元1111までのSobol'シーケンスジェネレータが含まれています。
参照
注記
- ^ これらの番号は通常、初期化番号と呼ばれます。
参考文献
- ^ Sobol', IM (1967)、「立方体内の点の分布と積分の近似評価」。Zh . Vych. Mat. Mat. Fiz. 7 : 784–802 (ロシア語); USSR Comput. Maths. Math. Phys. 7 : 86–112 (英語)。
- ^ Niederreiter, H. (1988). 「低矛盾および低分散シーケンス」、Journal of Number Theory 30 : 51–70。
- ^ Antonov, IA および Saleev, VM (1979)「LP τシーケンスを計算する経済的な方法」Zh. Vych. Mat. Mat. Fiz. 19 : 243–245 (ロシア語); USSR Comput. Maths. Math. Phys. 19 : 252–256 (英語)。
- ^ Sobol', IM (1976)「均一に分布したシーケンスと追加の均一な特性」。Zh . Vych. Mat. Mat. Fiz. 16 : 1332–1337 (ロシア語); USSR Comput. Maths. Math. Phys. 16 : 236–242 (英語)。
- ^ Sobol', IM および Levitan, YL (1976)。「多次元立方体内に均一に分布する点の生成」Tech. Rep. 40、応用数学研究所、ソ連科学アカデミー(ロシア語)。
- ^ Bratley, P. および Fox, BL (1988)、「アルゴリズム 659: Sobol 準ランダム シーケンス ジェネレーターの実装」。ACM Trans. Math. Software 14 : 88–100。
- ^ 「Sobol' シーケンスジェネレーター」。ニューサウスウェールズ大学。2010 年 9 月 16 日。2013年 12 月 20 日閲覧。
- ^ Jäckel, P. (2002)「金融におけるモンテカルロ法」ニューヨーク:John Wiley and Sons。( ISBN 0-471-49741-X )
- ^ Press, WH, Teukolsky, SA, Vetterling, WT, Flannery, BP (1992)「Numerical Recipes in Fortran 77: The Art of Scientific Computing, 2nd ed.」ケンブリッジ大学出版局、ケンブリッジ、イギリス
- ^ NLopt ライブラリの Sobol シーケンスの C 実装 (2007)。
- ^ 「SciPy API リファレンス: scipy.stats.qmc.Sobol」。
- ^ Imperiale、G.「pyscenarios: Python シナリオ ジェネレーター」。
- ^ Sobol.jl パッケージ: Sobol シーケンスの Julia 実装。
- ^ Sobol 準ランダムシーケンス、C++/Fortran 90/Matlab/Python 用コード、J. Burkardt 著
- ^ 「Numerical Algorithms Group」. Nag.co.uk. 2013-11-28 . 2013-12-20閲覧。
- ^ I. Sobol'、D. Asotsky、A. Kreinin、 S . Kucherenko (2011)。「高次元 Sobol' ジェネレータの構築と比較」(PDF)。Wilmott Journal。11月(56): 64–79。doi :10.1002/wilm.10056。
{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク) - ^ 「ブロダ」。ブローダ。 2024-01-23 。2024 年 1 月 23 日に取得。
- ^ sobolset 参照ページ。2017 年 7 月 24 日閲覧。
外部リンク
- ACM のアルゴリズム集(アルゴリズム 647、659、および 738 を参照)
- Sobol シーケンス ジェネレーターのプログラミング コードのコレクション
- Sobol シーケンスのフリーウェア C++ ジェネレーター
