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, вычисленный для предоставленного аргумента(ов).
Примечания
Предположим, непрерывное распределение вероятностей имеет носитель \([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