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

Binomial 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/binomial.hpp>
namespace boost{ namespace math{
template <class RealType = double,
          class Policy   = policies::policy<> >
class binomial_distribution;
typedef binomial_distribution<> binomial;
template <class RealType, class Policy>
class binomial_distribution
{
public:
   typedef RealType  value_type;
   typedef Policy    policy_type;
   static const unspecified-type clopper_pearson_exact_interval;
   static const unspecified-type jeffreys_prior_interval;
   // construct:
   binomial_distribution(RealType n, RealType p);
   // parameter access::
   RealType success_fraction() const;
   RealType trials() const;
   // Bounds on success fraction:
   static RealType find_lower_bound_on_p(
      RealType trials,
      RealType successes,
      RealType probability,
      unspecified-type method = clopper_pearson_exact_interval);
   static RealType find_upper_bound_on_p(
      RealType trials,
      RealType successes,
      RealType probability,
      unspecified-type method = clopper_pearson_exact_interval);
   // estimate min/max number of trials:
   static RealType find_minimum_number_of_trials(
      RealType k,     // number of events
      RealType p,     // success fraction
      RealType alpha); // risk level
   static RealType find_maximum_number_of_trials(
      RealType k,     // number of events
      RealType p,     // success fraction
      RealType alpha); // risk level
};
}} // namespaces

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

[Note] Note

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

PDF для биномиального распределения дается:

Следующие два графика иллюстрируют, как PDF изменяется в зависимости от параметров дистрибутивов, сначала мы сохраним дробь успехаpфиксированной на 0,5 и варьируем размер выборки:

Альтернативно, мы можем сохранить размер выборки фиксированным при N=20 и варьировать дробь успехаp:

[Caution] Caution

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

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

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

Member Functions
Construct
binomial_distribution(RealType n, RealType p);

Конструктор:n— общее количество испытаний,p— вероятность успеха одного испытания.

<0<= p<= 1>и<n >=0>, иначе вызываетдоменную ошибку.

Accessors
RealType success_fraction() const;

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

RealType trials() const;

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

Lower Bound on the Success Fraction
static RealType find_lower_bound_on_p(
   RealType trials,
   RealType successes,
   RealType alpha,
   unspecified-type method = clopper_pearson_exact_interval);

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

trials

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

successes

Количество успехов, которые произошли.

alpha

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

method

Необязательный параметр, который определяет метод, который будет использоваться для вычисления интервала (см. ниже).

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

pmin = binomial_distribution<RealType>::find_lower_bound_on_p(
                    n, k, 0.05);

См. пример.

В настоящее время доступны два возможных значения для методанеобязательного параметра:Clopper_pearson_exact_intervalилиjeffreys_prior_interval. Эти константы являются членами шаблона класса<binomial_distribution>, так что использование, например:

p = binomial_distribution<RealType>::find_lower_bound_on_p(
    n, k, 0.05, binomial_distribution<RealType>::jeffreys_prior_interval);

Методом по умолчанию, если этот параметр не указан, является «точный» интервал Клоппера Пирсона. Это создает интервал, который гарантирует по меньшей мере<100(1-alpha)%>покрытие, но который, как известно, является чрезмерно консервативным, иногда создавая интервалы с гораздо большим, чем запрашиваемое покрытие.

Альтернативный метод расчета дает неинформативный интервал Джеффриса Приора. Он производит<100(1-alpha)%>покрытие тольков среднем случае, хотя обычно очень близок к запрашиваемому уровню покрытия. Это один из основных методов расчета, рекомендованных в обзоре Брауном, Каем и Дасгуптой.

Обратите внимание, что метод расчета «учебника» с использованием нормального приближения (интервал Вальда) намеренно не предусмотрен: известно, что он дает стабильно плохие результаты, даже когда размер выборки удивительно велик. Обратитесь к Брауну, Каю и Дасгупте за полным объяснением. Существует множество других методов расчета, которые могут быть более подходящими для конкретных ситуаций. К сожалению, среди статистиков нет консенсуса относительно того, что является «лучшим»: обратитесь к дискуссии в конце Брауна, Кай и Дасгупты для примеров.

Эти два метода были выбраны главным образом потому, что они могут использоваться как для одного, так и для двух боковых интервалов. Смотрите также:

Lawrence D. Brown, T. Tony Cai and Anirban DasGupta (2001), Interval Estimation for a Binomial Proportion, Statistical Science, Vol. 16, No. 2, 101-133.

T. Tony Cai (2005), One-sided confidence intervals in discrete distributions, Journal of Statistical Planning and Inference 131, 63-88.

Agresti, A. and Coull, B. A. (1998). Примерный лучше, чем «точный» для интервальной оценки биномиальных пропорций. Амер. Статист. 52 119-126.

Clopper, C. J. and Pearson, E. S. (1934). Использование доверительных или фидуциальных пределов иллюстрируется в случае биномиала. Биометрика 26 404-413.

Upper Bound on the Success Fraction
static RealType find_upper_bound_on_p(
   RealType trials,
   RealType successes,
   RealType alpha,
   unspecified-type method = clopper_pearson_exact_interval);

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

trials

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

successes

Количество успехов, которые произошли.

alpha

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

method

Необязательный параметр, который определяет способ, который будет использоваться для вычисления интервала. См. вышеприведенную документацию<find_upper_bound_on_p>для определения вариантов способа.

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

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

См. пример.

[Note] Note

Чтобы получить двухстороннюю связь на дроби успеха, вы называете оба<find_lower_bound_on_p>и<find_upper_bound_on_p>с одинаковыми аргументами.

Если желаемый уровень риска, что истинная доля успеха лежит вне пределов, составляет α то вы переходите α/2 к этим функциям.

Так, например, двухсторонний 95% доверительный интервал будет получен путем прохождения α = 0,025 к каждой из функций.

См. пример.

Estimating the Number of Trials Required for a Certain Number of Successes
static RealType find_minimum_number_of_trials(
   RealType k,     // number of events
   RealType p,     // success fraction
   RealType alpha); // probability threshold

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

k

Количество наблюдаемых успехов.

p

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

alpha

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

Например:

binomial_distribution<RealType>::find_number_of_trials(10, 0.5, 0.05);

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

Estimating the Maximum Number of Trials to Ensure no more than a Certain Number of Successes
static RealType find_maximum_number_of_trials(
   RealType k,     // number of events
   RealType p,     // success fraction
   RealType alpha); // probability threshold

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

k

Количество наблюдаемых успехов.

p

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

alpha

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

Например:

binomial_distribution<RealType>::find_maximum_number_of_trials(0, 1e-6, 0.05);

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

См. пример.

Non-member Accessors

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

Домен для случайной переменнойkявляется<0<=k<=N>, в противном случае возвращаетсядомен_ошибка.

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

Table 5.1. Meaning of the non-member accessors

Функция

значение

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

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

<pdf(binomial(n, p), k)>

Функция кумулятивного распределения

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

<cdf(binomial(n, p), k)>

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

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

<cdf(complement(binomial(n, p), k))>

Квантиль

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

<quantile(binomial(n, p), P)>

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

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

<quantile(complement(binomial(n, p), P))>


Examples

Доступны различныепримеры, иллюстрирующие использование биномиального распределения.

Accuracy

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

Implementation

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

Функция

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

pdf

Реализация в терминахibeta_derivative: еслиnCkявляется биномиальным коэффициентом a и b, то мы имеем:

Что может быть оценено как<ibeta_derivative(k+1,n-k+1,p)/ (n+1)>

Здесь используется функцияibeta_derivative, поскольку она уже оптимизирована для наименьшей возможной ошибки — действительно, это всего лишь тонкая обертка вокруг части внутренних частей неполной бета-функции.

Существуют также различные особые случаи: обратитесь к коду для деталей.

cdf

Используя соотношение:

<
p=I[sub1-p](n-k,k+1)
 =1-I[subp](k+1,n-k)
 =ibetac(k+1,n-k,p)
>

Существуют также различные особые случаи: обратитесь к коду для деталей.

cdf

Используя соотношение: q =ibeta(k + 1, n - k, p)

Существуют также различные особые случаи: обратитесь к коду для деталей.

квантиль

Поскольку cdf является нелинейным в вариацииk, ни одна из обратных неполных бета-функций не может быть использована здесь. Вместо этого квантиль обнаруживается численно с использованием производного свободного методаалгоритма TOMS 748

.

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

Найдено численно, как выше.

означает

<p* n>

Разница

<p* n* (1-p)>

режим

<floor(p* (n +1))>

Косоглазие

<(1 -2 *p)/ sqrt(n* p* (1 -p))>

Куртоз

<3- (6 /n)+ (1 /(n* p* (1 -p)))>

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

<(1 -6 *p *q)/ (n *p *q)>

оценка параметров

Функции-члены<find_upper_bound_on_p><find_lower_bound_on_p>и<find_number_of_trials>реализованы с точки зрения обратных неполных бета-функцийibetac_inv,ibeta_invиibetac_invсоответственно

.
References

PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:16:45/0.011460065841675/0