Обратный метод Бокса-Мюллера : из каждой пары нормалей можно построить две независимые формы: atan2 ( Y , X ) (на интервале [ - π , π ] ) и exp ( - ( X 2 +) Y 2 ) / 2 ) (на интервале [ 0 , 1 ] ).(X,Y)atan2(Y,X)[−π,π]exp(−(X2+Y2)/2)[0,1]
Возьмем нормали в группы по два и суммируем их квадраты, чтобы получить последовательность переменных Y 1 , Y 2 , … , Y i , … . Выражения, полученные из парχ22Y1,Y2,…,Yi,…
Xi=Y2iY2i−1+Y2i
будет иметь распределение , которое является равномерным.Beta(1,1)
То, что для этого требуется только базовая, простая арифметика, должно быть понятно.
Поскольку точное распределение коэффициента корреляции Пирсона четырехпарной выборки из стандартного двумерного нормального распределения равномерно распределено по , мы можем просто взять нормали группами по четыре пары (то есть восемь значений в каждый набор) и вернуть коэффициент корреляции этих пар. (Это включает в себя простую арифметику плюс две операции с квадратным корнем.)[−1,1]
С древних времен было известно, что цилиндрическая проекция сферы (поверхность в трехмерном пространстве) является равной по площади . Это означает, что в проекции равномерного распределения на сфере как горизонтальная координата (соответствующая долготе), так и вертикальная координата (соответствующая широте) будут иметь равномерное распределение. Поскольку стандартное нормальное распределение тривариата сферически симметрично, его проекция на сферу является равномерной. Получение долготы по существу аналогично вычислению угла в методе Бокса-Мюллера ( qv ), но прогнозируемая широта является новой. Проекция на сферу просто нормализует тройку координат и в этой точке z - спроектированная широта. Таким образом, возьмите нормальные переменные в группах по три, X 3 i - 2 , X 3 i - 1 , X 3 i , и вычислите(x,y,z)zX3i−2,X3i−1,X3i
X3iX23i−2+X23i−1+X23i−−−−−−−−−−−−−−−−√
для .i=1,2,3,…
Поскольку большинство вычислительных систем представляют собой число в двоичном , равномерное поколение числа , как правило , начинается с получения равномерно распределенные целых чисел между и 2 32 - 1 (или какой - либо высокой мощностью 2 связаны с длиной машинного слова) и перемасштабированием их по мере необходимости. Такие целые числа представлены внутри как строки из 32 двоичных цифр. Мы можем получить независимые случайные биты, сравнивая переменную Normal с ее медианой. Таким образом, достаточно разбить переменные Normal на группы с размером, равным требуемому количеству битов, сравнить каждую из них со средним значением и собрать результирующие последовательности результатов true / false в двоичное число. Написание к0232−1232kдля числа битов и для знака (то есть H ( x ) = 1, когда x > 0 и H ( x ) = 0 в противном случае) мы можем выразить результирующее нормализованное однородное значение в [ 0 , 1 ) с формулойHH(x)=1x>0H(x)=0[0,1)
∑j=0k−1H(Xki−j)2−j−1.
Переменные могут быть взяты из любого непрерывного распределения, медиана которого равна 0 (например, стандартная нормаль); они обрабатываются в группах по k, каждая из которых создает одно такое псевдооднородное значение.Xn0k
Отклонение выборки является стандартным, гибким, мощным способом рисования случайных отклонений от произвольных распределений. Предположим, что целевой дистрибутив имеет PDF . Значение Y составлено в соответствии с другим распределением с PDF g . На этапе отклонения равномерное значение U, лежащее между 0 и g ( Y ) , рисуется независимо от Y и сравнивается с f ( Y ) : если оно меньше, YfYgU0g(Y)Yf(Y)Yсохраняется, но в противном случае процесс повторяется. Тем не менее, этот подход кажется круговым: как мы можем сгенерировать однородную переменную с процессом, для начала которого требуется равномерная переменная?
Ответ заключается в том, что нам на самом деле не нужно унифицировать вариацию для выполнения шага отклонения. Вместо этого (предполагая, что ) мы можем перевернуть справедливую монету, чтобы получить 0 или 1 случайным образом. Это будет интерпретироваться как первый бит в двоичном представлении равномерной переменной U в интервале [ 0 , 1 ) . Когда результат 0 , это означает , что 0 ≤ U < 1 / 2 ; в противном случае, 1 / 2 ≤ U < 1 . g(Y)≠001U[0,1)00≤U<1/21/2≤U<1Половина времени, этого достаточно , чтобы решить , шаг: отказ , если , но монета 0 , Y должен быть принят; если F ( Y ) / г ( У ) < 1 / 2 , но монета 1 , Y должна быть отклонена; в противном случае, нам нужно перевернуть монету снова, чтобы получить следующий бит U . Потому что - неважно, какое значение f ( Yf(Y)/g(Y)≥1/20Yf(Y)/g(Y)<1/21YU есть - есть 1 / 2 вероятность остановки после каждого флип, ожидаемое число перестроек только 1 / 2 ( 1 ) + 1 / 4 ( 2 ) + 1 / 8 ( 3 ) + ⋯ + 2 - п ( п ) + ⋯ = 2 .f(Y)/g(Y)1/21/2(1)+1/4(2)+1/8(3)+⋯+2−n(n)+⋯=2
Отбор проб может быть целесообразным (и эффективным) при условии, что ожидаемое количество отклонений невелико. Мы можем сделать это, поместив максимально возможный прямоугольник (представляющий равномерное распределение) ниже нормального PDF.
Использование Исчисление для оптимизации площади прямоугольника, вы увидите , что ее концы должны лежать на , где его высота равна ехр ( - 1 / +2 ) / √±1, что делает его площадь чуть больше0,48. Используя эту стандартную нормальную плотность в качествеgиавтоматическиотбрасывая все значения за пределами интервала[-1,1], и в противном случае применяя процедуру отклонения, мы получим равномерные вариации в[-1,1]:exp(−1/2)/2π−−√≈0.2419710.48g[−1,1][−1,1]
В доле времени нормальное изменение находится за пределами [ - 1 , 1 ] и немедленно отклоняется. ( Φ является стандартным нормальным CDF.)2Φ(−1)≈0.317[−1,1]Φ
В оставшуюся часть времени должна выполняться двоичная процедура отклонения, требующая в среднем еще двух нормальных вариаций.
Общая процедура требует в среднем шагов.1/(2exp(−1/2)/2π−−√)≈2.07
Ожидаемое количество нормальных переменных, необходимых для получения каждого однородного результата, рассчитывается на
2eπ−−−√(1−2Φ(−1))≈2.82137.
Хотя это довольно эффективно, обратите внимание, что (1) вычисление нормального PDF требует вычисления экспоненты и (2) значение должно быть предварительно вычислено раз и навсегда. Это все еще немного меньше, чем метод Бокса-Мюллера ( см. ).Φ(−1)
В порядковые статистики равномерного распределения имеют экспоненциальные пробелы. Поскольку сумма квадратов двух нормалей (с нулевым средним) является экспоненциальной, мы можем сгенерировать реализацию независимых форм путем суммирования квадратов пар таких нормалей, вычисления их суммарной суммы и масштабирования результатов, чтобы попасть в интервал. [ 0 , 1 ] и отбрасывая последний (который всегда будет равен 1 ). Это приятный подход, потому что он требует только возведения в квадрат, суммирования и (в конце) одного деления.n[0,1]1
Значения будут автоматически в порядке возрастания. Если такая сортировка желательна, этот метод в вычислительном отношении превосходит все остальные, поскольку он позволяет избежать затрат O ( n log ( n ) ) на сортировку. Однако, если требуется последовательность независимых униформ, то сортировка этих n значений случайным образом сделает свое дело. Поскольку (как видно из метода Бокса-Мюллера, qv ) отношения каждой пары нормалей не зависят от суммы квадратов каждой пары, у нас уже есть средства для получения этой случайной перестановки: упорядочить кумулятивные суммы по соответствующим отношениям , (Если нnO(nlog(n))nnочень большой, этот процесс может быть выполнен в меньших группах с небольшой потерей эффективности, так как каждой группе требуется только 2 ( k + 1 ) нормали для создания k однородных значений. Следовательно, для фиксированного k асимптотические вычислительные затраты составляют O ( n log ( k ) ) = O ( n ) , для чего требуется 2 n ( 1 + 1 / k ) нормальных переменных для генерации n однородных значений.)k2(k+1)kkO(nlog(k))O(n)2n(1+1/k)n
В превосходном приближении любой нормальный вариант с большим стандартным отклонением выглядит равномерным в диапазонах с гораздо меньшими значениями. Свернув это распределение в диапазон (взяв только дробные части значений), мы тем самым получим распределение, равномерное для всех практических целей. Это чрезвычайно эффективно, требуя одной из самых простых арифметических операций из всех: просто округлите каждое нормальное значение до ближайшего целого числа и сохраняйте избыток. Простота этого подхода становится убедительной, когда мы исследуем практическую реализацию:[0,1]R
rnorm(n, sd=10) %% 1
надежно создает n
однородные значения в диапазоне за счет просто нормальных изменений и почти без вычислений.[0,1]n
(Даже если стандартное отклонение равно , PDF этого приближения отличается от равномерного PDF, как показано на следующем рисунке, менее чем на одну часть из 10 8 ! Для надежного его обнаружения потребуется образец из 10 16 значений: это уже за пределами возможностей любого стандартного теста на случайность. При большем стандартном отклонении неравномерность настолько мала, что даже не может быть рассчитана. Например, при SD 10, как показано в коде, максимальное отклонение от униформы PDF только 10 - 857. )110810161010−857
В любом случае нормальные переменные «с известными параметрами» могут быть легко перецентрированы и преобразованы в стандартные нормальные значения, принятые выше. После этого получающиеся в результате равномерно распределенные значения могут быть перецентрированы и изменены для охвата любого желаемого интервала. Это требует только основных арифметических операций.