在numpy数组之间进行T检验

时间:2014-10-02 12:16:58

标签: python arrays numpy statistics compare

我有两组numpy数组(A,B),我想要 使用统计t检验比较两组(两个样本 t检验)。结果应该再次是一个相同的数组 尺寸提供例如p值或其他统计数据 索引。

这里有两组我要比较的示例数组:

import numpy as np

A1= numpy.random.normal(1,1,100)
A2= numpy.random.normal(1,1,100)
A3= numpy.random.normal(1,1,100)
A4= numpy.random.normal(1,1,100)
A5= numpy.random.normal(1,1,100)


B1= numpy.random.normal(3,1,100)
B2= numpy.random.normal(3,1,100)
B3= numpy.random.normal(3,1,100)
B4= numpy.random.normal(3,1,100)
B5= numpy.random.normal(3,1,100)

Numpy / Scipy的标准功能是否可以实现?或者我必须遍历每个 数组的元素?

2 个答案:

答案 0 :(得分:1)

由于每组中有五个是i.i.d.,你想比较连接的A = [A1 A2 A3 A4 A5]和B = [B1 B2 B3 B4 B5]。您可以等效生成A = numpy.random.normal(1,1,500)B = numpy.random.normal(3,1,500)

然后计算两者的平均值和偏差(numpy.meannumpy.std),并计算学生t统计量。或者使用scipy.stats.ttest_ind

答案 1 :(得分:0)

我认为我找到了对数组的每个元素进行t检验的正确解决方案:

我涉及在执行t检验之前堆叠数组:

import numpy
from scipy import stats


A1= numpy.random.normal(1,1,10).reshape(5, 2)
A2= numpy.random.normal(1,1,10).reshape(5, 2)
A3= numpy.random.normal(1,1,10).reshape(5, 2)
A4= numpy.random.normal(1,1,10).reshape(5, 2)
A5= numpy.random.normal(1,1,10).reshape(5, 2)
A = numpy.dstack((A1,A2,A3,A4,A5))

B1= numpy.random.normal(3,1,10).reshape(5, 2)
B2= numpy.random.normal(3,1,10).reshape(5, 2)
B3= numpy.random.normal(3,1,10).reshape(5, 2)
B4= numpy.random.normal(3,1,10).reshape(5, 2)
B5= numpy.random.normal(3,1,10).reshape(5, 2)
B = numpy.dstack((B1,B2,B3,B4,B5))

C = scipy.stats.ttest_ind(B,A,2)[1]

还有一个小问题,如何计算,例如该 scipy.stats.mannwhitneyu() - 测试(非正常数据), 无法指定数组维度的地方 t检验。