41

我有一些 t 值和自由度,并想从中找到 p 值(它是双尾的)。在现实世界中,我会使用统计教科书背面的 t 检验表;我如何在 Python 中做同样的事情?

例如

t-lookup(5, 7) = 0.00245或类似的东西。

我知道在 SciPy 中是否有我可以做的数组scipy.stats.ttest_ind,但我没有。我只有 t 统计量和自由度。

4

2 回答 2

48

来自 http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html

作为一个练习,我们也可以直接计算我们的 ttest 而不使用提供的函数,它应该给我们相同的答案,所以它:

tt = (sm-m)/np.sqrt(sv/float(n))  # t-statistic for mean
pval = stats.t.sf(np.abs(tt), n-1)*2  # two-sided pvalue = Prob(abs(t)>tt)
print 't-statistic = %6.3f pvalue = %6.4f' % (tt, pval)
t-statistic =  0.391 pvalue = 0.6955
于 2013-07-11T21:57:03.047 回答
2

我们也可以使用该t.cdf()函数进行计算:

from scipy.stats import t
t_stat = 2.25
dof = 15
# p-value for 2-sided test
2*(1 - t.cdf(abs(t_stat), dof))
# 0.03988800677091664
2*(t.cdf(-abs(t_stat), dof))
# 0.03988800677091648

下图显示了 5% 显着性水平的临界区域在 2 边 t 检验中的样子。对于上面的例子,我们可以看到可以拒绝原假设。

在此处输入图像描述

于 2021-09-11T21:55:38.410 回答