Гамма Распределение в Повышении - PullRequest
2 голосов
/ 26 марта 2010

Я пытаюсь использовать гамма-дистрибутив из boost :: math, но похоже, что его невозможно использовать с boost :: variate_generator. Может ли кто-нибудь это подтвердить? Или есть способ использовать его.

Я обнаружил, что есть недокументированный буст: gamma_distribution, который, вероятно, тоже можно использовать, но он позволяет выбирать только альфа-параметр из дистрибутива, а не бета-версию.

Спасибо!

1 Ответ

4 голосов
/ 20 мая 2010

Как упоминалось в этой ссылке , вы можете расширить однопараметрическое гамма-распределение Boost (или TR1), просто умножив выходной сигнал rng на желаемую шкалу.

Ниже приведен примеркод, который использует variate_generator для рисования чисел из гамма-распределения, параметризованных по среднему значению и дисперсии:

#include <boost/random.hpp>
#include <boost/random/gamma_distribution.hpp>

double rgamma( double mean, double variance, boost::mt19937& rng ) {
  const double shape = ( mean*mean )/variance;
  double scale = variance/mean;

  boost::gamma_distribution<> gd( shape );
  boost::variate_generator<boost::mt19937&,boost::gamma_distribution<> > var_gamma( rng, gd );

  return scale*var_gamma();
}
...