Генерация случайных чисел из трехмерного распределения вероятностей
Как я могу генерировать случайные числа из заданного трехмерного PDF? Функция распределения вероятности дает вероятность того, что частица имеет какой-либо заданный набор кооридинетов в трехмерном пространстве.
Я определил функцию для PDF, и я могу оценить ее с дискретными интервалами, но я не знаю, куда идти дальше. Я бы использовал метод выборки с обратным преобразованием, но, поскольку PDF является трехмерным, я не знаю, смогу ли я вычислить дискретную кумулятивную функцию распределения. Можно ли сделать это, используя другой метод?
Спасибо
1 ответ
Если ваша пространственная система координат дискретна, рассматривайте ее как одномерную задачу генерации для генерации триплетов.
Если вы говорите о непрерывном распределении, вы, вероятно, хотите использовать условную вероятность. В принципе, вы должны быть в состоянии получить предельное распределение X, условное распределение Y для X и условное распределение Z для X и Y. Затем генерируйте X, Y и Z последовательно из их маргинального и условного распределений.
На практике это может быть довольно сложным.
добавление
Возможно, самой простой схемой было бы создание многомерного нормального вектора длины 3. Это дало бы наибольшую плотность вблизи начала координат и сужалось бы симметрично во всех направлениях. Вы можете сместить его со средним вектором, если плотность выше в каком-либо другом месте, вы можете масштабировать размеры независимо с различными дисперсиями, или вы можете вызвать произвольное выравнивание осей, указав матрицу дисперсии / ковариации для получения коррелированных нормалей.
Если вы можете допустить дискретность ваших трех измерений, то вы можете сделать это, создав кумулятивный дистрибутив для вашего 3D-дистрибутива аналогично тому, как вы делали бы это для одномерного дистрибутива. Позволь мне объяснить:
В 1D вы берете p(x) и дискретно получаете pi = p (xi) над x. Вы можете думать о pi как о гистограмме, которая представляет ваше распределение вероятностей. Pi являются интегралами p(x) в диапазоне x, представленном xi, который будет иметь некоторую ширину. Тогда кумулятивное распределение C (xi) представляет собой просто сумму от pi до xi и будет представлять собой монотонную функцию в форме 'S' с диапазоном от 0 до 1. Затем вы рисуете случайные числа от 0 и 1, соответствующий Ci, и посмотреть, к какому значению xi относятся эти карты.
Двухмерного примера будет достаточно, чтобы увидеть, как вышеприведенное обобщается на более чем 1D: представьте себе нормализованное p(x,y), которое вы можете дискретизировать как p (xi, yj). Затем вы можете суммировать это так, что у вас есть Ci, j = C (xi, yj). Вам просто нужно сделать выбор: идти ли сначала по "xi" или "yj" при интеграции. Либо вы прогуливаетесь, как C1,1, C2,1,..., Cn, 1, C1,2,..., либо с перевернутыми индексами. В любом случае результатом будет массив уникальных значений Ci, j от 0 до 1. Затем вы можете выбрать случайное число от 0 до 1, соответствующее Ci, j, которое затем отобразится в уникальный xi, уj координатная пара. Это дает вам случайное число из дискретного распределения вероятностей и автоматически учитывает все корреляции, существующие между x и y.
Вы можете сделать свою координатную дискретизацию очень хорошей, если это необходимо, но это становится дорогостоящим, поскольку вы увеличиваете количество измерений, из которых вы производите выборку ( https://en.wikipedia.org/wiki/Curse_of_dimensionality).