numpy.random.RandomState.standard_t

RandomState.standard_t(df, size=None)

从具有df自由度的标准学生t分布绘制样本。

双曲线分布的特殊情况。随着df变大,结果类似于标准正态分布(standard_normal)。

参数:

df:int

自由度,应> 0。

size:int或tuple的整数,可选

输出形状。如果给定形状是例如(m, n, k),则 m * n * k默认值为None,在这种情况下返回单个值。

返回:

samples:ndarray或scalar

绘制样品。

笔记

t分布的概率密度函数为

t检验基于数据来自正态分布的假设。t检验提供了一种方法来测试样本平均值(即从数据计算的平均值)是否是真实平均值的良好估计。

t分布的推导最初于1908年由William Gisset在都柏林的吉尼斯啤酒厂工作时发表。由于专有问题,他不得不用假名发布,所以他使用学生的名字。

参考文献

[R196]12 Dalgaard,Peter,“Introductory Statistics With R”,Springer,
[R197]维基百科,“学生t分布”http://en.wikipedia.org/wiki/Student's_t-distribution

例子

从Dalgaard第83页[R196],假设Kj中11名妇女的日能量摄入量为:

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

他们的能量摄入是否偏离建议的7725 kJ的值?

我们有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%的真实的概率。

源代码pngpdf

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