scipy.special.betainc#

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

Регуляризованная неполная бета-функция.

Вычисляет регуляризованную неполную бета-функцию, определенную как [1]:

\[I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x t^{a-1}(1-t)^{b-1}dt,\]

для \(0 \leq x \leq 1\).

Эта функция является функцией кумулятивного распределения для бета-распределения; её диапазон [0, 1].

Параметры:
a, barray_like

Положительные, вещественные параметры

xarray_like

Вещественное число такое, что \(0 \leq x \leq 1\), верхний предел интегрирования

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

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

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

Значение регуляризованной неполной бета-функции

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

beta

beta function

betaincinv

обратная функция регулярной неполной бета-функции

betaincc

дополнение регуляризованной неполной бета-функции

scipy.stats.beta

бета-распределение

Примечания

Термин регуляризованный в названии этой функции относится к масштабированию функции членами гамма-функции, показанными в формуле. Когда не указано как регуляризованный, имя неполная бета-функция часто относится только к интегральному выражению, без гамма-членов. Можно использовать функцию beta из scipy.special чтобы получить эту «нерегуляризованную» неполную бета- функцию, умножив результат betainc(a, b, x) by beta(a, b).

betainc(a, b, x) рассматривается как двухпараметрическое семейство функций одной переменной x, а не как функция трех переменных. Это влияет только на предельные случаи a = 0, b = 0, a = inf, b = inf.

В общем случае

\[\lim_{(a, b) \rightarrow (a_0, b_0)} \mathrm{betainc}(a, b, x)\]

рассматривается как поточечный предел в x. Таким образом, например, betainc(0, b, 0) равно 0 для b > 0, хотя он был бы неопределённым при рассмотрении одновременного предела (a, x) -> (0+, 0+).

Эта функция оборачивает ibeta подпрограмма из библиотеки Boost Math C++ [2].

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

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

Dask

н/д

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

Ссылки

[1]

NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/8.17

[2]

Разработчики Boost. «Boost C++ Libraries». https://www.boost.org/.

Примеры

Пусть \(B(a, b)\) будет beta функция.

>>> import scipy.special as sc

Коэффициент в терминах gamma равно \(1/B(a, b)\). Также, когда \(x=1\) интеграл равен \(B(a, b)\). Следовательно, \(I_{x=1}(a, b) = 1\) для любого \(a, b\).

>>> sc.betainc(0.2, 3.5, 1.0)
1.0

Оно удовлетворяет \(I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b))\), где \(F\) является гипергеометрической функцией hyp2f1:

>>> a, b, x = 1.4, 3.1, 0.5
>>> x**a * sc.hyp2f1(a, 1 - b, a + 1, x)/(a * sc.beta(a, b))
0.8148904036225295
>>> sc.betainc(a, b, x)
0.8148904036225296

Эта функция удовлетворяет соотношению \(I_x(a, b) = 1 - I_{1-x}(b, a)\):

>>> sc.betainc(2.2, 3.1, 0.4)
0.49339638807619446
>>> 1 - sc.betainc(3.1, 2.2, 1 - 0.4)
0.49339638807619446