scipy.special.xlog1py#

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

Вычислить x*log1p(y) так, чтобы результат был 0, если x = 0.

Параметры:
xarray_like

Множитель

yarray_like

Аргумент

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

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

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

Вычислено x*log1p(y)

Примечания

Добавлено в версии 0.13.0.

Примеры

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

\[f(k) = (1-p)^{k-1} p\]

где \(p\) является вероятностью единичного успеха и \(1-p\) это вероятность единичного отказа и \(k\) это количество испытаний до первого успеха.

>>> import numpy as np
>>> from scipy.special import xlog1py
>>> p = 0.5
>>> k = 100
>>> _pmf = np.power(1 - p, k - 1) * p
>>> _pmf
7.888609052210118e-31

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

>>> _log_pmf = xlog1py(k - 1, -p) + np.log(p)
>>> _log_pmf
-69.31471805599453

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

>>> _orig_pmf = np.exp(_log_pmf)
>>> np.isclose(_pmf, _orig_pmf)
True