가설검정

연구를 제쳐두고 트위터질했다고 엄청 깨졌지만, 여기 아주 짧게 정리해본다.

0. Disclaimer

통계학도가 아니기때문에, 여기에 정리하는 내용이 맞다고 확실하게 주장하는 것이 아니다. 되도록 간결하게 쓰려고 하다보니 말투가 단도직입적인 것은 양해부탁. 내가 속한 분야를 포함해서, 기본 통계와 관련해서 배운 것이 있는데, 그것과 불일치되는 의견을 접해서 확실하게 해두고 싶었기때문이다.

그 전에 딱 하나만 확실히 하자. 여기에 정리하는 글은 원래 맥락, 김&문 표절논란과는 전혀 관련이 없다. 
그 논란을 통해 아이추판다님이 가설검정과 관련해서 어떤 특정한 주장을 하셨고, 그 주장 자체를 살펴보려고 하는 것 뿐이다.

p.s. : 편의상 "님"을 제외한 경어체는 생략했다.

1. 

http://nullmodel.egloos.com/3825612 결론에 증거를 맞추기

라는 글에서 편의상 #2번 항을 그대로 옮겨온다.


===
deulpul님의 글에서 이 대목은 아주 심각한 문제가 있다.

이 문제를 연구가설로 만드는 방법은 두 가지다. 하나는 '오덕 회원들의 키는 평균보다 작다'라는 것이고, 이것은 문대성의 방법이다. 다른 하나는 '오덕 회원들의 키는 전체 평균(175cm)과 차이가 있다'라는 것이고, 이것은 김백수의 방법이다. 전자는 그 자체로 차이가 의미가 있는지를 밝혀내는 구조로 되어 있으니 넘어가고, 후자를 보자. 

이 경우 영가설(귀무가설)은 '오덕 회원들의 키는 전체 평균과 차이가 없다(오덕 평균 = 175)이다'이고, 연구가설은 '그렇지 않다'이다. 검증을 하면 그 결과를 알 수 있는데, 차이가 있는 것으로 나왔다고 치자. 이게 무슨 말인가? 오덕들은 평균보다 키가 크다는 결론인가? 당연히 오덕 회원들 키는 평균보다 작다는 결론으로 해석하게 된다. 원래의 데이터의 성격이 그렇게 되어 있기 때문이다. 

김백수의 논문도 가설은 '차이가 있나 없나?'라는 모양을 취하고 있지만 그 결과를 해석하는 데 있어 기술 통계량(descriptive statistics)의 경향성에 근거하여 '증가하였다' '향상되었다' '높은 것으로 나타났다'라는 표현을 쓰고 있다(아래 그림). 이 점을 밝혀내는 것이 자기 논문의 원래 목표인 것이므로 당연한 일이다. 연구 논문에서 분석 결과 차이가 있다고만 보고하고 그 내용을 해석하지 않는 것은, 똥 누러 가서 오줌만 싸고 있는 형국인 셈이다.


이렇게 하면 표절이 문제가 아니라 연구 조작이다. 연구 조작까지는 아니라도 부정직한 짓이다. 아니 결국 연구 조작이군. 많은 연구자들이 간과하는 부분인데 이렇게 하면 절대로 안된다.

"차이가 없다"는 양방검정(two-tailed test)의 귀무가설이다. 이것을 기각했을 때 우리가 얻을 수 있는 결론은 "차이가 있다"라는 것 뿐이고 그 이상으로 해석해서는 안된다. 만약 "더 크다"라는 결론을 원했다면 처음부터 단방검정(one-tailed test)을 해야 한다. 분석은 양방검정으로 하고, 해석은 단방검정으로 한다면 연구자는 가설을 데이터로 검정하는 것이 아니라, 데이터에 가설을 맞추는 것이다. 양방검정과 단방검정을 괜히 나눠놓은 것이 아니다.

===

여기서 아이추판다님은 들풀님의 사고방식을 "연구 조작"이라고 단언했다. 절대로 해서는 안 되는 것이라고 했고.

무엇을 절대로 해서는 안 된다는 것인가?

양방 검정을 통해 귀무 가설을 기각했을 때 얻은 결론이 "차이가 있다"는 것일뿐, 어느 쪽으로 차이가 있는지는 가설 검정으로 확인하지 않았기때문에, 해석상에서도 향상이니 악화니라는 표현을 쓸 수 없다는 것이다("해석할 수 없다"라고 했는데, 트위터에서 주고받은 것에 따르면 같은 말로 판단한다).

예를 들면 남학생 표본집단의 어떤 측정치들의 평균이 10이고, 여학생 표본집단의 어떤 측정치들의 평균이 5일 때, 양방검정을 했다면, 그 이후 해석함에 있어 "남학생은 여학생보다 (측정치가) 크다"라고 해석하면 절대로 안 된다는 것이다. 그렇게 해석하면 연구 조작이라는 말과 함께.

이렇게 정언명령에 가까운 표현을 썼을 때 상식적으로 이론적으로 저렇게 하는 것은 올바른 방법이 아니며, 올바른 방법이 있다고 주장한다고 이해할 수밖에 없다.

2.

문제는 내 앞에 있는 논문들 들쳐봐도 거의 대부분은 어떤 식으로든 two tailed t-test를 쓴 뒤 각 집단의 표본값들의 대소관계를 밝히고 이를 과학가설을 뒷받침하는 증거들 중 하나로 쓰고 있다는 것이다. 물론 과학자들이 다 그렇게 쓰고 있다고 틀린게 맞는게 되는 건 아니다. 더군다나 과학계가 정말 통계를 전혀 모른체로 심각한 오용을 한다는 비판은 어제오늘의 얘기도 아니기에 (내가 기억하는 것만으로도 p값에 목숨 걸고, 중간에 표본수를 증가해서 p값 줄이기, post-hoc analysis, overfitting, 기타등등 참 많다. 나중에 기회되면 관련 논문이랑 책도 소개할 수 있겠다), 필자도 그 점때문에 되도록 이런 류의 문제제기들은 면밀히 살펴서 보수적으로, "제대로" 쓰려고 노력하는 편이다.

어쨌든 심각하게 오용(틀리게 쓰고 있음)되고 있는 방식에 대해서 자세한 설명이 궁금했다. 아이추판다님도 주변에서 그런 요청을 받았는듯, 후속 글을 게시했다.

http://nullmodel.egloos.com/3825940 통계학적 밑장빼기

(제목이 참 상당히 선정적이다)

"양방검정을 하고 해석은 단방으로 하는 것의 문제"를 설명하기 위해 시뮬레이션 결과를 제시했다.
이 시뮬레이션을 설명하는 부분을 그대로 인용했다. 각각의 문단마다 필자의 의견을 덧붙인다.

===

말로 설명하기가 좀 복잡하니까 한 가지 사례를 살펴보도록 하자. 아래 표는 컴퓨터 모의실험을 통해 유의수준 5%에서 t-검정을 1만번씩 실시한 결과이다. 모든 조건에서 표본 수는 30건이다. (프로그램: two_tailed.py, python 2.7 + numpy 1.6 + scipy 0.9)



일단 단방검정으로 대립가설이 μ > 0인 경우를 보자.(μ는 '뮤'라고 읽는다) 일단 두번째 줄을 먼저 보면 실제로 μ가 0일 때 1만번 중에 484번은 유의미한 결과('크다')가 나온다. 1만 번 중에 484번이면 대략 5%라는 것을 알 수 있다. 유의수준 5%라는 것은 이런 의미다. 

"유의수준 5%라는 것은 이런 의미다"라는 것이 명확하게 와닿지 않는다. 그냥 t-검정에서 유의수준을 5%로 정했으니, 귀무가설과 동일한 조건에서는 5% 정도로 제1종 에러 (false-positive)가 나온다는 것이다. 그냥 프로그램을 예상대로 짰다라고 할 수 있겠다.

대립가설을 μ ≠ 0이라고 해서 분석은 양방으로 하고 해석은 단방처럼 한 경우에도 실제로 μ가 0이면 1만 번 중에 499번은 유의미한 결과('크다'와 '작다')가 나온다. 역시 대략 5%이다. 그런데 여기서 문제는 '크다'와 '작다'가 데이터에 따라서 널을 뛴다는 것이다. 499번 중에 249번은 '크다'는 해석이 나오고 250번은 '작다'는 해석이 나온다. 

명확히 하기 위해, 모집단의 평균이 0이고, 여기에 무작위적으로 30개의 숫자를 꺼냈을 때, 그 값들에 대해 t-검정을 하면 1만번의 경우에 100번에 5번 정도 유의한(=실험자가 설정한 임의의 기준, 여기선 5%) p값이 나온다는 얘기다. 다시 한 번, 그냥 프로그램 제대로 짰다는 의미 외에는 별게 없다. 각각의 경우 (249번이랑 250번) 표본값들의 평균은 0보다 작거나 0보다 컸다는 얘기일 뿐이다. 널을 뛰는 게 아니라, 그냥 자연스러운 귀무가설의 가정일 뿐이다. t-검정이라는 것 자체가, 귀무가설 (평균이 0이고, 분산분포가 특정값을 취함)에 따라 무작위적으로 뽑았을 때 뽑은 값들의 평균이 특정값일 확률을 계산하는 것이니까.

불운이든 연구자가 멍청한 탓이든 아무런 영향이 없는 현상을 두고 실험을 하나 했다고 해보자. 단방검정을 하면 5%는 잘못된 것이지만 그럼에도 불구하고 똑같은 실험을 두 번 하면 5%는 재현이 된다. 두 번 째 실험도 잘못될 수 있기 때문이다. 그런데 양방검정을 하고 단방검정처럼 해석하면 그나마도 2.5%만 재현이 된다. 재현 자체가 잘 안되는 것이다.

이건 아래와 병합해서.

그러면 이번에는 실제로는 μ가 0보다 작은 경우(μ = -0.1)를 한 번 보도록 하자. 이 때는 단방검정을 하면 1만번 중에 9833번은 유의미한 결과가 안 나오고, 167번은 유의미한 결과가 나오기는 했지만 잘못된 결과가 나온다. 실제로는 μ가 0보다 작은데 μ가 0보다 크다는 해석을 내놓기 때문이다. 반면 양방으로 분석하고 단방으로 해석하면 훨씬 더 좋은 결과를 얻을 수 있는데 757번은 제대로 결과가 나온다. 9186번은 결과가 안 나오고, 정반대의 결론은 57번 밖에 나오지 않는다. 이것이 분석은 양방으로 하고 해석은 단방으로 하는 경우의 유일한 장점이다.

여기서부터 시뮬레이션 해석이 이상하다. 

일단 1만번 중 9833번은 t-검정은 유의수준 5%에서 "유의하다"라는 결론을 내리지 못한다. 통계에선 power가 작다고 얘기한다. 제2종 에러, false negative가 많다는거다 (우리 바닥에서 이런 데이터를 내는 시스템이나 과학가설은 별볼일 없다고 보기도 한다. 효과 자체가 미미하니까. "significant"하게 나왔다고 해도 실용적인 측면는 중요하지 않은 것이다(statistical significance does not equate practical significance). 왜냐하면 시뮬레이션 셋팅을 표본평균이 분산보다 별로 크지 않게 "적당히" 잡았기때문이다. 이렇게 모집단 분산 대비 작은 효과는 실제 있다고 하더라도, 제1종 에러를 어느 수준 이하로 기대하면서 잡아내기 쉽지 않은 조건이라는 뜻 다름 아니다. 즉, 표본수 30개로, 제1종에러는 0.05 이하로 잡으면서, +-0.1 정도밖에 안 되는 효과는 별로 잡아낼 수 없겠구나(1만번 중 양방으로 쳐서 700번이면 7%밖에 안 된다), 이게 시뮬레이션 결과에 대한 제대로 된 해석이라고 할 수 있겠다.

따라서 "훨씬 더 좋은 결과", "제대로 된 결과" 같은 건 어불성설이다.

그냥 표본평균값이 0보다 큰지만 비교하는 단방검정은 당연히 표본값이 0보다 작은 경우는 무시해버린다. 167번의 "유의미한" 결과는, 30개의 표본값의 평균이 0보다 크고, 그 분산분포가 적당히 작아서 0보다 큰 것처럼 보인 사건의 갯수를 말하는 것일 뿐이다. 양방검정에 의해 "더 많은 사건"들이 유의하게 나온 것으로 보이는 건, 여기서는 30개의 표본들의 평균값들 중에 0보다 작고, 분산이 적당히 작은 사건들이 t-검정에 의해 "유의하다"라고 결과가 나왔다는 것을 의미할 뿐이다. 정반대의 결론이 57번 정도 나오는 건 평균값이 -0.1인 집단에서 무작위로 30개의 표본을 뽑을 때 평균값이 0보다 큰 경우가 그래도 좀 있을 수 있다는 것이다.

아이츄판다님과 같은 이상한 해석이 나오는 이유는, 감히 추정해보컨데, 조건부 확률을 뒤집어서 생각해서 아닌가 싶다. 과학과정에서 거의 모든 경우에는, 우리는 표본수집(sampling)을 통해 모집단의 평균/분포를 추정하려고 하지, 그 역을 하는 경우는 거의 없다. 우리가 30개의 표본값을 갖고 이 값들의 평균값이 0과 다를 경우, 이게 실제로는 평균값이 0인 경우에서 나왔을 확률(=type 1 error)을 가늠해서 제1종 에러를 줄이려고 노력하는 것이지, p값이 0.05보다 작다고 95%의 확률 이상으로 대립가설이 맞다라고 주장하는 것이 아니다. 

정작 가설과 실제가 일치할 경우를 보면 아주 기이한 결과가 나오는 것을 볼 수 있다. 일단 단방검정을 하면 1만번 중에 1314번은 올바른 해석을 내린다. 8686번은 결과가 안 나온다. 분석은 양방, 해석은 단방으로 하면 741번은 올바른 해석이 나오고 64번은 정반대의 해석, 9195번은 결과가 나오지 않는다. 가설과 실제가 일치하는데도 올바른 해석은 잘 나오지 않는 반면, 정반대의 해석이 나오는 경우가 생기는 것이다.

다시 말하게 되지만, 이게 기이한 결과로 보이는 건 모집단의 분포를 가정해서 t-검정한 시뮬레이션을 뒤집어서 생각하고 있기때문이다.  단방검정이 왜 양방검정보다 "올바른" 해석이 반 정도밖에 안 나올까? 당연히 유의수준 5%가 단방에서 잡는 기각역이랑 양방에서 잡는 기각역이랑 다르니까 그런거다.

가설과 실제가 일치하는데도 올바른 해석이 나오지 않는건 말 그대로 지금 하고 있는 t-검정의 조건의 power가 약해서 그런 것이다. 정반대의 해석이 나오는 건 아이츄판다님이 (아마도 의도적이진 않겠지만) "적절하게" 선택한 대립 모집단 분포의 분산이 평균에 대한 차이에 대비 커서 그런 것일뿐이다. 단방/양방을 선택해서 그런게 아니라, 효과적으로는 유의수준을 걍 5%로 똑같이 잡으니 기각역이 달라져서 그런거다.

정리하자면 차이가 없거나 가설과 실제가 일치할 경우에는 단방검정이 더 좋은 결과를 내놓는 반면, 가설과 실제가 불일치할 경우에는 분석은 양방, 해석은 단방으로 하는 쪽이 더 낫다. 그런데 가설과 실제가 일치하는지 아닌지는 알 수 없고, 분석방법을 선택하는 것은 연구자의 기대와 가정에 바탕을 둔다. 간단히 말해 분석은 양방, 해석은 단방으로 한다는 것은 "자신의 가설과 실제가 불일치할 경우"를 기대하고 연구를 한다는 뜻이다. 이상한 이야기가 아닌가?

정리하자면 위와 같이 평균값의 차이가 분산 대비 별로 크지 않은 경우엔 t-검정이 별로 도움이 되지 않는다(power가 작다)가 시뮬레이션의 결과이다. 내가 보려는 효과가 분산대비 작다면, 저런 유의수준과 저런 표본수 갖고는 sampling error를 적절히 피하면서 결론을 얻기 힘들다는 것이고, 단방/양방의 차이는 그냥 기각역에 대한 차이때문에 생기는 것이다.

마지막으로 "간단히 말해" 양방, 해석은 단방으로 한다는 것은 "자신의 가설과 실제가 불일치할 경우"를 기대하고 *검정*을 한다는 뜻이다. 왜냐하면 t-검정, 유의수준 5%라는 건 기본적으로 제1종 에러(여기선 sampling error)에 대비해서 하는 검정이지 대립가설을 증명하려고 하는 검정이 아니기때문이다. 고로 전혀 이상한 이야기가 아니고 오히려 당연한 이야기다. 

올바른 반문은, 자기가 증명하고자 하는 가설에 맞춰 데이터 분석(error를 줄이기 위한)에 가정을 집어넣는 것이 이상한 이야기가 아닌가? 가 되겠다. 우리 바닥에선 그래서 "당신이 변화가 한 쪽으로만 일어나리라 믿을만한 강력한 이유"가 있지 않는 한, 양방검정을 하는 것이 더 보수적이다라고 하고 실제로 그렇게 한다.


===

이어 나오는 호웰의 설명은, data를 본 다음에 *다시* testing을 하는 practice에 대한 경고다. 이 점에 대해선 이론의 여지가 없다. p값 0.05 아래로 낮춰질 때까지 표본수를 더하는 짓만큼이나 cheating이다.

아주 보수적으로 말해서, 난 아이츄판다님의 최근 글로부터, *왜* 양방검정 후 단방해석이 연구조작에 준하는 잘못인지 여전히 납득할 수 없었다. 오히려 그 근거라고 나온 최근글을 통해 의구심이 커졌다. 다른 복잡다단한 regression등등도 아니고, 나도 아주 자주 쓰는 t-test를 통한 예시였기때문에, 이게 F(isher)식이냐 NP(Neyman Pearson)식이냐의 문제는 아니라고 본다. 

*물론* 내가 틀렸을 수도 있다. 그렇다면 납득할 수 있는 근거를 보여주시기를 바랄 따름이다.

p.s. 1 : 트위터로 주고받으면서, "그 필드에선 p-value가 0.05 아래로 나오면 장땡이니까 그 바닥 룰에 따라"라는 식의 이야기가 나왔는데, 난 이에 반대한다. p-value가 0.05 아래로 나오면 장땡인 건 그 자체로 자기가 무슨 테스트를 하고 무슨 가정을 하고 있는지 전혀 모르고 하는 소리들이다. (googling으로 andrew gelman, p-value 정도로 치고 글들 읽으면 대충 분위기를 알 수 있을 것이다)

p.s. 2 : 여기선 1종 error, 2종 error를 논하면서 sampling error가 error의 전부인 식으로 얘기했지만, 당연히 다른 error들도 많다(때론, 사실 거의 대부분 더 고민해야하는 것들이다). sampling error를 5% 아래로 잡았다고 대립가설이 "증명"된 게 아닌 또다른 이유다.

p.s. 3 : Overfitting, 특히 degree of freedom을 잘못 잡는 것도 큰 문젠데, 어쨌든 컴퓨터가 문제요...



쥐새끼

진중권의 신들린 글.

이걸 보니, 옛날에 들었던 얘기가 기억난다. (대충 옮김)

옛날에, 어떤 공작부인을 가리켜 상습적으로 "젖소"라고 욕하던 기자가 있었다.
참다못해 그 공작부인이, 명예훼손혐의로 재판을 걸었다.

기자 : "아니, 대체, 젖소를 젖소라고 말하는 것이 왜 문제가 된다는겁니까!"
재판장왈, "기자님, 당신이 공작부인을 명예훼손한 것은 너무나 명백합니다. 지금 고치지 않으시면, 중형을 면하실 수 없을 겁니다".
기자: "아니 그렇다면, 젖소에게 공작부인이라고 하는 것도 명예훼손이라는건가요??"
재판장 : "그것도 명예훼손이라고 할 수 있겠지만, 젖소가 고소하지만 않다면, 그건 문제가 되지 않겠지요."
기자: "(한숨쉬며) 알겠습니다.제가 잘못했습니다. (공작부인을 향하며) 잘못했습니다. 공작부인님."

이로써, 명예훼손사건은 손쉽게 일단락되었다는~

(무슨 말인지 모를 사람이 있을까?)

첫 글.

글 쓰는 것 알아내는데 1주일 걸렸습니다. 네 ;;;

1