p값 혹은 유의확률에 대한 흔한 오개념들

p값 혹은 유의확률에 대한 흔한 오개념들


🚧 이 포스트는 아직 이관 작업이 완료되지 않았습니다 🚧

요약 : p-value가 아주 작다는 것은 그만큼 드문 일이라는 뜻으로, 단순한 우연으론 보기 어려우며 대립가설을 기각하기 어려움을 의미한다.

가설검정에서 검정통계량이 귀무가설을 기각하도록 나타날 확률로써 귀무가설을 기각하게 되는 최소의 유의수준을 유의확률Significance Probability 혹은 p값p-value이라 한다.

[1]** p값은 확률, 즉 $0 \le p \le 1$ 이다.

*상자 안에 적힌 것은 오개념을 말하는 게 아니다.솔직히 정의는 읽을수록 헷갈리기만 하니까 개념적으로 이해하고 번호가 매겨진 노트들을 꼼꼼히 읽어 숙지하도록 하자. 열심히 공부해도 귀무냐 대립이냐로 흔들면 누구나 흔들릴 정도로 헷갈리기 때문에 개념을 제대로 받아들이는 게 답이다. 유의확률을 제대로 이해하지 못하고 기초가 안 되면 통계학을 정상적인 시간 내에 공부하는 것은 거의 불가능하다.p값은 쉽게 말해 ‘검정통계량이 그렇게 나올 확률’을 말한다. 이 확률이 크면 클수록 ‘귀무가설이 사실이라면 흔히 일어나는 일’이고, 귀무가설을 기각할 근거가 부족해 귀무가설을 채택되는 것이다. 야매로 설명하자면 p값은 귀무가설이 유지될 가능성 혹은 귀무가설이 맞다는 증거가 얼마나 믿을만한지를 나타내는 수치다.

[1]** 을 이해하지 못하는 경우는 십중팔구 p값의 정의를 이해하지 못하고 다른 과학계에서의 어떤 계수처럼 알고 있다. p값은 결국 가설검정이라는 것도 절대적인 것은 아니므로, 확률적으로 얼마나 믿을만한지를 말하기 위해 도입된 것이다.

[2]** 에 대한 가장 흔한 오개념 중 하나는 p값이 적을수록 더 강하게 귀무가설을 기각한다고 하는 믿음이다. 물론 p값이 더 작으면 더 작은 유의수준에 대해서도 귀무가설을 기각할 수 있는 것은 사실이지만, 그 ‘정도’는 관계 없다. $0.001$ 이든 $10^{-8}$ 이든 아주 작은 양수 $\varepsilon >0$ 만큼이든 유의수준보다만 작으면 다 똑같은 기각이다.

[3]**의 경우엔 평상시에 공부를 안 하다가 급히 벼락치기를 하는 학생들이 가장 궁금해 하지만 그 답은 없다. 무엇이 좋냐 나쁘냐는 각자가 결과로 판단할 뿐 데이터를 다루는 사람은 그런 판단을 할 필요도 없고 해서도 안 된다.

[4]**와 **[5]**는 적을까 말까 고민하다가 정말 급한 사람이 있을까 싶어서 적었다. 시간이 충분하다면 깊게 생각하고 통계량들이 무슨 의미일까 알고 결정하도록 하자.유의확률이라는 개념을 이해하고 나면 귀무가설과 대립가설이 왜 그렇게 제멋대로 정해져있는지 알 수 있다. 누군가 악의적으로 헷갈리라고 그렇게 한 것이 아니라, 검정통계량이 어떤 분포를 따르는가에 따라 달려 있는 것이다.

예를 들어 t검정 혹은 z검정의 검정통계량은 가운데보단 양쪽꼬리로 갈수록 일어나기 힘들기 때문에 절댓값이 크면 기각된다. 적합도검정에서 검정통계량은 카이제곱분포를 따르고, $0$ 에 가까울수록 잘 적합됐다는 의미이므로 값이 크면 기각된다.

위의 두 예시에서 딱히 어떤 것을 귀무가설이라고 하지도 않았는데 뭐가 기각됐는지 느낌이 왔다면 p값을 이해했다고 봐도 좋다. 적어도 가설검정에서 귀무가설과 대립가설은 이렇듯 검정통계량의 분포에 따라 결정된다.기각역을 정할 땐 기각역을 최대로 한다는 원칙 하에서 정해지므로 이 ‘일어나기 힘든 일’이라는 설명이 말이 된다. 기본적으로 주어진 유의수준에서 기각역을 어떻게 정하는지를 상상해 보면 납득이 될 것이다.

7.png

위의 기각역들은 모두 분포함수 아래의 넓이가 같지만 $x$ 축 상에서의 길이는 판이하게 다름을 알 수 있다. 양쪽꼬리검정의 기각역으로 셋 중에 하나를 상식선에서 고르라고 한다면 누구나 첫번째를 고를 것이다.

아래는 위 그림을 그리기 위한 코드다.

win.graph(9,3)
 
par(mfrow=c(1,3))
plot(0,0,type='n',xlim=c(-4,4),ylim=c(-0.08,0.4),xlab=NA,ylab=NA)
 
polygon(c(seq(qt(0.975,14),5,0.01),qt(0.975,14)),
        c(dt(seq(qt(0.975,14),5,0.01),df=14),0),
        col='yellow',lty=0)
polygon(c(seq(-5,qt(0.025,14),0.01),qt(0.025,14)),
        c(dt(seq(-5,qt(0.025,14),0.01),df=14),0),
        col='yellow',lty=0)
abline(h=0)
lines(seq(-5,5,0.01),dt(seq(-5,5,0.01),df=14))
 
 
plot(0,0,type='n',xlim=c(-4,4),ylim=c(-0.08,0.4),xlab=NA,ylab=NA)
 
polygon(c(seq(qt(0.95,14),5,0.01),qt(0.95,14)),
        c(dt(seq(qt(0.95,14),5,0.01),df=14),0),
        col='yellow',lty=0)
abline(h=0)
lines(seq(-5,5,0.01),dt(seq(-5,5,0.01),df=14))
 
 
plot(0,0,type='n',xlim=c(-4,4),ylim=c(-0.08,0.4),xlab=NA,ylab=NA)
 
x<-c(seq(qt(0.50,14),qt(0.55,14),0.01))
y<-c(dt(seq(qt(0.50,14),qt(0.55,14),0.01),df=14))
x<-c(x[1],x,x[length(x)])
y<-c(0,y,0)
polygon(x,
        y,
        col='yellow',lty=0)
abline(h=0)
lines(seq(-5,5,0.01),dt(seq(-5,5,0.01),df=14))
댓글