原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.standard_t.html
校对:(虚位以待)
numpy.random.
standard_t
(df, size=None)从具有df自由度的标准学生t分布绘制样本。
双曲线分布的特殊情况。随着df变大,结果类似于标准正态分布(standard_normal
)。
参数: | df:int
size:int或tuple的整数,可选
|
---|---|
返回: | samples:ndarray或scalar
|
笔记
t分布的概率密度函数为
t检验基于数据来自正态分布的假设。t检验提供了一种方法来测试样本平均值(即从数据计算的平均值)是否是真实平均值的良好估计。
t分布的推导最初于1908年由William Gisset在都柏林的吉尼斯啤酒厂工作时发表。由于专有问题,他不得不用假名发布,所以他使用学生的名字。
参考文献
[R267] | (1,2) Dalgaard,Peter,“Introductory Statistics With R”,Springer, |
[R268] | 维基百科,“学生t分布”http://en.wikipedia.org/wiki/Student's_t-distribution |
例子
从Dalgaard第83页[R267],假设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%的真实的概率。