Определение собственной функции плотности вероятности в MATLAB - PullRequest
5 голосов
/ 09 марта 2012

Можно ли определить собственную функцию плотности вероятности в MATLAB или Octave и использовать ее для генерации случайных чисел?

MATLAB и Octave имеют функции по умолчанию, такие как rand, randn, встроенные для рисования точек случайным образом из равномерного или нормального распределения, но, похоже, нет документации о том, как определить мою собственную функцию плотности переносимости.

Ответы [ 3 ]

8 голосов
/ 09 марта 2012

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

Если ваше интересующее вас распределение имеет сложную форму, есть много алгоритмов выборки, которые могут вам помочь, например,as, выборка отклонения , выборка срезов, алгоритм Метрополиса – Гастингса .

Если ваше распределение дискретно или может быть достаточно хорошо аппроксимировано дискретным,можно просто сделать полиномиальную выборку, используя randsamp.

1 голос
/ 10 марта 2012

В последнее время мне приходилось делать это несколько раз, и это не совсем легко.Моим любимым приемом было использование выборки обратного преобразования .

Идея довольно проста:

  1. создать файл cdf
  2. использовать равномерную случайную формугенератор чисел.
  3. идентифицирует RV, который сопоставляется с вашим значением cdf.
1 голос
/ 09 марта 2012

Если у вас есть набор инструментов статистики, вы можете использовать random(), поскольку он имеет много полезных встроенных PDF-файлов.

...