在python中编写置换测试的错误在哪里?

2024-05-15 02:38:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python3.4.1并尝试用itertools重建置换测试。

here上找到的流行代码是:

from itertools import combinations as comb

def permutationTest(a, b):
    ab = a + b
    Tobs = sum(a)
    under = 0
    for count, perm in enumerate(comb(ab, len(a)), 1):
        if sum(perm) <= Tobs:
            under += 1
    return under * 100. / count

treatmentGroup = [9.1, 10.3, 11.0, 11.5, 11.9]
controlGroup   = [8.1, 8.4, 9.2, 9.4]
under = permutationTest(treatmentGroup, controlGroup)

averageTreatment = sum(treatmentGroup) / float(len(treatmentGroup))
averageControl = sum(controlGroup) / float(len(controlGroup))
print("under=%.2f%%, over=%.2f%%" % (under, 100. - under))
print ('The average of threatment group is', averageTreatment)
print ('The average of control group is', averageControl)

如你所见,这两个组(治疗组和对照组)和往常一样被定义。我还举了一个例子,从我在here找到的一所大学。我现在的问题是:正如你所见,结果是不同的。

有人知道错误在哪里吗?(我猜是在Python脚本中…)

谢谢你的建议!


Tags: lenhereabcountsumprintitertoolsunder

热门问题