요즘 통계학 공부를 좀 하고 있다는 이야기를 했다.
하다보니 역시 확률 이야기들이 많이 나온다.
우리가 통계툴을 보다 보면 p-value라는 말이 많이 나온다. 대충 숫자가 크면 가설을 지지하는걸로 알고 있고, 작으면 가설을 부정하는 결과를 가져올 수 있다는것만 어렴풋이 알고 있었다.
물론 이정도만 알고 있어서 큰 문제는 되지 않지만 공부하는 목적이 직접 이런 테스트 검정을 해보는게 목적이니 더 살펴 봤다.
우리가 어떤 테스트를 할때 가정이라는 것을 하고 이 가설에 대한 검정을 실시한다. 실험을 하기 위한 가설이 되는 것이 귀무가설(null hypothesis)라고 하고 귀무가설에 반대되는 가설을 설정하는데 그 가설이 대립가설(alternative hypothesis)라고 한다.
이때 이 귀무가설에 대한 검정을 p-value approach를 이용해서 한다. 물론 거의 비슷한 개념으로 critical value approach라는 것도 있지만 대동소이하고 거의 모든 실무에서 p-value를 쓰기 때문에 생략한다.
우선 정의를 보자면
p-value자세하게 말하면 귀무가설을 지지한다는 가정을 했을때 표본의 대표값이 검정통계량보다 더 나쁘게 나올 확률을 의미한다.
p-value는 표본이 귀무가설을 지지하는지(혹은 지지하지 않는지)를 측정하기 위해서 검정통계량(test statistics)을 이용하여 계산한 확률
이는 종종 유의수준(level of significance)하고 같이 나오게 되는데 위 그래프에서 a의 값이 유의수준으로 정한 값이 된다. 이 유의수준으라는것은 귀무가설이 진실일때 가설을 기각할 확률이다.
따라서 표본 대표값인 검정통계량을 계산한 확률인 p-value가 유의수준 보다 높게 나올때 그 귀무가설은 기각 될 수 없고, 작게 나올때는 기각될 수 있다.
기각할 확률인 실제 관측치인 p-value보다 왜 적게 나올때 기각이 되는지 직관적으로 이해가 가기 힘들지만 같은 정규분포상에서 확률을 논할때 p-value의 확률이 높을수록 귀무가설을 기반으로 잡은 값에 가까워 진다는것을 알 수 있다. (개인적으로는 이런 직관적인 접근 방법인 critical value approach를 좋아한다.)
따라서 위 그림에서 나온 p-value는 a값의 비교에 근거해서 귀무가설이 기각되어진다.
예를들어 블로그 랭킹에 rss 구독자수를 넣는게 성능이 좋아진다는 가정에 따라
아래와 같은 귀무 가설을 지정했다.
H0 : u <= 80
Ha : u > 80
80은 rss 구독자수를 넣기 이전의 랭킹 성능 지수다.
여기서 귀무 가설인 H0의 기각이 rss 구독자수를 넣는게 성능을 높인다는 연구를 지지하게 된다.
여기서 귀무가설에만 등호 표시가 반드시 들어가게 되어 있는데 왜냐면 80값만 기각이 되면 80 이하의 값 모든게 기각 될 수 있기 때문이다.
따라서 만일 rss 구독자 실험 결과의 평균값이 81.3 이 나왔을때 이 값이 과연 귀무 가설을 기각 할 만큼의 값인지가 궁금하다. 만일 기각이 된다면 성능 향상이라고 봐도 될 것이다.
여기서 유의 수준을 정하는게 필요한데 검색 서비스는 포털의 수입에 큰 영향을 끼치기 때문에 0.01의 비교적 엄격한 유의수준으로 정하도록 하겠다.
그리고 50번의 테스트를 시행했다고 하고, 이전에 시행했던 검정 자료의 표준편차는 5이다.
검정 통계량 z = (81.3- 80)/(5/SQRT(50))
p-value = 1 – P( 랭킹 < z)
원래 P(랭킹 > z)를 바로 구해야 겠지만 정규분포함수를 이용해서 위와 같이 구할 수 있다.
엑셀에서는 간단하게
p-value = 1 – NORMSDIST(z) = 0.032996
로 구할 수 있다.
결과로 나온 p-value는 우리가 정한 유의수준인 0.01의 값보다 크기 때문에 이 귀무 가설은 기각 될 수 없고 rss 구독자수가 성능향상에 영향을 미친다고 보기 힘들다는 결론을 이끌어 낼 수 있다.
위의 예는 내가 가상으로 생각해낸 예이지만, 충분히 위와 같은 테스트가 있을수 있겠다. 따라서 p-value의 의미를 이해하는 수준보다 직접 테스트를 수행해 볼 수 있는 그런 능력이 필요할 거라 생각한다.
p-value ‘ex)랭킹 가설검정’ by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.