2014-10-08 1 views
0

파이썬 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 이상의 대학에서 예를 들었다. 내 문제는 지금 : 알다시피, 결과는 다릅니다.

실수는 어디에 있습니까? (파이썬 스크립트에있는 것 같습니다 ...)

고마워요!

+0

@xfer 당신은 실제로 diffrence가 어디 있는지 말해 줄 수 있습니까? 원하는 출력을 표시하십시오. –

+0

필자가보기에 파이썬 프린트 아웃은 = 98.41 %, over = 1.59 %입니다. 문서에 따르면 나는 또한 그것 2,38 %해야 연결되어 있습니다. –

답변

0

문제는 <=에 있습니다. 링크 한 문서에서 t> = 1.98 일 때 끝까지 추가하므로 값 t < 1.98 또는 sum(perm) < Tobs에 대해서만 아래에 추가해야합니다.