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

Generic operations common to all distributions are non-member functions

Boost , Math Toolkit 2.5.0 , Overview of 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

Хотите рассчитать PDF (функцию плотности вероятности) дистрибутива? Нет проблем, просто используйте:

pdf(my_dist, x);  // Returns PDF (density) at point x of distribution my_dist.

Или как насчет CDF (кумулятивная функция распределения):

cdf(my_dist, x);  // Returns CDF (integral from -infinity to point x)
                  // of distribution my_dist.

И квантили – это одно и то же:

quantile(my_dist, p);  // Returns the value of the random variable x
                       // such that cdf(my_dist, x) == p.

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

[Tip] Tip

Случайные числа, приближенные к квантилям распределения

Если вам нужны случайные числа, которые распределены определенным образом, например, в однородном, нормальном или треугольном, см.Boost. Случайность.

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

Например, биномиальное распределение имеет два параметра: n (количество испытаний) и p (вероятность успеха на любом одном испытании).

Таким образом,<binomial_distribution>конструктор имеет два параметра:

<binomial_distribution(RealTypen,RealType p);>

Для этого распределенияслучайная вариацияравна k: число наблюдаемых успехов. Таким образом, функция плотности вероятности/массы (pdf) записывается какf(k; n, p).

[Note] Note

Случайные вариации и параметры распределения

Понятиеслучайной величинытесно связано с терминомслучайной величины: случайная переменная - это конкретное значение (результат) случайной переменной. ипараметры распределенияусловно различают (например, в Википедии и Wolfram MathWorld), помещая полуколонную или вертикальную полосу)послеслучайной переменной(значение которой вы «выбираете»), чтобы отделить вариацию от параметра(ов), определяющего форму распределения.
Например, функция распределения вероятности биномиального распределения (PDF) записана какf(k | n, p)= Pr(K = k |n, p) = вероятность наблюдения k успехов из n испытаний. K —случайная величина, k —случайная переменная, параметры — n (пробы) и p (вероятность).

[Note] Note

По условностислучайные вариацииявляются нижним случаем, обычно k является интегралом, x — если реальным, аслучайная величина— верхним случаем, K — если интегралом, X — если реальным. Но эта реализация рассматривает все как значения с плавающей точкой<RealType>, поэтому, если вы действительно хотите получить интегральный результат, вы должны округлить: см. примечание о распределении дискретных вероятностей ниже для деталей.

Как было отмечено выше, функция<pdf>нечлена имеет один параметр для объекта распределения, а второй для случайной вариации. Взяв пример биномиального распределения, мы напишем:

<pdf(binomial_distribution<RealType>(n,p),k);>

Диапазоныслучайных величин, которые разрешены и поддерживаются, могут быть проверены с использованием двух функций<range>и<support>.

Распределение (фактическислучайная вариация) называется «поддерживаемым» в диапазоне, который составляет«наименьший замкнутый набор, комплемент которого имеет нулевую вероятность». MathWorld использует слово «определенный» для этого диапазона. Нематематики могут сказать, что это означает «интересный» наименьший диапазон случайной вариации x, в котором cdf переходит от нуля к единству. Снаружи неинтересны зоны, где pdf равен нулю, а cdf равен нулю или единству.

Для большинства распределений, с функциями распределения вероятностей, которые можно описать как «хорошо проведенные», мы решили, что наиболее полезно для поддерживаемого диапазона исключитьслучайные переменные значения, такие как точный ноль, если конечная точка является прерывистой. Например, распределение Weibull (масштаб 1, форма 1) плавно направляется к единице, поскольку случайная вариация x снижается к нулю. Но при x = нуле значение pdf внезапно становится точно равным нулю. Если вы строите график PDF или иным образом вычисляете, ноль не является наиболее полезным значением для нижней границы поддерживаемого, как мы обнаружили. Таким образом, для этого и подобных распределений мы решили, что наиболее численно полезно использовать максимально близкое к нулю значение min_value для предела поддерживаемого диапазона.<range>остается от нуля, так что вы все равно получите<pdf(weibull,0) ==0>. (Экспоненциальные и гамма-распределения имеют схожие прерывистые функции).

Математически функции могут иметь смысл с (+ или -) бесконечным значением, но за исключением нескольких особых случаев (в распределениях Нормального и Коши) эта реализация ограничивает случайные вариации конечных значений от<max>до<min>для<RealType>.Обработка бесконечности плавающей точкидля обоснования.

[Note] Note

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

Обратите внимание, чтодискретные распределения, включая биномиальные, отрицательные биномиальные, Poisson & Bernoulli, математически определяются как дискретные функции: то есть функции<cdf>и<pdf>определяются только для интегральных значений случайной вариации.

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

Пользователи, желающие реализовать строгую математическую модель, могут использовать функции<floor>или<ceil>на случайной переменной до вызова функции распределения.

Функции квантиле для этих распределений трудно определить таким образом, чтобы удовлетворить всех. Поведение по умолчанию заключается в возврате целого результата, который был округленнаружу: То есть нижние квантили, где вероятность меньше 0,5, округляются вниз, а верхние квантили, где вероятность больше 0,5, округляются. Такое поведение гарантирует, что если запрашивается квантиль X%, топо крайней мерезапрашиваемое покрытие будет присутствовать в центральном регионе, ане болеезапрашиваемое покрытие будет присутствовать в хвостах.

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

По аналогичным причинам непрерывные распределения с такими параметрами, как «градусы свободы», которые могут казаться интегральными, рассматриваются как реальные значения (и при необходимости продвигаются от целого к плавающей точке). Однако в этом случае существует небольшое число ситуаций, когда неинтегральные степени свободы имеют подлинное значение.


PrevUpHomeNext

Статья Generic operations common to all distributions are non-member functions раздела Math Toolkit 2.5.0 Overview of Distributions может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 23:02:06/0.0081801414489746/0