scipy.special.gdtr#
-
scipy.special.gdtr(a, b, x, выход=None) =
'gdtr'> # Функция распределения гамма-распределения.
Возвращает интеграл от нуля до x гамма-функции плотности вероятности,
\[F = \int_0^x \frac{a^b}{\Gamma(b)} t^{b-1} e^{-at}\,dt,\]где \(\Gamma\) является гамма-функцией.
- Параметры:
- aarray_like
Параметр скорости гамма-распределения, иногда обозначаемый \(\beta\) (float). Это также обратная величина параметра масштаба \(\theta\).
- barray_like
Параметр формы гамма-распределения, иногда обозначаемый \(\alpha\) (float).
- xarray_like
Квантиль (верхний предел интегрирования; число с плавающей точкой).
- выходndarray, необязательно
Необязательный выходной массив для значений функции
- Возвращает:
- Fскаляр или ndarray
CDF гамма-распределения с параметрами a и b вычислено в x.
Смотрите также
gdtrc1 - CDF гамма-распределения.
scipy.stats.gammaГамма-распределение
Примечания
Вычисление выполняется с использованием связи с интегралом неполной гамма- функции (регуляризованной гамма-функции).
Обертка для Cephes [1] рутина
gdtr. Вызовgdtrнапрямую может улучшить производительность по сравнению сcdfметодscipy.stats.gamma(см. последний пример ниже).Ссылки
[1]Библиотека математических функций Cephes, http://www.netlib.org/cephes/
Примеры
Вычислить функцию для
a=1,b=2вx=5.>>> import numpy as np >>> from scipy.special import gdtr >>> import matplotlib.pyplot as plt >>> gdtr(1., 2., 5.) 0.9595723180054873
Вычислить функцию для
a=1иb=2в нескольких точках путем предоставления массива NumPy для x.>>> xvalues = np.array([1., 2., 3., 4]) >>> gdtr(1., 1., xvalues) array([0.63212056, 0.86466472, 0.95021293, 0.98168436])
gdtrможет оценивать различные наборы параметров, предоставляя массивы с совместимыми для трансляции формами для 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,))
>>> gdtr(a, 3., x) array([[0.01438768, 0.0803014 , 0.19115317, 0.32332358], [0.19115317, 0.57680992, 0.82642193, 0.9380312 ], [0.45618688, 0.87534798, 0.97974328, 0.9972306 ]])
Построить график функции для четырёх различных наборов параметров.
>>> 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 ... gdtr_vals = gdtr(a, b, x) ... ax.plot(x, gdtr_vals, label=fr"$a= {a},\, b={b}$", ls=style) >>> ax.legend() >>> ax.set_xlabel("$x$") >>> ax.set_title("Gamma distribution cumulative distribution function") >>> plt.show()
Гамма-распределение также доступно как
scipy.stats.gamma. Использованиеgdtrнапрямую может быть намного быстрее, чем вызовcdfметодscipy.stats.gamma, особенно для небольших массивов или отдельных значений. Для получения одинаковых результатов необходимо использовать следующую параметризацию:stats.gamma(b, scale=1/a).cdf(x)=gdtr(a, b, x).>>> from scipy.stats import gamma >>> a = 2. >>> b = 3 >>> x = 1. >>> gdtr_result = gdtr(a, b, x) # this will often be faster than below >>> gamma_dist_result = gamma(b, scale=1/a).cdf(x) >>> gdtr_result == gamma_dist_result # test that results are equal True