본문 바로가기
컴퓨터/수학이랑

엑셀에서 z-score로 p-value 계산하기

by adnoctum 2010. 10. 12.
   데이터를 정규화한 값인 z-score 를 이용하여 p-value를 계산해 보자. 이 때, erf 함수를 사용하게 되는데 ms-excel 에서 erf 함수를 제공해 준다, 따라서 이 값을 엑셀에서 계산해 보자. 

   많은 경우 모분포의 정규분포를 가정하게 된다. 그런데 모분포가 정규분포가 아닐지라도 그러한 모분포에서 추출한 평균의 분포는 중심극한정리에 따라서 정규분포를 따르게 된다. z-score는 그러한 정규분포에 사용될 수 있게끔 변수를 변환한 것으로 생각할 수 있는데, 다음과 같이 계산한다.



즉, 데이터의 값에서 평균을 뺀 이후, 그것을 표준편차로 나누어 준다. 만약 X 가 이항분포 b(n, p) 를 따른다면, z는 다음과 같이 계산할 수 있다.


이 때 저렇게 계산한 z 역시 표준정규분포 N(0,1) 을 따른다.

위와 같이 계산된 z-score에 대하여 엑셀에서 p-value를 구하고자 할 경우에는 다음의 수식을 사용한다.

=1-ERF(ABS(z-score)/SQRT(2))

위에서 z-score는 각각의 경우에 따라 적당한 것을 계산하여 사용한다. 또한 위의 경우는 귀무가설이 표준정규분포를 가정할 때만 사용할 수 있는 것이다. 또한 위 값은 양측검정을 가정하여 계산되었으며, 단측검정일 경우에는 아래의 원리에 따라 위 식을 살짝 바꾸어서 사용해야 한다.


위의 식이 나오는 원리를 살펴 보자. p-value에 대한 글에서 설명했듯이 p-value는 관측된 값보다 큰 값이 관측될 확률인데, 그림으로 보자면 다음과 같다.



즉, 관측된 x 값이 위와 같을 때 그 값보다 더 큰 값이 관측될 '확률'(적분된 면적)이 p-value 이다. 만약 양측검정일 경우에는 저 면적의 두 배를 해야 p-value 가 계산된다. 따라서 p-value를 계산하기 위해서는 표준정규분포(standard normal distribution)의 확률밀도함수(probability density function, pdf)에 대하여, 관측된 x 값에 대한 절대값 이상부터 무한대까지를 적분한 값(위에서 빨간 면적)의 두 배를 하면 p-value가 된다.

정규분포의 pdf는 다음과 같이 생겼다.


위에서 표준정규분포는 평균(u)가 0, 표준편차(sigma)가 1 이므로 위의 식에 대입한 후, 음의 무한대에서부터 x까지의 pdf를 적분하는 함수인 누적분포함수(cumulative density function, cdf)를 계산해 보면 다음과 같다.


이 때, 위 수식에 나온 error function[각주:1] 은 다음과 같이 정의된다.


엑셀에서 바로 저 erf[각주:2] 를 제공해 주기 때문에 p-value를 계산할 수 있는데, 이제 cdf 와 p-value의 관계를 살펴 보자. cdf는 음의 무한대에서부터 x 까지를 적분한 값이다. erf는 0부터 x 까지의 적분된 값이다.

   이 부분은 양측검정을 기준으로 하자. x값이 관측된 값이라 하자. 이 때 p-value는 x의 절대값 |x| 에서부터 무한대까지를 적분한 값의 2배가 p-value가 될 것이다. 그렇다면 음의 무한대에서부터 x까지를 적분하는 cdf를 이용하여 p-value는 다음과 같이 표현된다.



자, 우리가 사용할 최종식이 나왔다. 위의 원리에 따라 만약 단측검정이었다면, 0.5 - 0.5*erf(|z|/sqrt(2)) 와 같은 식으로 계산을 해야 한다는 것을 쉽게 알 수 있다.

다음 번에는 t-test 에서의 p-value를 계산해 보자 (엑셀에는 여러 수학함수가 제공되기 때문에 많은 경우의 p-value를 직접 계산할 수 있다).


(이 글은 카테고리가 좀 애매하군...)
  1. erf는 참고로 closed-form 으로 표현되지 않아서 수치해석학적으로 구해야 한다. [본문으로]
  2. 몰랐는데, math.h 에 erf랑 erfc 함수가 제공된다. [본문으로]