Как сгенерировать случайную величину с заданной многомерной функцией распределения?

Ссылка скопирована
1 ответ

Здравствуйте ! Речь идёт о методе Монте Карло . Задана многомерная функция распределения. Как сгенерировать случайную величину с заданной функцией?

Дополнительно:

Ответы:

Есть способ генерировать по одной компоненте. Но надо, чтобы функция была очень хорошая: ее должно быть можно интегрировать и вдоль и поперек и обращать.

Известно, как сгенерировать одномерную величину с заданной функцией распределения: обращаем функцию распределения (интеграл плотности) и подставляем туда равномерно распределенную на отрезке 0..1 величину.

Пусть у вас 3 компонены x,y,z. Интегриркем по y,z, получаем функцию плотности для x. Гегерируем. Потом подставляем это значение в функцию плотности и получаем новую, уже двухкомпонентную функцию (ее еще надо будет поделить на плотность для данного x l, чтобы нормировать). Повторяем операцию для y.

Но, как и в одномерном случае, этот метод не просто применить, если функция рачпределения сложная, или у нее интеграл просто не берется.

В противном случае можно натягивать сетку и считать интеграллы и обратные функции численно.

  • Можете дать ссылки и литературу по этой теме? Спасибо
  • Евгений Лернер, Не знаю никакой литературы по этой теме, кроме, разве что, учебников по теории вероятности.

    Метод генерации случайной величины с заданным распределением помню еще с университета, кажется. Немного погуглив нашел, что называется он метод обратного перобразования.

    Многомерный итеративный метод придумал сам. Тут разве что учебники по теорверу могу посоветовать, чтобы представить себе многомерные функции распределения и условные вероятности.

  • Спасибо. Ещё вопрос. Есть моменты случайного распределения. Есть коэффициент корреляции между двумя случайными величинами.
    1 есть ли высшие моменты между двумя случайными величинами?
    2 как сгенерировать случайные величины с заданными моментами?
  • Wataru, я хочу вычислять характеристики случайного процесса, потом создавать гораздо больший процесс с такими характеристиками а нем обучать модель .
    Плотности вероятности и функции корреляции маловато будет
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Для генерации случайной величины с заданной многомерной функцией распределения можно использовать метод обратного преобразования. Этот метод заключается в том, чтобы сначала сгенерировать случайное число из равномерного распределения на отрезке [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] . ")";

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. При необходимости можно адаптировать этот метод для других многомерных функций распределения.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно