Sei sulla pagina 1di 6

Sobol sequence

256 points from the first 256 points for the 2,3 Sobol sequence (top) compared with a pseudorandom number
source (bottom). The Sobol sequence covers the space more evenly. (red=1,..,10, blue=11,..,100,
green=101,..,256)

Sobol sequences (also called LPτ sequences or (t, s) sequences in base 2) are an example of
quasi-random low-discrepancy sequences. They were first introduced by the Russian
mathematician Ilya M. Sobol (Илья Меерович Соболь) in 1967.[1]

These sequences use a base of two to form successively finer uniform partitions of the unit interval
and then reorder the coordinates in each dimension.

Contents
Good distributions in the s-dimensional unit hypercube
A fast algorithm
Additional uniformity properties
The initialisation of Sobol numbers
Implementation and availability
See also
Notes
References
External links

Good distributions in the s-dimensional unit hypercube


Let Is = [0,1]s be the s-dimensional unit hypercube, and f a real integrable function over Is. The
original motivation of Sobol was to construct a sequence xn in Is so that

and the convergence be as fast as possible.

It is more or less clear that for the sum to converge towards the integral, the points xn should fill Is
minimizing the holes. Another good property would be that the projections of xn on a lower-
dimensional face of Is leave very few holes as well. Hence the homogeneous filling of Is does not
qualify because in lower dimensions many points will be at the same place, therefore useless for
the integral estimation.

These good distributions are called (t,m,s)-nets and (t,s)-sequences in base b. To introduce them,
define first an elementary s-interval in base b a subset of Is of the form

where aj and dj are non-negative integers, and for all j in {1, ...,s}.

Given 2 integers , a (t,m,s)-net in base b is a sequence xn of bm points of Is such that


for all elementary interval P in base b of hypervolume λ(P) = bt−m.

Given a non-negative integer t, a (t,s)-sequence in base b is an infinite sequence of points xn such


that for all integers , the sequence is a (t,m,s)-net in base b.

In his article, Sobol described Πτ-meshes and LPτ sequences, which are (t,m,s)-nets and (t,s)-
sequences in base 2 respectively. The terms (t,m,s)-nets and (t,s)-sequences in base b (also called
Niederreiter sequences) were coined in 1988 by Harald Niederreiter.[2] The term Sobol sequences
was introduced in late English-speaking papers in comparison with Halton, Faure and other low-
discrepancy sequences.

A fast algorithm
A more efficient Gray code implementation was proposed by Antonov and Saleev.[3]

As for the generation of Sobol numbers, they are clearly aided by the use of Gray code
instead of n for constructing the n-th point draw.
Suppose we have already generated all the Sobol sequence draws up to n − 1 and kept in memory
the values xn−1,j for all the required dimensions. Since the Gray code G(n) differs from that of the
preceding one G(n − 1) by just a single, say the k-th, bit (which is a rightmost bit of n − 1), all that
needs to be done is a single XOR operation for each dimension in order to propagate all of the xn−1
to xn, i.e.

Additional uniformity properties


Sobol introduced additional uniformity conditions known as property A and A’.[4]

Definition
A low-discrepancy sequence is said to satisfy Property A if for any binary segment (not an
arbitrary subset) of the d-dimensional sequence of length 2d there is exactly one draw in
each 2d hypercubes that result from subdividing the unit hypercube along each of its length
extensions into half.

Definition
A low-discrepancy sequence is said to satisfy Property A’ if for any binary segment (not an
arbitrary subset) of the d-dimensional sequence of length 4d there is exactly one draw in
each 4d hypercubes that result from subdividing the unit hypercube along each of its length
extensions into four equal parts.

There are mathematical conditions that guarantee properties A and A'.

Theorem
The d-dimensional Sobol sequence possesses Property A iff

where Vd is the d × d binary matrix defined by

with vk,j,m denoting the m-th digit after the binary point of the direction number vk,j =
(0.vk,j,1vk,j,2...)2.

Theorem
The d-dimensional Sobol sequence possesses Property A' iff

where Ud is the 2d × 2d binary matrix defined by


with vk,j,m denoting the m-th digit after the binary point of the direction number vk,j =
(0.vk,j,1vk,j,2...)2.

Tests for properties A and A’ are independent. Thus it is possible to construct the Sobol sequence
that satisfies both properties A and A’ or only one of them.

The initialisation of Sobol numbers


To construct a Sobol sequence, a set of direction numbers vi,j needs to be selected. There is some
freedom in the selection of initial direction numbers.[note 1] Therefore, it is possible to receive
different realisations of the Sobol sequence for selected dimensions. A bad selection of initial
numbers can considerably reduce the efficiency of Sobol sequences when used for computation.

Arguably the easiest choice for the initialisation numbers is just to have the l-th leftmost bit set,
and all other bits to be zero, i.e. mk,j = 1 for all k and j. This initialisation is usually called unit
initialisation. However, such a sequence fails the test for Property A and A’ even for low
dimensions and hence this initialisation is bad.

Implementation and availability


Good initialisation numbers for different numbers of dimensions are provided by several authors.
For example, Sobol provides initialisation numbers for dimensions up to 51.[5] The same set of
initialisation numbers is used by Bratley and Fox.[6]

Initialisation numbers for high dimensions are available on Joe and Kuo.[7] Peter Jäckel provides
initialisation numbers up to dimension 32 in his book "Monte Carlo methods in finance".[8]

Other implementations are available as C, Fortran 77, or Fortran 90 routines in the Numerical
Recipes collection of software.[9] A free/open-source implementation in up to 1111 dimensions,
based on the Joe and Kuo initialisation numbers, is available in C[10], and up to 21201 dimensions
in Python[11] and Julia[12]. A different free/open-source implementation in up to 1111 dimensions
is available for C++, Fortran 90, Matlab, and Python.[13]

Finally, commercial Sobol sequence generators are available within, for example, the NAG
Library,[14]. A version is available from the British-Russian Offshore Development Agency
(BRODA).[15][16] MATLAB also contains an implementation[17] as part of its Statistics Toolbox.

See also
Low-discrepancy sequences
Quasi-Monte Carlo method
Notes
1. These numbers are usually called initialisation numbers.

References
1. Sobol,I.M. (1967), "Distribution of points in a cube and approximate evaluation of integrals". Zh.
Vych. Mat. Mat. Fiz. 7: 784–802 (in Russian); U.S.S.R Comput. Maths. Math. Phys. 7: 86–112
(in English).
2. Niederreiter, H. (1988). "Low-Discrepancy and Low-Dispersion Sequences", Journal of Number
Theory 30: 51–70.
3. Antonov, I.A. and Saleev, V.M. (1979) "An economic method of computing LPτ-sequences". Zh.
Vych. Mat. Mat. Fiz. 19: 243–245 (in Russian); U.S.S.R. Comput. Maths. Math. Phys. 19: 252–
256 (in English).
4. Sobol, I. M. (1976) "Uniformly distributed sequences with an additional uniform property". Zh.
Vych. Mat. Mat. Fiz. 16: 1332–1337 (in Russian); U.S.S.R. Comput. Maths. Math. Phys. 16:
236–242 (in English).
5. Sobol, I.M. and Levitan, Y.L. (1976). "The production of points uniformly distributed in a
multidimensional cube" Tech. Rep. 40, Institute of Applied Mathematics, USSR Academy of
Sciences (in Russian).
6. Bratley, P. and Fox, B. L. (1988), "Algorithm 659: Implementing Sobol’s quasirandom sequence
generator". ACM Trans. Math. Software 14: 88–100.
7. "Sobol sequence generator" (http://web.maths.unsw.edu.au/~fkuo/sobol/). University of New
South Wales. 2010-09-16. Retrieved 2013-12-20.
8. Jäckel, P. (2002) "Monte Carlo methods in finance". New York: John Wiley and Sons. (ISBN 0-
471-49741-X.)
9. Press, W.H., Teukolsky, S. A., Vetterling, W. T., and Flannery, B. P. (1992) "Numerical Recipes
in Fortran 77: The Art of Scientific Computing, 2nd ed." Cambridge University Press,
Cambridge, U.K.
10. C implementation of the Sobol sequence (https://github.com/stevengj/nlopt/blob/master/src/util/
sobolseq.c) in the NLopt library (http://ab-initio.mit.edu/nlopt) (2007).
11. Imperiale, G. "pyscenarios: Python Scenario Generator" (https://pyscenarios.readthedocs.io).
12. Sobol.jl (https://github.com/stevengj/Sobol.jl) package: Julia implementation of the Sobol
sequence.
13. The Sobol Quasirandom Sequence (http://people.sc.fsu.edu/~jburkardt/cpp_src/sobol/sobol.ht
ml), code for C++/Fortran 90/Matlab/Python by J. Burkardt
14. "Numerical Algorithms Group" (http://www.nag.co.uk/). Nag.co.uk. 2013-11-28. Retrieved
2013-12-20.
15. I. Sobol’, D. Asotsky, A. Kreinin, S. Kucherenko (2011). "Construction and Comparison of High-
Dimensional Sobol' Generators" (http://www.broda.co.uk/doc/HD_SobolGenerator.pdf) (PDF).
Wilmott Journal. Nov: 64–79.
16. "Broda" (http://www.broda.co.uk). Broda. 2004-04-16. Retrieved 2013-12-20.
17. sobolset reference page (https://www.mathworks.com/help/stats/sobolset.html). Retrieved
2017-07-24.

External links
Collected Algorithms of the ACM (http://www.acm.org/calgo/contents/) (See algorithms 647,
659, and 738.)
Collection of Sobol sequences generator programming codes (http://www.mathfinance.cn/tags/
sobol/)
Freeware C++ generator of Sobol sequence (https://github.com/kirill77/RNGSobol/)

Retrieved from "https://en.wikipedia.org/w/index.php?title=Sobol_sequence&oldid=921251930"

This page was last edited on 14 October 2019, at 19:35 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this
site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia
Foundation, Inc., a non-profit organization.

Potrebbero piacerti anche