3

我正在尝试在 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 检验版本?

4

1 回答 1

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_relwhenabarerelated。文档说:

使用 [of ttest_rel] 的示例是同一组学生在不同考试中的分数,或者来自相同单元的重复抽样。

当和独立时使用stats.ttest_indab

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

于 2013-07-19T18:45:38.683 回答