Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Geometric Distribution

Boost , Math Toolkit 2.5.0 , Distributions

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
#include <boost/math/distributions/geometric.hpp>
namespace boost{ namespace math{
template <class RealType = double,
          class Policy   = policies::policy<> >
class geometric_distribution;
typedef geometric_distribution<> geometric;
template <class RealType, class Policy>
class geometric_distribution
{
public:
   typedef RealType value_type;
   typedef Policy   policy_type;
   // Constructor from success_fraction:
   geometric_distribution(RealType p);
   // Parameter accessors:
   RealType success_fraction() const;
   RealType successes() const;
   // Bounds on success fraction:
   static RealType find_lower_bound_on_p(
      RealType trials,
      RealType successes,
      RealType probability); // alpha
   static RealType find_upper_bound_on_p(
      RealType trials,
      RealType successes,
      RealType probability); // alpha
   // Estimate min/max number of trials:
   static RealType find_minimum_number_of_trials(
      RealType k,     // Number of failures.
      RealType p,     // Success fraction.
      RealType probability); // Probability threshold alpha.
   static RealType find_maximum_number_of_trials(
      RealType k,     // Number of failures.
      RealType p,     // Success fraction.
      RealType probability); // Probability threshold alpha.
};
}} // namespaces

Тип классагеометрическое распределениепредставляет собойгеометрическое распределение: Он используется, когда есть ровно два взаимоисключающих результата исследованияБернулли: Эти результаты обозначены как «успех» и «провал».

ДляИспытания Бернулликаждый с долей успехаp, геометрическое распределение дает вероятность наблюденияkиспытаний (провалов, событий, происшествий или приходов) до первого успеха.

[Note] Note

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

Геометрическое распределение предполагает, что успешность_фракциярфиксируется для всехkиспытаний.

Вероятность того, что естьkнеудач до первого успеха, равна

   Pr(Y=k) = (1-p)kp

Например, при бросании 6-гранной кости вероятность успехаp= 1/6 = 0,166 ̇ . Неоднократно бросая до тех пор, пока не появитсятри, распределение вероятности числа разне-трибросается геометрически.

Геометрическое распределение имеет функцию плотности вероятности PDF:

   (1-p)kp

Следующий график иллюстрирует, как PDF и CDF изменяются для трех примеров дроби успехаp, (при рассмотрении геометрического распределения как непрерывной функции),

И как дискретный.

Related Distributions

Геометрическое распределение является особым случаемотрицательного биномиального распределенияс параметром успехаr= 1, поэтому требуется только один первый и единственный успех: таким образом по определению   геометрическийр]==отрицательный биномиальный1,р

negative_binomial_distribution(RealType r, RealType success_fraction);
negative_binomial nb(1, success_fraction);
geometric g(success_fraction);
ASSERT(pdf(nb, 1) == pdf(g, 1));

Эта реализация использует реальные числа для вычислений на всем протяжении (потому что она используетреальную величинумощности и экспоненциальные функции). Таким образом, чтобы получить обычное строго дискретное геометрическое распределение, вы должны убедиться, что для числа испытаний (случайной переменной)kпредусмотрено целое число значений (функции пола или потолка) из функций, возвращающих ряд успехов.

[Caution] Caution

Геометрическое распределение — это дискретное распределение: внутренне такие функции, какcdfиpdf, рассматриваются «как если бы» они были непрерывными функциями, но в действительности результаты, возвращаемые из этих функций, имеют значение только в том случае, если для аргумента случайной вариации предусмотрено целое значение.

Квантильная функция по умолчанию возвращает целочисленный результат, который был округленнаружу. То есть нижние квантили (где вероятность меньше 0,5) округлены вниз, а верхние квантили (где вероятность больше 0,5) округлены вверх. Такое поведение гарантирует, что если запрашивается квантиль X%, топо меньшей мерезапрашиваемое покрытие будет присутствовать в центральном регионе, ане болеезапрашиваемое покрытие будет присутствовать в хвостах.

Это поведение может быть изменено так, что функции квантиля округляются по-разному или даже возвращают реальный результат, используяПолитики. Настоятельно рекомендуется прочитать учебник«Понимание квантилей дискретных распределений»перед использованием функции квантиля на геометрическом распределении.справочные документыописывают, как изменить политику округления для этих распределений.

Member Functions
Constructor
geometric_distribution(RealType p);

Конструктор:pили success_fraction — вероятность успеха одного испытания.

Требуется:0<=p<=1.

Accessors
RealType success_fraction() const; // successes / trials (0 <= p <= 1)

Возвращает параметр success_fractionp, из которого было построено это распределение.

RealType successes() const; // required successes always one,
// included for compatibility with negative binomial distribution
// with successes r == 1.

Возвращает единство.

Следующие функции эквивалентны функциям, предусмотренным для отрицательного бинома, с успехами = 1, но приведены здесь для полноты.

Лучший метод расчета для следующих функций оспаривается: см.Биномиальное распределениеиОтрицательное биномиальное распределениедля дальнейшего обсуждения.

Lower Bound on success_fraction Parameter p
static RealType find_lower_bound_on_p(
  RealType failures,
  RealType probability) // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.

Возвращает нижнюю границуна долю успеха:

failures

Общее количество неудач до 1-го успеха.

alpha

Наибольшая приемлемая вероятность того, что истинное значение доли успехаменьшевозвращенного значения.

Например, если вы наблюдаетеkотказов отnиспытаний, лучшая оценка для фракции успеха составляет всего 1/n, но если вы хотите быть на 95% уверены, что истинное значениебольше, чем.некоторое значение,pмин, затем:

pmin = geometric_distribution<RealType>::
   find_lower_bound_on_p(failures, 0.05);

См. пример отрицательного_биномиального доверительного интервала.

Эта функция использует метод Клоппера-Пирсона вычисления нижней границы на дроби успеха, в то время как многие тексты ссылаются на этот метод как дающий «точный» результат на практике, он создает интервал, который гарантируетпо меньшей меретребуемое покрытие и может производить пессимистические оценки для некоторых комбинаций.неудачииуспехи. Смотри:

Йонг Кай и К. Кришнамурти, простой улучшенный метод вывода для некоторых дискретных распределений. Computational statistics and data analysis, 2005, vol. 48, no3, 605-621.

Upper Bound on success_fraction Parameter p
static RealType find_upper_bound_on_p(
   RealType trials,
   RealType alpha); // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.

Возвращает верхнюю границуна дроби успеха:

trials

Общее количество проведенных испытаний.

alpha

Наибольшая приемлемая вероятность того, что истинное значение дроби успехабольше, чемвозвращенное значение.

Например, если вы наблюдаетеkуспехи изnиспытаний, лучшая оценка для фракции успеха составляет простоk/n, но если вы хотите быть на 95% уверены, что истинное значениеменьшенекоторое значение,pмакс, то:

pmax = geometric_distribution<RealType>::find_upper_bound_on_p(
                    k, 0.05);

См. пример отрицательного биномиального доверительного интервала.

Эта функция использует метод Клоппера-Пирсона вычисления нижней границы на дроби успеха, в то время как многие тексты ссылаются на этот метод как дающий «точный» результат на практике, он создает интервал, который гарантируетпо меньшей меретребуемое покрытие и может производить пессимистические оценки для некоторых комбинаций.неудачииуспехи. Смотри:

Йонг Кай и К. Кришнамурти, простой улучшенный метод вывода для некоторых дискретных распределений. Computational statistics and data analysis, 2005, vol. 48, no3, 605-621.

Estimating Number of Trials to Ensure at Least a Certain Number of Failures
static RealType find_minimum_number_of_trials(
   RealType k,     // number of failures.
   RealType p,     // success fraction.
   RealType alpha); // probability threshold (0.05 equivalent to 95%).

Эта функция оценивает количество испытаний, необходимых для достижения определенной вероятности, чтоболееkбудут наблюдаться сбои.

k

Целевой показатель количества неисправностей, подлежащих соблюдению.

p

Вероятностьуспехадля каждого испытания.

alpha

Максимально допустимыйриск, что будут наблюдаться толькоkсбоев или меньше.

Например:

geometric_distribution<RealType>::find_minimum_number_of_trials(10, 0.5, 0.05);

Возвращает наименьшее количество испытаний, которые мы должны провести, чтобы быть на 95% (1-0,05), уверенные в том, что 10 сбоев происходят с частотой одна половина.

Пример работы.

Эта функция использует числовую инверсию геометрического распределения для получения результата: другая интерпретация результата заключается в том, что она находит количество испытаний (неудач), которые приведут кальфавероятности наблюденияkсбоев или меньше.

Estimating Number of Trials to Ensure a Maximum Number of Failures or Less
static RealType find_maximum_number_of_trials(
   RealType k,     // number of failures.
   RealType p,     // success fraction.
   RealType alpha); // probability threshold (0.05 equivalent to 95%).

Эта функция оценивает максимальное количество испытаний, которые мы можем провести, и достигает определенной вероятности, чтоk отказов или меньше будет наблюдаться.

k

Максимальное количество неисправностей, которые необходимо наблюдать.

p

Вероятностьуспехадля каждого испытания.

alpha

Максимально допустимыйриск, что будет наблюдаться болееkотказов.

Например:

geometric_distribution<RealType>::find_maximum_number_of_trials(0, 1.0-1.0/1000000, 0.05);

Возвращает наибольшее количество испытаний, которые мы можем провести, и все еще на 95% уверен, что не увидим сбоев, которые происходят с частотой один на миллион.

Эта функция использует числовую инверсию геометрического распределения для получения результата: другая интерпретация результата заключается в том, что она находит количество испытаний, которые приведут кальфавероятности наблюдения более чем k отказов.

Non-member Accessors

Поддерживаются всеобычные нечленные функции доступа, которые являются общими для всех распределений:Кумулятивная функция распределения,Функция плотности вероятности,Количественная,Функция опасности,Кумулятивная функция опасности,среднее,медианное,режим,дисперсия,стандартное отклонение,искажение,куртоз,куртоз_избыток,диапазониподдержка.

Однако стоит потратить некоторое время, чтобы определить, что они на самом деле означают в контексте этого распределения:

Table 5.2. Meaning of the non-member accessors.

Функция

значение

Функция плотности вероятности

Вероятность полученияточно k отказовизkиспытаний с успешной фракцией p. Например:

pdfгеометрическийp,k

Кумулятивная функция распределения

Вероятность полученияk отказов или меньшеизkиспытаний с успехом фракции p и успехом в последнем испытании. Например:

cdfгеометрическийp,k

Дополнение кумулятивной функции распределения

Вероятность полученияболее k отказовизkиспытаний с успехом фракции p и успехом в последнем испытании. Например:

cdfдополнениегеометрическое]

Quantile

Наибольшеечисло отказовk, как ожидается, будет наблюдаться вkиспытаниях с успешной фракциейp, с вероятностьюP. Обратите внимание, что возвращенное значение является реальным числом, а не целым числом. В зависимости от варианта использования вы можете выбрать пол или потолок реального результата. Например:

квантильгеометрическийp,P

Количественное дополнение вероятности

наименьшеечисло отказовkожидается наблюдать изkиспытаний с успешной фракциейp, с вероятностьюP. Обратите внимание, что возвращенное значение является реальным числом, а не целым числом. В зависимости от варианта использования вы можете выбрать пол или потолок реального результата. Например:

квантильдополнениегеометрическийp,P]

Accuracy

Это распределение реализовано с использованием функций pow и exp, поэтому большинство результатов являются точными в пределах нескольких эпсилон для RealType. Для крайних значенийдвойныхp, например 0,9999999999, точность может значительно упасть, например до 10 десятичных цифр (от 16).

Implementation

В следующей таблицеp- вероятность того, что любое одно испытание будет успешным (фракция успеха),k- число отказов,p- вероятность иq = 1-р,x- заданная вероятность для оценки ожидаемого числа отказов с использованием квантиля.

Функция

Записки об осуществлении

pdf

pdf = p * pow(q, k)

cdf

cdf = 1 — qk=1

cdf

exp(log1p(-p)* (k+1)

квантиль

k = log1p(-x) / log1p(-p) -1

квантиль от дополнения

k = log(x) / log1p(-p) -1

означает

(1-р)/р

Разница

(1-р)/p²

Режим

0

Искажение

(2-р)/√q

Куртоз

9+p²/q

Избыток куртоза

6 +p²/q

функции члена оценки параметров

См.Отрицательное биномиальное распределение

find_lower_bound_on_p

См.Отрицательное биномиальное распределение

find_upper_bound_on_p

См.Отрицательное биномиальное распределение

find_minimum_number_of_trials

См.Отрицательное биномиальное распределение

find_maximum_number_of_trials

См.Отрицательное биномиальное распределение


PrevUpHomeNext

Статья Geometric Distribution раздела Math Toolkit 2.5.0 Distributions может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Distributions ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 22:54:07/0.010400056838989/0