scipy.special.fdtr#
-
scipy.special.fdtr(dfn, dfd, x, выход=None) =
'fdtr'> # F-функция кумулятивного распределения.
Возвращает значение функции кумулятивного распределения F-распределения, также известного как распределение Фишера-Снедекора.
F-распределение с параметрами \(d_n\) и \(d_d\) является распределением случайной величины,
\[X = \frac{U_n/d_n}{U_d/d_d},\]где \(U_n\) и \(U_d\) являются случайными величинами, распределёнными \(\chi^2\), с \(d_n\) и \(d_d\) степени свободы, соответственно.
- Параметры:
- dfnarray_like
Первый параметр (положительное число с плавающей точкой).
- dfdarray_like
Второй параметр (положительное число с плавающей запятой).
- xarray_like
Аргумент (неотрицательное число с плавающей точкой).
- выходndarray, необязательно
Необязательный выходной массив для значений функции
- Возвращает:
- yскаляр или ndarray
Функция распределения F-распределения с параметрами dfn и dfd в x.
Смотрите также
fdtrcФункция выживания распределения F
fdtriОбратная функция распределения F-распределения
scipy.stats.fF-распределение
Примечания
Используется регуляризованная неполная бета-функция, согласно формуле,
\[F(d_n, d_d; x) = I_{xd_n/(d_d + xd_n)}(d_n/2, d_d/2).\]Обертка для Cephes [1] рутина
fdtr. Распределение Фишера также доступно какscipy.stats.f. Вызовfdtrнапрямую может улучшить производительность по сравнению сcdfметодscipy.stats.f(см. последний пример ниже).Ссылки
[1]Библиотека математических функций Cephes, http://www.netlib.org/cephes/
Примеры
Вычислить функцию для
dfn=1иdfd=2вx=1.>>> import numpy as np >>> from scipy.special import fdtr >>> fdtr(1, 2, 1) 0.5773502691896258
Вычислить функцию в нескольких точках, предоставив массив NumPy для x.
>>> x = np.array([0.5, 2., 3.]) >>> fdtr(1, 2, x) array([0.4472136 , 0.70710678, 0.77459667])
Построить график функции для нескольких наборов параметров.
>>> import matplotlib.pyplot as plt >>> dfn_parameters = [1, 5, 10, 50] >>> dfd_parameters = [1, 1, 2, 3] >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot'] >>> parameters_list = list(zip(dfn_parameters, dfd_parameters, ... linestyles)) >>> x = np.linspace(0, 30, 1000) >>> fig, ax = plt.subplots() >>> for parameter_set in parameters_list: ... dfn, dfd, style = parameter_set ... fdtr_vals = fdtr(dfn, dfd, x) ... ax.plot(x, fdtr_vals, label=rf"$d_n={dfn},\, d_d={dfd}$", ... ls=style) >>> ax.legend() >>> ax.set_xlabel("$x$") >>> ax.set_title("F distribution cumulative distribution function") >>> plt.show()
F-распределение также доступно как
scipy.stats.f. Использованиеfdtrнапрямую может быть намного быстрее, чем вызовcdfметодscipy.stats.f, особенно для небольших массивов или отдельных значений. Для получения одинаковых результатов необходимо использовать следующую параметризацию:stats.f(dfn, dfd).cdf(x)=fdtr(dfn, dfd, x).>>> from scipy.stats import f >>> dfn, dfd = 1, 2 >>> x = 1 >>> fdtr_res = fdtr(dfn, dfd, x) # this will often be faster than below >>> f_dist_res = f(dfn, dfd).cdf(x) >>> fdtr_res == f_dist_res # test that results are equal True