mars.tensor.random.standard_t#
- mars.tensor.random.standard_t(df, size=None, chunk_size=None, gpu=None, dtype=None)[来源]#
从标准的学生t分布中抽取样本,具有 df 自由度。
双曲分布的一个特殊情况。当 df 变大时,结果类似于标准正态分布 (standard_normal)。
- Parameters
df (float 或 类似数组 的 浮点数) – 自由度,应该 > 0.
size (int 或 tuple 的 ints, 可选) – 输出形状。如果给定的形状是,例如,
(m, n, k),则m * n * k将抽取样本。如果 size 是None(默认), 如果df是一个标量,则返回单个值。否则,mt.array(df).size将抽取样本。chunk_size (int 或 tuple 的 int 或 tuple 的 ints, 可选) – 每个维度上所需的块大小
gpu (bool, 可选) – 如果为True,则在GPU上分配张量,默认为False
dtype (数据类型, 可选) – 返回的张量的数据类型。
- Returns
out – 从参数化的标准Student's t分布中抽取的样本。
- Return type
张量或标量
备注
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分布的推导首次发表于1908年,作者是威廉·戈塞特,他在都柏林的健力士啤酒厂工作。由于专利问题,他不得不以笔名发表,因此他使用了“学生”这个名字。
参考文献
- 1
Dalgaard, Peter, “使用R的入门统计”, Springer, 2002.
- 2
维基百科,“学生的t分布” http://en.wikipedia.org/wiki/Student’s_t-distribution
示例
来自Dalgaard第83页 1,假设11名女性的每日能量摄入为Kj:
>>> import mars.tensor as mt
>>> intake = mt.array([5260., 5470, 5640, 6180, 6390, 6515, 6805, 7515, \ ... 7515, 8230, 8770])
他们的能量摄入是否系统性地偏离推荐值7725 kJ?
我们有10个自由度,那么样本均值在推荐值的95%范围内吗?
>>> s = mt.random.standard_t(10, size=100000) >>> mt.mean(intake).execute() 6753.636363636364 >>> intake.std(ddof=1).execute() 1142.1232221373727
计算t统计量,将ddof参数设置为无偏值,以便标准差的除数为自由度,N-1。
>>> t = (mt.mean(intake)-7725)/(intake.std(ddof=1)/mt.sqrt(len(intake))) >>> import matplotlib.pyplot as plt >>> h = plt.hist(s.execute(), bins=100, normed=True)
对于单侧t检验,t统计量在分布中出现得有多远?
>>> (mt.sum(s<t) / float(len(s))).execute() 0.0090699999999999999 #random
所以 p 值大约为 0.009,这表明原假设有大约 99% 的概率为真。