Spec-Zone.ru › NumPy 1.15

numpy.random.RandomState.standard_t

RandomState.standard_t(df, size=None)

Выборка значений из стандартного распределения Стьюдента с df степенями свободы.

Особый случай гиперболического распределения. По мере увеличения df, результат приближается к стандартному нормальному распределению (standard_normal).

Параметры:
df : float or array_like of floats

Степени свободы, должны быть > 0.

size : int or tuple of ints, optional

Форма выходных данных. Если заданная форма, например, (m, n, k), то генерируются m * n * k значения. Если размер равен None (по умолчанию), возвращается одно значение, если df является скаляром. В противном случае, генерируются np.array(df).size значений.

Возвращает:
out : ndarray or scalar

Выбранные значения из параметризованного стандартного распределения Стьюдента.

Примечания

Функция плотности вероятности для распределения Стьюдента:

P(x, df) = \frac{\Gamma(\frac{df+1}{2})}{\sqrt{\pi df}
\Gamma(\frac{df}{2})}\Bigl( 1+\frac{x^2}{df} \Bigr)^{-(df+1)/2}

Критерий Стьюдента основан на предположении, что данные взяты из нормального распределения. Критерий Стьюдента позволяет проверить, является ли выборочное среднее (среднее, вычисленное по данным) хорошим приближением истинного среднего.

Вычисление распределения Стьюдента было впервые опубликовано в 1908 году Уильямом Госсетом, работавшим в пивоваренной компании Гиннесс в Дублине. Из-за вопросов интеллектуальной собственности он был вынужден публиковаться под псевдонимом, поэтому использовал имя Стьюдент.

Ссылки

[1] (1, 2) Dalgaard, Peter, “Вводная статистика с R”, Springer, 2002.
[2] Википедия, “Распределение Стьюдента” http://en.wikipedia.org/wiki/Student’s_t-distribution

Примеры

Из книги Dalgaard на странице 83 [1], предположим, что суточная энергетическая ценность потребления для 11 женщин в КДж:

>>> intake = np.array([5260., 5470, 5640, 6180, 6390, 6515, 6805, 7515, \
...                    7515, 8230, 8770])

Отклоняются ли их энергетические потребности систематически от рекомендуемой величины 7725 кДж?

У нас 10 степеней свободы, находится ли выборочное среднее внутри 95% от рекомендуемой величины?

>>> s = np.random.standard_t(10, size=100000)
>>> np.mean(intake)
6753.636363636364
>>> intake.std(ddof=1)
1142.1232221373727

Вычислите t-статистику, установив параметр ddof в значение для несмещенной оценки, чтобы знаменатель в стандартном отклонении был степенями свободы, N-1.

>>> t = (np.mean(intake)-7725)/(intake.std(ddof=1)/np.sqrt(len(intake)))
>>> import matplotlib.pyplot as plt
>>> h = plt.hist(s, bins=100, density=True)

При одностороннем тесте, насколько далеко в распределении находится t-статистика?

>>> np.sum(s<t) / float(len(s))
0.0090699999999999999  #random

Таким образом, p-значение составляет около 0,009, что говорит о том, что нулевая гипотеза имеет вероятность около 99% быть истинной.

../../_images/numpy-random-RandomState-standard_t-1.png

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.random.RandomState.standard_t.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API