Выборка обратного преобразования берет равномерные выборки числа от 0 до 1, интерпретируемые как вероятность, а затем возвращает наименьшее число, такое что для кумулятивной функции распределения случайной величины. Например, представьте, что это стандартное нормальное распределение со средним значением ноль и стандартным отклонением единица. В таблице ниже показаны выборки, взятые из равномерного распределения, и их представление в стандартном нормальном распределении.
Мы случайным образом выбираем долю площади под кривой и возвращаем число в домене таким образом, что именно эта доля площади находится слева от этого числа. Интуитивно, мы вряд ли выберем число в дальнем конце хвостов, потому что в них очень мало площади, которая потребовала бы выбора числа, очень близкого к нулю или единице.
С вычислительной точки зрения этот метод включает вычисление квантильной функции распределения — другими словами, вычисление кумулятивной функции распределения (CDF) распределения (которая отображает число в области в вероятность между 0 и 1) и затем инвертирование этой функции. Это является источником термина «обратная» или «инверсия» в большинстве названий этого метода. Обратите внимание, что для дискретного распределения вычисление CDF в общем случае не слишком сложно: мы просто складываем отдельные вероятности для различных точек распределения. Однако для непрерывного распределения нам необходимо интегрировать функцию плотности вероятности (PDF) распределения, что невозможно сделать аналитически для большинства распределений (включая нормальное распределение ). В результате этот метод может быть вычислительно неэффективным для многих распределений, и предпочтительны другие методы; однако это полезный метод для построения более общеприменимых выборок, таких как те, которые основаны на выборке с отклонением .
Для нормального распределения отсутствие аналитического выражения для соответствующей функции квантиля означает, что другие методы (например, преобразование Бокса–Мюллера ) могут быть предпочтительнее с точки зрения вычислений. Часто бывает так, что даже для простых распределений метод выборки обратного преобразования может быть улучшен: [1] см., например, алгоритм зиккурата и выборка отклонения . С другой стороны, можно аппроксимировать функцию квантиля нормального распределения чрезвычайно точно, используя полиномы умеренной степени, и на самом деле метод, позволяющий это сделать, достаточно быстр, чтобы выборка инверсии теперь стала методом по умолчанию для выборки из нормального распределения в статистическом пакете R. [ 2]
Вычислить . Вычисленная случайная величина имеет распределение и, следовательно, тот же закон, что и .
Выражаясь по-другому, при заданной кумулятивной функции распределения и равномерной переменной случайная величина имеет распределение . [3]
В непрерывном случае может быть дана обработка таких обратных функций как объектов, удовлетворяющих дифференциальным уравнениям. [4] Некоторые такие дифференциальные уравнения допускают явные решения в виде степенных рядов , несмотря на их нелинейность. [5]
Для того чтобы выполнить инверсию, нам нужно решить
Отсюда мы выполним шаги один, два и три.
В качестве другого примера мы используем экспоненциальное распределение с для x ≥ 0 (и 0 в противном случае). Решая y=F(x), мы получаем обратную функцию
Это означает, что если мы возьмем некоторое число из a и вычислим Это имеет экспоненциальное распределение.
Идея проиллюстрирована на следующем графике:
Обратите внимание, что распределение не изменится, если мы начнем с 1-y вместо y. Поэтому для вычислительных целей достаточно сгенерировать случайные числа y в [0, 1], а затем просто вычислить
Утверждение: Если — равномерная случайная величина , то имеет в качестве своей функции распределения.
Доказательство:
Усеченное распределение
Выборку с обратным преобразованием можно просто распространить на случаи усеченных распределений на интервале без затрат на выборку с отклонением: можно следовать тому же алгоритму, но вместо генерации случайного числа, равномерно распределенного между 0 и 1, сгенерировать равномерно распределенное между и , а затем снова взять .
Уменьшение количества инверсий
Для получения большого количества выборок необходимо выполнить такое же количество инверсий распределения. Одним из возможных способов уменьшения количества инверсий при получении большого количества выборок является применение так называемого стохастического коллокационного Монте-Карло-сэмплера (SCMC-сэмплера) в рамках полиномиального хаотичного расширения. Это позволяет нам генерировать любое количество выборок Монте-Карло с помощью всего лишь нескольких инверсий исходного распределения с независимыми выборками переменной, для которой инверсии аналитически доступны, например, стандартной нормальной переменной. [7]
Реализации программного обеспечения
Существуют программные реализации, доступные для применения метода обратной выборки с использованием численных аппроксимаций обратной величины в случае, если она недоступна в закрытой форме. Например, аппроксимация обратной величины может быть вычислена, если пользователь предоставит некоторую информацию о распределениях, такую как PDF [8] или CDF.
^ ab Макнил, Александр Дж.; Фрей, Рюдигер; Эмбрехтс, Пол (2005). Количественное управление рисками . Princeton Series in Finance. Princeton University Press, Принстон, Нью-Джерси. С. 186. ISBN0-691-12255-5.
^ Steinbrecher, György; Shaw, William T. (19 марта 2008 г.). "Квантильная механика". European Journal of Applied Mathematics . 19 (2). doi :10.1017/S0956792508007341. S2CID 6899308.
^ Арридж, Саймон; Маасс, Питер; Октем, Озан; Шёнлиб, Карола-Бибиан (2019). «Решение обратных задач с использованием моделей, управляемых данными». Acta Numerica . 28 : 1–174. doi : 10.1017/S0962492919000059 . ISSN 0962-4929. S2CID 197480023.
^ Люк Деврой (1986). "Раздел 2.2. Инверсия с помощью численного решения F(X) = U" (PDF) . Генерация неравномерных случайных величин . Нью-Йорк: Springer-Verlag.
^ LA Grzelak, JAS Witteveen, M. Suarez и CW Oosterlee. Стохастический коллокационный Монте-Карло-сэмплер: высокоэффективная выборка из «дорогих» распределений. https://ssrn.com/abstract=2529691
^ Дерфлингер, Герхард; Хёрманн, Вольфганг; Лейдольд, Йозеф (2010). «Генерация случайных величин с помощью численной инверсии, когда известна только плотность» (PDF) . ACM Transactions on Modeling and Computer Simulation . 20 (4). doi :10.1145/945511.945517.
^ "UNU.RAN - Универсальные генераторы случайных чисел с неоднородной последовательностью".
^ «Runuran: R-интерфейс для генераторов случайных величин «UNU.RAN». 17 января 2023 г.
^ «Генераторы случайных чисел (Scipy.stats.sampling) — Руководство SciPy v1.12.0».
^ Баумгартен, Кристоф; Патель, Тирт (2022). «Автоматическая генерация случайных величин в Python». Труды 21-й конференции «Python in Science» . С. 46–51. doi :10.25080/majora-212e5952-007.