nag*_*lzs 2 python math statistics excel-formula scipy
我试图在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)
Run Code Online (Sandbox Code Playgroud)
这是结果:
(array(0.6661542796363409), 0.51376033318001801)
Run Code Online (Sandbox Code Playgroud)
但是,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检验版本?
它看起来像是Excel在计算ttest_rel:
In [15]: import scipy.stats as stats
In [20]: stats.ttest_rel(a, b)
Out[20]: (array(0.9677712267394081), 0.35844406902161985)
Run Code Online (Sandbox Code Playgroud)
使用stats.ttest_rel何时a和b相关.文档说:
[ttest_rel]的使用示例是不同考试中同一组学生的分数,或来自相同单元的重复抽样.
使用stats.ttest_ind时a和b独立.
如果我们观察来自相同或不同人群的两个独立样本,例如男孩和女孩或两个种族的考试分数,我们可以使用[ttest_ind].