【发布时间】:2014-10-08 15:02:58
【问题描述】:
我正在使用 Python 3.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 脚本中......)
感谢您的建议!
【问题讨论】:
-
@xfer 你能告诉我真正的差异在哪里吗?显示你想要的输出。
-
据我所见,Python 打印输出低于=98.41%,高于=1.59%。根据我还链接的文件,它应该是 2.38%。
标签: python python-3.x statistics permutation itertools