我有两组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的标准功能是否可以实现?或者我必须遍历每个 数组的元素?
答案 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.mean
,numpy.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检验。