numpy.random.standard_t¶
-
numpy.random.
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在都柏林的吉尼斯啤酒厂工作时发表。由于专有问题,他不得不用假名发布,所以他使用学生的名字。
参考文献
[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%的真实的概率。