2014-10-27 4 views
1

все:AnyLogic: Реализация распределения Дирихле?

Кто-нибудь знает способ реализации чертежей из распределения Дирихле в AnyLogic?

У меня есть три взаимосвязанные вероятности, такие, что p1 + p2 + p3 = 1, и я хочу рисовать значения для каждого из них.

Я в настоящее время осуществляет это с помощью следующего кода:

p1 = beta(10.0 * c, 10.0 * (1.0 - c)); 
p2 = min(beta(10.0 * a, 10.0 * (1.0 - a)), 1.0 - p1); 
p3 = max(0.0, 1.0 - p2 - p2); 

где a и c мои настоятели на p1 и p2.

Спасибо!

+0

Простите меня, как я очень мало знаю о распределении Дирихле, но есть ли еще какие-то ограничения, чтобы иметь в виду? У p1 и p2 есть взаимосвязь между собой? Вы рисуете p1, p2 и p3 из какого-либо другого дистрибутива или делаете что-то по строкам p (Value1) == p1, p (Value2) == p2 и p (Value3) == p3? С какой именно проблемой вы сталкиваетесь с вашей текущей реализацией? –

+0

Dylan: Я не сталкиваюсь с ПРОБЛЕМАМИ, по сути, в текущей реализации проблемы с тремя переменными. Однако, поскольку проблема становится более обобщенной, многомерное распределение, такое как дирихле, было бы очень полезно. Однако, чтобы ответить на другие вопросы, нет: p1, p2 и p3 не имеют отношения друг к другу, за исключением того, что они суммируются до 1. Ожидаемое значение для каждого из них рассчитывается, а ожидаемые значения составляют 1, но тогда я хочу рисовать из бета с ожидаемыми значениями p1/p2/p3 и желать, чтобы эти ничьи также суммировались до 1 – TheChainsOfMarkov

+0

А, я вижу. Боюсь, такое статистическое колдовство выходит за рамки моего опыта. Увидев, что никто еще не ответил на этот вопрос, возможно, вы могли бы спросить на странице LinkedIn, а затем отправить здесь знающих респондентов. Я уверен, что вы не единственный, кто хотел бы знать, как реализовать пользовательский дистрибутив из формулы, и этот вопрос StackOverflow будет служить для увековечения любого полученного вами ответа. –

ответ

0

Вы можете use external Java libraries in AnyLogic. Загрузите некоторую библиотеку Java с реализованным дистрибутивом Дирихле, например. Mallet 2 и вызвать соответствующий API. Кроме того, вы можете скопировать-вставить реализацию с library source codes :)