numpy.random.standard_t¶
-
numpy.random.
standard_t
(df, size=None)¶ 从标准学生t分布中抽取样本 df 自由度。
双曲分布的特例。AS df 变大,结果类似于标准正态分布。 (
standard_normal
)参数: - df : 浮点数或类似浮点数的数组
自由度应大于0。
- size : int或int的元组,可选
输出形状。如果给定的形状是,例如,
(m, n, k)
然后m * n * k
取样。如果尺寸是None
(默认),如果df
是标量。否则,np.array(df).size
取样。
返回: - out : ndarray或scalar
从参数化标准学生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分布的起源于1908年由威廉·戈塞特在都柏林吉尼斯啤酒厂工作时首次出版。由于专利问题,他不得不用笔名发表文章,所以他用了学生这个名字。
工具书类
[1] (1, 2) Dalgaard,Peter,“R导论统计”,Springer,2002年。 [2] 维基百科,“学生t-分布”https://en.wikipedia.org/wiki/student's_t-分布 实例
摘自Dalgaard第83页 [1], 假设11名妇女的每日能量摄入量(单位:千焦(kj))为:
>>> intake = np.array([5260., 5470, 5640, 6180, 6390, 6515, 6805, 7515, \ ... 7515, 8230, 8770])
他们的能量摄入是否有系统地偏离推荐值7725千焦?
我们有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)
对于单侧t检验,t统计量在分布中出现的距离有多远?
>>> np.sum(s<t) / float(len(s)) 0.0090699999999999999 #random
所以p值约为0.009,也就是说零假设有99%的概率是真的。