scipy.special.gdtrc#

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

Функция выживания гамма-распределения.

Интеграл от x до бесконечности гамма-функции плотности вероятности,

\[F = \int_x^\infty \frac{a^b}{\Gamma(b)} t^{b-1} e^{-at}\,dt,\]

где \(\Gamma\) является гамма-функцией.

Параметры:
aarray_like

Параметр скорости гамма-распределения, иногда обозначаемый \(\beta\) (float). Также является обратной величиной параметра масштаба \(\theta\).

barray_like

Параметр формы гамма-распределения, иногда обозначаемый \(\alpha\) (float).

xarray_like

Квантиль (нижний предел интегрирования; float).

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

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

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

Функция выживания гамма-распределения с параметрами a и b вычислено в x.

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

gdtr

Функция распределения гамма-распределения

scipy.stats.gamma

Гамма-распределение

gdtrix

Примечания

Вычисление выполняется с использованием связи с интегралом неполной гамма- функции (регуляризованной гамма-функции).

Обертка для Cephes [1] рутина gdtrc. Вызов gdtrc напрямую может улучшить производительность по сравнению с sf метод scipy.stats.gamma (см. последний пример ниже).

Ссылки

[1]

Библиотека математических функций Cephes, http://www.netlib.org/cephes/

Примеры

Вычислить функцию для a=1 и b=2 в x=5.

>>> import numpy as np
>>> from scipy.special import gdtrc
>>> import matplotlib.pyplot as plt
>>> gdtrc(1., 2., 5.)
0.04042768199451279

Вычислить функцию для a=1, b=2 в нескольких точках, предоставив массив NumPy для x.

>>> xvalues = np.array([1., 2., 3., 4])
>>> gdtrc(1., 1., xvalues)
array([0.36787944, 0.13533528, 0.04978707, 0.01831564])

gdtrc может оценивать различные наборы параметров, предоставляя массивы с совместимыми для трансляции формами для a, b и x. Здесь мы вычисляем функцию для трех различных a в четырёх позициях x и b=3, что приводит к массиву 3x4.

>>> a = np.array([[0.5], [1.5], [2.5]])
>>> x = np.array([1., 2., 3., 4])
>>> a.shape, x.shape
((3, 1), (4,))
>>> gdtrc(a, 3., x)
array([[0.98561232, 0.9196986 , 0.80884683, 0.67667642],
       [0.80884683, 0.42319008, 0.17357807, 0.0619688 ],
       [0.54381312, 0.12465202, 0.02025672, 0.0027694 ]])

Построить график функции для четырёх различных наборов параметров.

>>> a_parameters = [0.3, 1, 2, 6]
>>> b_parameters = [2, 10, 15, 20]
>>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
>>> parameters_list = list(zip(a_parameters, b_parameters, linestyles))
>>> x = np.linspace(0, 30, 1000)
>>> fig, ax = plt.subplots()
>>> for parameter_set in parameters_list:
...     a, b, style = parameter_set
...     gdtrc_vals = gdtrc(a, b, x)
...     ax.plot(x, gdtrc_vals, label=fr"$a= {a},\, b={b}$", ls=style)
>>> ax.legend()
>>> ax.set_xlabel("$x$")
>>> ax.set_title("Gamma distribution survival function")
>>> plt.show()
../../_images/scipy-special-gdtrc-1_00_00.png

Гамма-распределение также доступно как scipy.stats.gamma. Используя gdtrc напрямую может быть намного быстрее, чем вызов sf метод из scipy.stats.gamma, особенно для небольших массивов или отдельных значений. Чтобы получить те же результаты, необходимо использовать следующую параметризацию: stats.gamma(b, scale=1/a).sf(x)=gdtrc(a, b, x).

>>> from scipy.stats import gamma
>>> a = 2
>>> b = 3
>>> x = 1.
>>> gdtrc_result = gdtrc(a, b, x)  # this will often be faster than below
>>> gamma_dist_result = gamma(b, scale=1/a).sf(x)
>>> gdtrc_result == gamma_dist_result  # test that results are equal
True