Spec-Zone.ru › NumPy 1.11

numpy.random.RandomState.standard_t

RandomState.standard_t(df, size=None)

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

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

Параметры:

df : int

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

size : int или кортеж из целых чисел, необязательно

Форма выходных данных. Если заданная форма, например, (m, n, k), то m * n * k выборок генерируются. По умолчанию None, в этом случае возвращается одно значение.

Возвращаемое значение:

samples : ndarray или скаляр

Сгенерированные выборки.

Примечания

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

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 году Уильямом Гиссетом, работавшим в пивоваренной компании «Гинес» в Дублине. По причинам, связанным с правами собственности, он был вынужден публиковаться под псевдонимом, и поэтому использовал имя Стьюдент.

Ссылки

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

Примеры

Из работы Dalgaard на странице 83 [R196], предположим, что ежедневный энергетический прием для 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, normed=True)

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

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

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

(Исходный код, png, pdf)

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

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.random.RandomState.standard_t.html

Spec-Zone.ru

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