当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy random.mtrand.RandomState.standard_t用法及代码示例


用法:

RandomState.standard_t(df, size=None)

从df自由度的标准Student t分布中抽取样本。

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

参数:
df float 或 array_like of floats

自由度必须> 0。

size int 或 tuple of ints, 可选参数

输出形状。如果给定的形状是(m, n, k), 然后m * n * k抽取样品。如果尺寸是None(默认),如果返回一个值df是标量。除此以外,np.array(df).size抽取样品。

返回值:
out ndarray或标量

从参数化的标准学生t分布中抽取样本。

注意:

t分布的概率密度函数为

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}

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

t-distribution的派生词由William Gosset于1908年首次发布,当时他在都柏林的吉尼斯啤酒厂工作。由于专有问题,他不得不以化名出版,因此他使用了“学生”这个名字。

参考文献:

[1]彼得·达加德(Dalgaard),“带R的入门统计”,施普林格,2002年。
[2]维基百科,“学生的t-distribution”https://en.wikipedia.org/wiki/Student’s_t-distribution

例子:

从达加德页面83[1],假设11位女性的每日能量摄入量以千焦耳(kJ)为单位:

>>> 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, density=True)

对于one-sided t-test,t统计量在分布中显示多远?

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

因此p-value约为0.009,这表示原假设的概率约为99%。

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

注:本文由纯净天空筛选整理自 numpy.random.mtrand.RandomState.standard_t。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。