Допустим, у нас есть распределение Дирихле с мерным векторным параметром . Как я могу нарисовать образец ( мерный вектор) из этого распределения? Мне нужно (возможно) простое объяснение.К
Допустим, у нас есть распределение Дирихле с мерным векторным параметром . Как я могу нарисовать образец ( мерный вектор) из этого распределения? Мне нужно (возможно) простое объяснение.К
Ответы:
Сначала возьмем независимых случайных выборок y 1 , … , y K из гамма-распределений, каждое из которых имеет плотность
а затем установить
Страница Wikipedia в дистрибутиве Dirichlet расскажет вам, как сделать выборку из дистрибутива Dirichlet.
Также в R
библиотеке MCMCpack
есть функция для выборки случайных величин из распределения Дирихле.
Простой метод (хотя и не точный) состоит в том, чтобы использовать тот факт, что построение распределения Дирихле эквивалентно эксперименту с урной Поли. (Рисуя из набора цветных шаров и каждый раз, когда вы рисуете шарик, вы кладете его обратно в урну со вторым шариком того же цвета)
Затем :
повторить N раз
конец повтора
Если я не ошибаюсь, этот метод асимптотически точен. Но так как N конечно, вы НИКОГДА не будете рисовать некоторые распределения с очень малыми априорными вероятностями (в то время как вы должны рисовать их с очень маленькой частотой). Я думаю, что это может быть удовлетворительным в большинстве случаев с N = K.10.
np.random.dirichlet
реализован, потому что он генерирует точные нули в выборочных векторах вероятности, хотя такие векторы не принадлежат какой-либо поддержке Дирихле. Это то, что привело меня сюда.