Как сгенерировать случайную величину с заданной многомерной функцией распределения?
Здравствуйте ! Речь идёт о методе Монте Карло . Задана многомерная функция распределения. Как сгенерировать случайную величину с заданной функцией?
Дополнительно:
Ответы:
Есть способ генерировать по одной компоненте. Но надо, чтобы функция была очень хорошая: ее должно быть можно интегрировать и вдоль и поперек и обращать.
Известно, как сгенерировать одномерную величину с заданной функцией распределения: обращаем функцию распределения (интеграл плотности) и подставляем туда равномерно распределенную на отрезке 0..1 величину.
Пусть у вас 3 компонены x,y,z. Интегриркем по y,z, получаем функцию плотности для x. Гегерируем. Потом подставляем это значение в функцию плотности и получаем новую, уже двухкомпонентную функцию (ее еще надо будет поделить на плотность для данного x l, чтобы нормировать). Повторяем операцию для y.
Но, как и в одномерном случае, этот метод не просто применить, если функция рачпределения сложная, или у нее интеграл просто не берется.
В противном случае можно натягивать сетку и считать интеграллы и обратные функции численно.
- Можете дать ссылки и литературу по этой теме? Спасибо
- Евгений Лернер, Не знаю никакой литературы по этой теме, кроме, разве что, учебников по теории вероятности.
Метод генерации случайной величины с заданным распределением помню еще с университета, кажется. Немного погуглив нашел, что называется он метод обратного перобразования.
Многомерный итеративный метод придумал сам. Тут разве что учебники по теорверу могу посоветовать, чтобы представить себе многомерные функции распределения и условные вероятности.
- Спасибо. Ещё вопрос. Есть моменты случайного распределения. Есть коэффициент корреляции между двумя случайными величинами.
1 есть ли высшие моменты между двумя случайными величинами?
2 как сгенерировать случайные величины с заданными моментами? - Wataru, я хочу вычислять характеристики случайного процесса, потом создавать гораздо больший процесс с такими характеристиками а нем обучать модель .
Плотности вероятности и функции корреляции маловато будет
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для генерации случайной величины с заданной многомерной функцией распределения можно использовать метод обратного преобразования. Этот метод заключается в том, чтобы сначала сгенерировать случайное число из равномерного распределения на отрезке [0, 1], а затем применить обратную функцию распределения к этому числу.
Для примера, давайте рассмотрим случай с двумерной функцией распределения F(x, y) = x^2 + y^2, где x и y принадлежат отрезку [0, 1]. Мы хотим сгенерировать случайную величину (x, y) с таким распределением.
Шаг 1: Сгенерировать два случайных числа u и v из равномерного распределения на отрезке [0, 1].
Шаг 2: Вычислить x = sqrt(u) * cos(2 * PI * v) и y = sqrt(u) * sin(2 * PI * v).
Шаг 3: (x, y) - искомая случайная величина с заданной многомерной функцией распределения.
Ниже приведен пример кода на языке программирования PHP, реализующий этот метод:
function generateRandomVariable() { $u = mt_rand() / mt_getrandmax(); $v = mt_rand() / mt_getrandmax(); $x = sqrt($u) * cos(2 * M_PI * $v); $y = sqrt($u) * sin(2 * M_PI * $v); return array($x, $y); } // Пример использования $randomVariable = generateRandomVariable(); echo "Случайная величина (x, y): (" . $randomVariable[0] . ", " . $randomVariable[1] . ")";
Этот код генерирует случайную величину (x, y) с заданной многомерной функцией распределения F(x, y) = x^2 + y^2. При необходимости можно адаптировать этот метод для других многомерных функций распределения.