logcdf#
- Равномерное.logcdf(x, y=None, /, *, метод=None)[источник]#
Логарифм функции кумулятивного распределения
Функция распределения ("CDF"), обозначаемая \(F(x)\), это вероятность того, что случайная величина \(X\) будет принимать значение меньшее или равное \(x\):
\[F(x) = P(X ≤ x)\]Двухаргументный вариант этой функции также определён как вероятность того, что случайная величина \(X\) будет принимать значение между \(x\) и \(y\).
\[F(x, y) = P(x ≤ X ≤ y)\]logcdfвычисляет логарифм функции распределения («log-CDF»), \(\log(F(x))\)/\(\log(F(x, y))\), но это может быть численно более предпочтительно по сравнению с наивной реализацией (вычислением CDF и взятием логарифма).logcdfпринимает x для \(x\) и y для \(y\).- Параметры:
- x, yarray_like
Аргументы логарифма функции распределения. x требуется; y является необязательным.
- метод{None, ‘formula’, ‘logexp’, ‘complement’, ‘quadrature’, ‘subtraction’}
Стратегия, используемая для оценки логарифма функции распределения. По умолчанию (
None), однопараметрическая форма функции выбирает между следующими опциями, перечисленными в порядке приоритета.'formula': использование формулы для самой log-CDF'logexp': вычислить CDF и взять логарифм'complement': вычисление log-CCDF и взятие логарифмического дополнения (см. примечания)'quadrature': численно логарифмически интегрировать лог-PDF (или, в дискретном случае, логарифмически суммировать лог-PMF)
Вместо
'complement', форма с двумя аргументами принимает:'subtraction': вычислить логарифм CDF для каждого аргумента и взять логарифмическую разность (см. Примечания)
Не все метод опции доступны для всех распределений. Если выбранная метод недоступен,
NotImplementedErrorбудет вызвано исключение.
- Возвращает:
- выходмассив
Логарифм CDF, вычисленный в заданном аргументе(ах).
Примечания
Предположим, непрерывное распределение вероятностей имеет носитель \([l, r]\). Логарифм функции распределения достигает своего минимального значения \(\log(0) = -\infty\) для \(x ≤ l\) и его максимальное значение \(\log(1) = 0\) для \(x ≥ r\). Аналогичное утверждение можно сделать для дискретных распределений, но неравенство, определяющее минимальное значение, является строгим.
Для распределений с бесконечным носителем часто бывает, что
cdfвозвращать значение0когда аргумент теоретически находится в пределах поддержки; это может произойти, потому что истинное значение CDF слишком мало для представления выбранным типом данных.logcdf, однако, часто возвращает конечное (не-inf) результат на гораздо большей области. Аналогично,logcdfможет дать строго отрицательный результат с аргументами, для которыхcdfвернёт1.0. Следовательно, может быть предпочтительнее работать с логарифмами вероятностей, чтобы избежать потери точности и связанных ограничений чисел с плавающей запятой.«Логарифмическое дополнение» числа \(z\) математически эквивалентно \(\log(1-\exp(z))\), но он вычисляется, чтобы избежать потери точности, когда \(\exp(z)\) почти \(0\) или \(1\). Аналогично, термин "логарифмическая разность" \(w\) и \(z\) используется здесь в значении \(\log(\exp(w)-\exp(z))\).
Если
y < x, CDF отрицательна, и поэтому log-CCDF является комплексным с мнимой частью \(\pi\). Для единообразия, результат этой функции всегда имеет комплексный тип данных когда y предоставляется, независимо от значения мнимой части.Ссылки
[1]Функция кумулятивного распределения, Википедия, https://en.wikipedia.org/wiki/Cumulative_distribution_function
Примеры
любым из целых чисел в полуоткрытом диапазоне
>>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-0.5, b=0.5)
Вычислить логарифм функции распределения в заданном аргументе:
>>> X.logcdf(0.25) -0.287682072451781 >>> np.allclose(X.logcdf(0.), np.log(X.cdf(0.))) True