Выборка по уровням


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

Реализация

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

Пример

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

Реализация на языке 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) );