Чертеж из дистрибутива Дирихле


25

Допустим, у нас есть распределение Дирихле с мерным векторным параметром . Как я могу нарисовать образец ( мерный вектор) из этого распределения? Мне нужно (возможно) простое объяснение.KКα=[α1,α2,...,αK]K

Ответы:


25

Сначала возьмем независимых случайных выборок y 1 , , y K из гамма-распределений, каждое из которых имеет плотностьКY1,...,YК

Гамма(αя,1)знак равноYяαя-1е-YяΓ(αя),

а затем установить

Иксязнак равноYяΣJзнак равно1КYJ,

Икс1,,,,,ИксК

Страница Wikipedia в дистрибутиве Dirichlet расскажет вам, как сделать выборку из дистрибутива Dirichlet.

Также в Rбиблиотеке MCMCpackесть функция для выборки случайных величин из распределения Дирихле.


2
Внедрение функции генерации случайных чисел из Dirichlet можно получить также в файле cran.r-project.org/web/packages/extraDistr
Tim

2

Простой метод (хотя и не точный) состоит в том, чтобы использовать тот факт, что построение распределения Дирихле эквивалентно эксперименту с урной Поли. (Рисуя из набора цветных шаров и каждый раз, когда вы рисуете шарик, вы кладете его обратно в урну со вторым шариком того же цвета)

αя

Затем :

повторить N раз

αя

αя

конец повтора

α

Если я не ошибаюсь, этот метод асимптотически точен. Но так как N конечно, вы НИКОГДА не будете рисовать некоторые распределения с очень малыми априорными вероятностями (в то время как вы должны рисовать их с очень маленькой частотой). Я думаю, что это может быть удовлетворительным в большинстве случаев с N = K.10.


Я подозреваю, что этот способ np.random.dirichletреализован, потому что он генерирует точные нули в выборочных векторах вероятности, хотя такие векторы не принадлежат какой-либо поддержке Дирихле. Это то, что привело меня сюда.
Эли Корвиго
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.