scipy.special.stdtr#
-
scipy.special.stdtr(df, t, выход=None) =
'stdtr'> # Функция распределения Стьюдента t
Возвращает интеграл:
\[\frac{\Gamma((df+1)/2)}{\sqrt{\pi df} \Gamma(df/2)} \int_{-\infty}^t (1+x^2/df)^{-(df+1)/2}\, dx\]- Параметры:
- dfarray_like
Степени свободы
- tarray_like
Верхняя граница интеграла
- выходndarray, необязательно
Необязательный выходной массив для результатов функции
- Возвращает:
- скаляр или ndarray
Значение CDF Стьюдента t при t
Смотрите также
stdtridfобратная функция stdtr относительно df
stdtritобратная функция stdtr относительно t
scipy.stats.tраспределение Стьюдента
Примечания
Распределение Стьюдента также доступно как
scipy.stats.t. Вызовstdtrнапрямую может улучшить производительность по сравнению сcdfметодscipy.stats.t(см. последний пример ниже).stdtrимеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окруженияSCIPY_ARRAY_API=1и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).Библиотека
CPU
GPU
NumPy
✅
н/д
CuPy
н/д
✅
PyTorch
✅
⛔
JAX
✅
✅
Dask
✅
н/д
См. Поддержка стандарта array API для получения дополнительной информации.
Примеры
Вычислить функцию для
df=3вt=1.>>> import numpy as np >>> from scipy.special import stdtr >>> import matplotlib.pyplot as plt >>> stdtr(3, 1) 0.8044988905221148
Постройте график функции для трех различных степеней свободы.
>>> x = np.linspace(-10, 10, 1000) >>> fig, ax = plt.subplots() >>> parameters = [(1, "solid"), (3, "dashed"), (10, "dotted")] >>> for (df, linestyle) in parameters: ... ax.plot(x, stdtr(df, x), ls=linestyle, label=f"$df={df}$") >>> ax.legend() >>> ax.set_title("Student t distribution cumulative distribution function") >>> plt.show()
Функцию можно вычислить для нескольких степеней свободы одновременно, предоставив массив NumPy или список для df:
>>> stdtr([1, 2, 3], 1) array([0.75 , 0.78867513, 0.80449889])
Можно вычислить функцию в нескольких точках для нескольких различных степеней свободы одновременно, предоставив массивы для df и t с формами, совместимыми для трансляции. Вычислить
stdtrв 4 точках для 3 степеней свободы, что приводит к массиву формы 3x4.>>> dfs = np.array([[1], [2], [3]]) >>> t = np.array([2, 4, 6, 8]) >>> dfs.shape, t.shape ((3, 1), (4,))
>>> stdtr(dfs, t) array([[0.85241638, 0.92202087, 0.94743154, 0.96041658], [0.90824829, 0.97140452, 0.98666426, 0.99236596], [0.93033702, 0.98599577, 0.99536364, 0.99796171]])
Распределение t также доступно как
scipy.stats.t. Вызовstdtrнапрямую может быть намного быстрее, чем вызовcdfметодscipy.stats.t. Чтобы получить те же результаты, необходимо использовать следующую параметризацию:scipy.stats.t(df).cdf(x) = stdtr(df, x).>>> from scipy.stats import t >>> df, x = 3, 1 >>> stdtr_result = stdtr(df, x) # this can be faster than below >>> stats_result = t(df).cdf(x) >>> stats_result == stdtr_result # test that results are equal True