如何模拟sc​​ipy中的双样本t检验

时间:2013-07-19 18:33:35

标签: python math statistics scipy excel-formula

我正在尝试在Python中模拟MS Excel的t-probe函数。我需要这样做,因为我必须自动执行以前在Excel中完成的一些计算。这是我的测试程序:

import scipy.stats
a = [5, 0.9,  -0.4, -0.9, 0.5, 0.8, 0.2, 0.2, 0, -0.8]
b = [1.1, 0.9, -0.5, -0.7, 0.6, 0.7, 0.3, 0.1, -0.1, -0.7]

print scipy.stats.ttest_ind(a,b, equal_var=True)

结果如下:

(array(0.6661542796363409), 0.51376033318001801)

但是,Excel为同一输入提供此值:0.35844407

我注意到他们使用了tail = 2参数(参见http://office.microsoft.com/en-us/excel-help/ttest-HP005209325.aspx)。不幸的是,我不知道如何用scipy计算双尾t检验。 (事实上​​我不知道它是什么。)

另一个非常奇怪的事情是,在scipy中,当我改变样本的顺序时,我会得到一个明显不同的结果。例如。如果我将-0.7移动到b的头部,那么我得到0.51376033318001824而不是0.51376033318001801。没有太大的区别,但仍然。

对于Excel来说,这是一个全新的故事 - 看起来双尾t检验在样本顺序不同时会产生明显不同的结果。

问题是:如何在scipy中模拟Excel的双尾t检验版本?

1 个答案:

答案 0 :(得分:5)

看起来Excel正在计算ttest_rel

In [15]: import scipy.stats as stats

In [20]: stats.ttest_rel(a, b)
Out[20]: (array(0.9677712267394081), 0.35844406902161985)

stats.ttest_rela相关时使用bThe docs说:

  

[ttest_rel]的使用示例是同一组学生的分数   不同的考试,或从同一单位重复抽样。

ab独立时使用stats.ttest_ind

  

如果我们观察到两个独立的样本,我们可以使用[ttest_ind]   相同或不同的人口,例如考试成绩的男孩和女孩或   两个民族。