Русская Википедия:Выборка по уровням

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

В математике и физике, выборка по уровням это разновидность выборки методом случайных блужданий, основывающаяся на том факте что для выборки функции с заданным распределением достаточно производить равномерноую выборку из области под графиком плотности вероятности.

Реализация

Для получения выборки случайной величины <math>X</math> с функцией плотности <math>f(x)</math> введём дополнительную переменную <math>Y</math> и выполним следующие шаги: имея выбранное значение x мы выбираем y равномерно случайно в интервале <math>[0, f(x)]</math>; имея y мы выбираем x случайно равномерно из множества <math>f^{-1}[0, y]</math>. Результат x получается отбрасыванием значений y.

Пример

Для получения выборки из нормального распределения <math>N(0,1)</math> выберем начальное значение x — пусть это будет 0. После каждой выборки x выберем y случайно равномерно из <math>[0, e^{-x^2/2}/\sqrt{2\pi}]</math>; после каждой выборки y выберем x случайно равномерно из <math>[-\alpha, \alpha]</math>, где <math>\alpha = \sqrt{-2\log(y\sqrt{2\pi})}</math>.

Реализация на языке Macsyma:

slice(x) := block([y, alpha],
 y:random(exp(-x^2 / 2.0) / sqrt(2.0 * dfloat(%pi))),
 alpha:sqrt(-2.0 * ln(y * sqrt(2.0 * dfloat(%pi)))),
 x:signum(random()) * random(alpha)
);

См. также

Ссылки

  • Radford M. Neal, «Slice Sampling». The Annals of Statistics, 31(3):705-767, 2003.