scipy.stats.Normal.

logccdf#

Нормальный.logccdf(x, y=None, /, *, метод=None)[источник]#

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

Дополнительная кумулятивная функция распределения («CCDF»), обозначаемая \(G(x)\) является дополнением функции кумулятивного распределения \(F(x)\); т.е., вероятность того, что случайная величина \(X\) будет принимать значение больше, чем \(x\):

\[ \begin{align}\begin{aligned} G(x) = 1 - F(x) = P(X > x)\\A two-argument variant of this function is:\end{aligned}\end{align} \]
\[G(x, y) = 1 - F(x, y) = P(X < x \quad \text{or} \quad X > y)\]

logccdf вычисляет логарифм дополнительной кумулятивной функции распределения ("log-CCDF"), \(\log(G(x))\)/\(\log(G(x, y))\), но оно может быть численно более выгодным по сравнению с наивной реализацией (вычисление CDF и взятие логарифма).

logccdf принимает x для \(x\) и y для \(y\).

Параметры:
x, yarray_like

Аргументы логарифма дополнительной функции распределения. x требуется; y является необязательным.

метод{None, 'formula', 'logexp', 'complement', 'quadrature', 'addition'}

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

  • 'formula': использовать формулу для самой логарифмической CCDF

  • 'logexp': вычислить CCDF и взять логарифм

  • 'complement': вычислить лог-CDF и взять логарифмическое дополнение (см. Примечания)

  • 'quadrature': численно логарифмически интегрировать лог-PDF (или, в дискретном случае, логарифмически суммировать лог-PMF)

Двухаргументная форма выбирает между:

  • 'formula': использовать формулу для самой логарифмической CCDF

  • 'addition': вычисляет логарифм функции распределения в x и логарифм CCDF в y, затем взять логарифмическую сумму (см. Примечания)

Не все метод опции доступны для всех распределений. Если выбранная метод недоступен, NotImplementedError будет вызвано исключение.

Возвращает:
выходмассив

Логарифм CCDF, вычисленный для предоставленного аргумента(ов).

Смотрите также

ccdf
logcdf

Примечания

Предположим, непрерывное распределение вероятностей имеет носитель \([l, r]\). Логарифмическая CCDF возвращает своё минимальное значение \(\log(0)=-\infty\) для \(x ≥ r\) и его максимальное значение \(\log(1) = 0\) для \(x ≤ l\). Аналогичное утверждение можно сделать для дискретных распределений, но неравенство, управляющее максимальным значением, является строгим.

Для распределений с бесконечным носителем часто бывает, что ccdf возвращать значение 0 когда аргумент теоретически находится в пределах области определения; это может произойти, потому что истинное значение CCDF слишком мало для представления выбранным типом данных. Логарифм CCDF, однако, часто будет конечным (не -inf) на гораздо большей области. Аналогично, logccdf может дать строго отрицательный результат с аргументами, для которых ccdf вернёт 1.0. Следовательно, может быть предпочтительнее работать с логарифмами вероятностей, чтобы избежать потери точности и связанных ограничений чисел с плавающей запятой.

«Логарифмическое дополнение» числа \(z\) математически эквивалентно \(\log(1-\exp(z))\), но он вычисляется, чтобы избежать потери точности, когда \(\exp(z)\) почти \(0\) или \(1\). Аналогично, термин "логарифмическая сумма" \(w\) и \(z\) используется здесь в значении \(\log(\exp(w)+\exp(z))\), также известный как \(\text{LogSumExp}(w, z)\).

Ссылки

[1]

Функция кумулятивного распределения, Википедия, https://en.wikipedia.org/wiki/Cumulative_distribution_function#Derived_functions

Примеры

любым из целых чисел в полуоткрытом диапазоне

>>> import numpy as np
>>> from scipy import stats
>>> X = stats.Uniform(a=-0.5, b=0.5)

Вычислить логарифм дополнительной функции распределения в требуемом аргументе:

>>> X.logccdf(0.25)
-1.3862943611198906
>>> np.allclose(X.logccdf(0.), np.log(X.ccdf(0.)))
True