본문 바로가기

카테고리 없음

Python으로 왜도 구하기(Pandas vs Scipy 차이)

 

Python으로 왜도 첨도를 구하는 방법에 많이 사용하는 방법에는 2가지 정도가 있고 그 방법은 아래와 같다.

  1. Pandas skew 함수 사용하기
  2. scipy 라이브러리의 skew 함수 사용하기

Pandas skew 함수와 Scipy skew 함수의 차이

 

위의 그림과 같이 데이터가 좌우 균형을 맞춘 종모양의 형상을 하고있을때 왜도의 값은 0으로 나온다.(정규 분포)

이는 왜도란 값 자체가 데이터가 어느 한쪽 방향으로 왼쪽으로 혹은 오른쪽으로 편향이 되어있는를 알기 위해 나타내는 값이기 때문이고 왜도의 값이 음수이면 왼쪽꼬리 긴 분포, 양수이면 오른쪽꼬리 긴 분포라고 얘기 한다.

또는 Positive, Negitive 라고 하는데 자세한 이유는 모르지만 왜도의 값이 양수이면 Positive, 음수이면 Negative로 생각하고 있다.

Posive = 오른꼬리 긴 분포 , Negative = 왼쪽 꼬리 긴 분포

 

위의 값에서 알 수 있듯이 scipy와 pandas의 skew 함수는 좌우 대칭인 정규 분포일때는 왜도의 값이 0으로 동일하지만 오른쪽 꼬리 분포나 왼쪽 꼬리 분포와 같이 자료가 좌우 대칭이 아니게 되면 반환하는 값이 다르게 된다.

그 이유는 Pandas의 함수들은 기본적으로 표본 계산에 중정을 두고 있기 때문인데

이는 왜도의 공식에 사용되는 표준편차 S와 상관이 있다.

위의 표처럼 왜도를 구하는 공식의 분모에 해당하는 표준편차가 모표준편차를 사용하는지 표본 표준편차를 사용 하는지의 차이인데 scipy skew에서는 이를 bias = True, False로 조절이 가능하다.

안타깝게도 Pandas 에서는 표본의 표준편차로만 계산이 가능하다.

위와 같이 bias의 값을 False 로 하게되면 Pandas와 동일하게 표본의 표준 편차로 계산하게된다.