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.f

F-распределение

Примечания

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

\[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()
../../_images/scipy-special-fdtr-1_00_00.png

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