비모수 검정 공부를 한창 하다가 statsmodels의 런 테스트 에러를 맞이(?)하였다. 수기로 계산할 수도 있었지만, 시간이 없을 때는 패키지를 활용해야 하기에 함수를 익히고 있는데 UFuncTypeError를 만났다.
UFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int64') with casting rule 'same_kind'
에러 메시지를 보니, 같은 종류의 데이터 타입을 써야 한다는 내용이었다. 내가 비교하려고 하는 두 데이터의 데이터 타입은 동일한데 왜 float, int 타입에 대한 에러 메시지가 뜬 것일까? 아마 알고리즘 상에서 내 데이터와 타입이 맞지 않는 계산 과정이 있는 것 같다고 추측했다.
이번 에러의 해결 방법은 간단했다. 기존에 int 형식으로 되어 있는 데이터들의 타입을 float으로 변환해주는 것이다. 데이터 하나하나를 float으로 바꿔주는 방법도 있겠지만, 아래와 같이 list, map함수를 사용해서 간단하게 float으로 데이터 타입을 변환해주었다.
코드는 data1 = list( map( lambda x: float(x), data1) ) 식으로 해서 data1 객체에 float type 데이터 리스트로 덮어 썼다.
위와 같이 깔끔하게 결과값을 얻을 수 있었다. 그런데 한가지 아쉬운 점은 ties detected 라는 메시지가 계속 떴다. 이 메시지는 왜 뜨는 것일까? 나중에 한번 다시 살펴봐야겠다.
댓글