2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Моделирование случайного вектора по совместной плотности.
Сообщение24.03.2014, 00:46 
Есть потребность программно генерировать n-мерные случайные величины; известна размерность n и совместная плотность распределения
$P (X) = P (X_1, ...., X_n)$.

$P (X)$ - произвольная функция (в том смысле, что нужно построить алгоритм не для какого-то конкретного распределения, а для любого; отсюда же следует, что$ X_1, ..., X_n$ - зависимые).

Аналитически это делается примерно так :
$P (X) = P (X_1, ...., X_n) = P_1 (X_1) * P_2 (X_2 | X_1) * .... * P_n (X_n | X_1, ..., X_{n-1})$

Функция совместного распределения
$F_i (X_i | X_1, ..., X_{i-1}) = \int_{-\infty}^{X_i} (P_i (u | X_1, ..., X_{i-1})du$

$\xi_1, ..., \xi_n$ - какие-то случайные числа;
Из системы уравнений
$$F_1 (X_1) = \xi_1;$

$F_2 (X_2 | X_1) = \xi_2;$

$...$

$F_n (X_n | X_1, ..., X_{n-1}) = \xi_n;$

находятся $X_1, ..., X_n$, которые и будут координатами искомого n-мерного вектора с заданной плотностью распределения $P (X)$.

Теперь самое главное : кто-нибудь знает численные методы / алгоритмы решения подобной задачи? В лоб, ясное дело, на ПК это не решается (хотя бы из-за кучи интегралов по бесконечности...). Больше всего интересует, как работать с совместной плотностью - если посчитать численно отдельный интеграл я ещё могу, то в какую сторону двигаться вот с этим $P (X) = P (X_1, ...., X_n) = P_1 (X_1) * P_2 (X_2 | X_1) * .... * P_n (X_n | X_1, ..., X_{n-1})$ я совершенно не знаю...

Буду благодарен, если посоветуете книги, статьи, сайты по теме. Возможно названия каких-то методов или идеи по решению.

 i  Deggial:Умножение пишется \cdot: $A\cdot B$

 
 
 
 Re: Моделирование случайного вектора по совместной плотности.
Сообщение24.03.2014, 10:59 
Аватара пользователя
Есть такое понятие - копула.

 
 
 
 Re: Моделирование случайного вектора по совместной плотности.
Сообщение24.03.2014, 15:08 
ИСН в сообщении #840213 писал(а):
Есть такое понятие - копула.

Есть $P (X_1, \ldots, X_n)$ - совместная плотность распределения n-мерной СВ.

$P (X_1, \ldots, X_n) = C (F_1 (X_1), \ldots, F_n (X_n)) => C (U_1, \ldots, U_n) = P (F_{1}^{-1} (U_1), \ldots, F_{n}^{-1} (U_n))$.

Но я же не знаю $F_i (X_i)$.
Как из совместной плотности $P (X)$ получить маргинальные $F_i (X_i), (i = 1, \cdots, n)$ - вопрос остается открытым...
Или я что-то неправильно понимаю?

 
 
 
 Re: Моделирование случайного вектора по совместной плотности.
Сообщение24.03.2014, 17:17 
Аватара пользователя
Из совместного распределения маргинальные получить, если теоретически, - проинтегрировать по всем лишним переменным.

В общем-то, я не в теме, но мне не очень нравится сама постановка проблемы: "как можно моделировать вектор из абсолютно произвольного распределения?" Даже для одномерного распределения есть много способов моделирования случайных величин. И в зависимости от распределения какие-то из них применять удобнее, какие-то нет или совсем нельзя. А уж одинаково удобного метода для произвольного совместного распределения тем более быть не может. Кроме квантильного преобразования, бывает тот же Acceptance/Rejection.

(Оффтоп)

Не очень вижу, чем может быть копула полезна - её же откуда-то брать надо? А как её находить даже зная маргинальные распределения и совместное?

 
 
 
 Re: Моделирование случайного вектора по совместной плотности.
Сообщение26.03.2014, 00:02 
Аватара пользователя
--mS-- в сообщении #840322 писал(а):
Даже для одномерного распределения есть много способов моделирования случайных величин. И в зависимости от распределения какие-то из них применять удобнее, какие-то нет или совсем нельзя. А уж одинаково удобного метода для произвольного совместного распределения тем более быть не может.

— Всё зависит от требований к качеству случайного генератора. Мне тоже кажется, что если $n$ не очень велико, то на практике задачу можно и нужно свести к одномерной. А именно, отобразить случайные переменные на компакт $[0, 1]^n$, который потом разбить равномерной сеточкой на достаточно большое количество маленьких ячеек, в каждой из которых заменить заданную плотность вероятности $\rho (x_1, ..., x_n)$ подходящей константой (так, чтобы сумма всех их давала ровно единицу). После этого, провести сквозную нумерацию ячеек, отобразить константы одну за другой на отрезок $[0, 1]$ и запустить обычный генератор равномерного распределения на этом отрезке. Всё. В какую константу попало — в такую ячейку и совать случайный вектор.

 
 
 
 Re: Моделирование случайного вектора по совместной плотности.
Сообщение26.03.2014, 11:04 
Аватара пользователя
Для распределений с ограниченной плотностью и компактным носителем годится, но для них ни к чему такие выверты, там и accept/reject работает на ура.

 
 
 
 Re: Моделирование случайного вектора по совместной плотности.
Сообщение10.04.2014, 13:51 
Кролик
$n \in [30,50]$

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group