scipy.special.log_ndtr#

scipy.special.log_ndtr(x, выход=None) = 'log_ndtr'>#

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

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

log(1/sqrt(2*pi) * integral(exp(-t**2 / 2), t=-inf..x))
Параметры:
xarray_like, вещественный или комплексный

Аргумент

выходndarray, необязательно

Необязательный выходной массив для результатов функции

Возвращает:
скаляр или ndarray

Значение логарифма нормальной CDF, вычисленное в x

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

erf
erfc
scipy.stats.norm
ndtr

Примечания

log_ndtr имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

Dask

н/д

См. Поддержка стандарта array API для получения дополнительной информации.

Примеры

>>> import numpy as np
>>> from scipy.special import log_ndtr, ndtr

Преимущество log_ndtr(x) по сравнению с наивной реализацией np.log(ndtr(x)) наиболее очевиден при умеренных и больших положительных значениях x:

>>> x = np.array([6, 7, 9, 12, 15, 25])
>>> log_ndtr(x)
array([-9.86587646e-010, -1.27981254e-012, -1.12858841e-019,
       -1.77648211e-033, -3.67096620e-051, -3.05669671e-138])

Результаты наивного расчёта для умеренного x значения имеют только 5 или 6 верных значащих цифр. Для значений x больше примерно 8.3, наивное выражение возвращает 0:

>>> np.log(ndtr(x))
array([-9.86587701e-10, -1.27986510e-12,  0.00000000e+00,
        0.00000000e+00,  0.00000000e+00,  0.00000000e+00])