본문 바로가기
표본 크기가 작을 때(n<30)는 어떻게 해야 하죠? 정규성 검정은 꼭? 이걸 모르면 궁금증의 지옥행

잠시 짚고 넘어가야 하는 이야기. 통계분석을 보다 보면 표본크기가 작을 때는 어떻게 해야 할지 막막해질 때가 있습니다. 통계란 무릇 표본으로 모집단을 예측하는 것이니 적당한 표본크기가 있는 것이 어찌 보면 정상이고, 그래야 가능한 것이 우리가 다루는 모수 통계입니다. 그렇지만 의학 같은 경우에는 무조건 환자수를 늘린다든지 하는 표본크기를 늘리기가 쉽지 않은 경우가 많습니다. 표본크기를 늘린다는 것은 사람을 상대로 실험을 더 한다던가 하는 뭐 그런 것인데, 이는 위험한 일이 아닐 수가 없습니다.  
표본크기가 작을 때를 어떻게 해야할지 이해하기 위해서 어떤 경우에 표본의 평균이 정규분포가 되는지를 짚고 넘어가면 가장 확실한 접근이라고 생각합니다. 

⓵ 일반적으로 모집단이 정규분포라면 표본의 평균의 분포는 정규분포를 이룹니다. 즉, 표본의 크기 n이 크던 작던 관계없이 그때의 표본의 평균은 Gaussian의 outcome입니다. 그러니까 이때는 모집단의 분포가 중요하군요.

⓶ 그렇긴 한데, 오 마이갓. 중심극한정리에 의해 표본의 크기가 충분히 큰 경우, 단일 표본의 평균은 "모집단의 분포와 관계없이" Gaussian에서의 Outcome입니다. 보통 (n≥30) 이때는 모집단의 분포와 관계없습니다. 이런 감사한 일이 또 있을까요.

⓷ 어찌되었건, 정규분포로 분포하는 표본평균의 분포를 구할 때에는, 모분산이 필요한데, 모분산을 알리 없으므로, 모분산 대신에 표본분산을 이용하게 되면 표본평균의 분포는 정규분포가 아니라 자유도에 따른 - 표본의 크기에 따른 - t 분포를 따릅니다. 주의할 것은 ⓵번 또는 ⓶번을 만족하여 표본평균의 분포가  Gaussian인 경우입니다. 

※ 사실 ⓷번에 대해서 다시한번 정리하면 모분산을 표본분산으로 대치할 때, 대표본인 경우(일반적으로 n≥30)에는 t분포가 정규분포와 가까워지니까 정규분포로 "근사"해서 쓸 수 있고(여전히 t분포가 유효함), 소표본인 경우에는 모집단이 정규성을 띈다고 했을 때 현실성을 고려하여 t분포를 사용할 수 있습니다. 
자, 이제 다 왔습니다. 표본크기가 매우 중요하다고 여겨질테니, 각각의 경우를 살펴보겠습니다. 

제일 먼저 n≥30이면 어떨까요? 
⓶번에 의해서 모집단의 분포와 상관없이 평균의 분포는 정규분포라고 가정할 수 있습니다. 그러니까, 표본분산을 이용한 t분포로 대용할 수도 있습니다. 세상 간단하네요!

그러면 n<30 이면요? 
⓵번을 만족한다면 모집단이 정규 분포일 때만 평균의 분포는 정규분포이겠군요! 그러면 그때는 t분포로 대용할 수 있습니다. 하지만 모집단이 정규 분포한다고 가정하지 못할 경우에는요? 여기에서부터 어려움이 시작됩니다. n<30인 경우를 보통 소표본이라고 부르는데 소표본일 경우에는 표본평균의 분포가 모집단이 정규분포한다고 가정하지 못하게 되면 아주 곤란하게 되니까, 어떻게든 정규분포한다는 조건을 만족시켜서 검정이 유효하다는 것을 주장하기 위해 그렇게도 모집단의 정규성에 목을 매고 애를 쓰게 되는 것이죠. 그 애를 쓰는 이야기란 모집단의 정규성 검정에 대해서 인데, 표본을 통해서 과연 모집단이 정규분포할까?를 검정하게 되는 것입니다. 모집단이 정규성을 띄어야 평균이 정규분포하니까요. 그래서 정규성 정규성하는 것입니다. 

또한 여기에서 가장 큰 비극이 벌어지는데, 10≤n<30 일 때는 정규성 검정을 하고, 표본크기가 n<10 으로 너무 작으면 비모수 검정을 한다는 표본크기로 뭔가를 판단하는 이야기가 횡횡하는데, 어찌 보면 맞는 말이기도 하고, 틀린 말이기도 합니다. 왜냐하면 n<10인 경우에도 방금 이야기하였듯이 모집단이 확실하게 정규분포한다고 알려져 있다면 그 경우의 평균도 정규분포로부터의 Outcome일 테니까 표본평균의 분포를 정규하다고 가정할 수 있습니다. 결국 표본크기로 어떤 방법을 사용할 것인가를 결정한다고 할 수 없고요, n≥30인 경우에는 다행히 모집단의 분포와 관계없이 간단하게 t분포나 정규분포를 통해 해결할 수 있고, n<30인 경우에는 모집단을 정규분포로 가정할 수 있거나, 표본분포를 통해 정규성 검정의 결과가 모집단의 정규성이 있는 것으로 나오면 여전히 t검정을 사용할 수 있지만, 그렇지 않은 경우에는 비모수 검정을 해야 한다는 것입니다. 표본크기로 결정하는 것이 아니니까 그 점을 이해하면 좋겠습니다. 

요컨대, 표본크기가 작더라도 말이죠, 정규 Gaussian 모집단에서 추출된 표본 평균의 분포는 Gaussian이니까 문제 없음!으로 다룰 수 있으니까 너무 다행스럽지만 모집단의 분포도 모르고, 표본크기도 작은 경우가 있겠지요? 정규성검정을 하는 경우가 이런 경우인데, 모분포를 모르는데, 표본크기가 작은 경우에는, 에라이 모르겠다. 정규성을 꼭 확인해라 라는 말이 횡횡하는 것이죠. 이 말이 상황을 고려하지 않고, 구분 없이 꼭 정규성을 꼭 확인하라고 하니, 늘 해야 하는 것인가 하는 헷갈림이 늘 머릿속에 윙윙합니다. 도대체 중심극한정리는 어디에 팔아먹었지?라는 의문과 함께 말이죠. 모분포를 모르면서 표본크기가 작은 경우(6<n<20 정도?)에는 분석 결과에 대해서 정말 말이 많아집니다. 진짜 모분포가 정규분포인가요?둥의 의문을 제기받기 일쑤입니다. 뭐 당연한 이야기 아니겠어요? 여기서부터는 결과에 대한 Risk Taking은 연구자의 몫이라고 봐야죠. 이 시점에 평균을 활용한 검정 방법을 사용하는 것도 꽤나 불안하니까 - 요식행위 같은 느낌이랄까요? - 모집단의 정규성 검정을 통해서 그런 불안감을 해소하고 가면 좀 마음이 편하다 정도가 아닐까 합니다. 

전반적으로 정리하면 이런식이 되지 않을까 합니다. - 표본크기가 딱 끊어져서 이렇다고 말하기 어렵기 때문에 등호 등의 부호는 굳이 넣지 않았습니다. -

그러면, 이순간에 n<30이고, 모분포를 모르는 경우, 정규성 검정이란 무엇인가 짚고 넘어갈 필요가 있겠습니다. 
정규성 검정이라는 것도 검정이기 때문에 Null Hypothesis와 Alternative Hypothesis가 있게 되는데, 여기에서 중요한 점은 표본을 통해서 모집단이 정규성을 갖는가를 검정하는 것입니다. 모집단이 정규성을 갖기만 하면 이때의 표본의 크기는 그다지 문제가 되지 않는다는 것에 대한 거꾸로 접근인데요. - 표본을 통해 모집단이 정규 분포하는지 검정했더니 정규분포하더라라는 결론을 맺었다면 현재 가지고 있는 표본의 평균은 정규분포에서의 outcome이다 뭐 그런 뫼비우스의 띠 같은 이야기입니다 - 

모분포가 정규분포라면 → 표본 평균의 분포도 정규분포인데 → 모분포를 모르니까 표본으로 모분포가 Gaussian인지 확인 → 모분포가 정규라면 표본 평균의 분포는 정규다!라는 뭐 그런 식이죠. 

정규성 검정은 Null Hypothesis는 표본의 모집단이 정규분포를 이루고 있다. 
Alternative Hypothesis는 표본의 모집단이 정규분포를 따르지 않는다. 
를 검정하는 것입니다. 우리가 어떻게 모집단을 알겠습나꽈? 모집단을 몰라서 통계를 하고 있는데 말이죠. 이것도 검정이니까 어쨌든 유의수준으로 결론을 내게 되는데, 그러다 보니 당연히 틀릴 수 있는 가능성이 있습니다. 표본을 통해서 모집단이 그런가? 하는 접근이기 때문에 그렇습니다. 특히 소표본의 경우에는 검정력이 약해서 정규분포하지 않는다는 극단적인 증거가 소표본에 포함되어 있지 않는 한 대부분 모집단이 정규분포한다는 Null Hypothesis를 기각하지 못하게 됩니다. - 이점을 유의해야 하는데, 좀 혼란스럽군요.

자, 요컨데 표본이 과연 Gaussian의 모집단에서 표집 된 것일까? 하고 검정하고 싶은 것인데, 그렇다면, 그런 경우에는 어떻게 정규성을 검정하는가 하는 이야기가 이어지는 것이 제법 매끄러운 전개가 되겠습니다. 여기에서 또 한 번 소리를 지를 법한 아비규환이 벌어지는데 꽤 많은 수의 정규성 검정 방법들이 나옵니다. 대표적인 것들만 보면,

⓵ Shapiro-Wilk 검정
⓶ Kolmogorov-Smirnov 검정
⓷ QQ plot
⓸ 왜도와 첨도

여러가지가 있군요? 하하. 아니 이건 또 뭐 이렇게 많아.라는 생각이 들고, 알면 알수록 어릴 적 뜨거운 물에 발을 담그는 도전처럼 겁나는 이야기군요.라고 해봐야 방식이 다를 뿐이고, 여러 가지 방법이 있다 정도만 알면 되지 모든 것을 알 필요는 없겠습니다. 모든 걸 알겠다는 욕심은 버려요. 그게 행복의 지름길이라는 점은 잊지 말기로 해요. 그래도 어디다 쓰는지 정도만 짧게 정리한다면,

⓵ Shapiro-Wilk 검정 : 소표본에 평균을 활용한 검정을 위한 모집단 정규성 검정에 적합 
⓶ Kolmogorov-Smirnov 검정 : 소표본에 평균을 활용한 검정을 위한 모집단 정규성 검정에 적합
⓷ QQ plot : 아~주 큰 표본 또는 데이터 변환시 정규에 가까워지는 변화가 있는지 확인하는 것에 많이 씀 그리고, 아~주 큰 표본을 확인하는 데 적합
⓸ 왜도와 첨도 : 아~주 큰 표본을 확인하는 데 적합

정규성 검정에도 표본의 크기 이야기가 빠지지 않는군요. 이중에 Kolmogoriv-Smirnov검정은 이미 간략하게 살펴보았으니, Shapiro-Wilk 검정이 소표본에서 가장 많이 쓰이는 정규성 검정 방법인데, Shapiro-Wilk 검정을 조금 살펴보도록 하겠습니다. 이것은 정규성 검정이 어떤 식으로 이루어지는지를 대략 이해하는 과정이니까, 두 눈의 초점을 풀고서 적당히 보면 좋겠습니다.  

아, 그렇긴 한데 또 한가지 재미있는 이야기가 있습니다. 자꾸 재미있다고 해서 미안합니다만. 이 순간 뜻하지 않게 Null Hypotesis와 Alternative Hypothesis를 정할 때 이전에 이야기했던 Null Hypothesis와 Alternative Hypothesis를 연구가설에 관하여 어떻게 정하는지를 이해하지 않고, 외우고 있다면, 의도치 않게 헷갈리는 경우를 만나게 되는데 어떤 것이냐면, 다음과 같습니다. 

"정규성 검정을 하는데 Shapiro-Wilk 유의확률이 굉장히 작게 나와서 '정규성을 이룬다'라는 귀무가설이 기각된다는 내용이 있는데, 원래 연구가설에 반대되는 가설이 귀무가설로서 '정규성을 이루지 않는다가' 올바른 귀무가설 설정이 아닌가요?"

그도 그럴 법하게 헷갈리는 상황입니다. 연구자가 주장하고 싶은 것이 연구가설이고 대립가설이라면, 정규성을 이루지 않는다가 귀무가설이 되어야 하는 것 아닌가요?라는 질문인데, 

이전에 "귀무/대립가설 설정은 이제 더 이상 헷갈리면 인간이 아님 - 가설검정과 설정의 틀"편에서 가설을 설정할 때 이야기하였지만 가정 중요한 핵심은  '증명하려는 명제'가 귀무가설, 대립가설을 정하는 것과 전혀 관계가 없습니다.입니다. 다시 한번 말합니다. 가설의 설정은 연구자의 의지와 전혀 관계가 없습니다. 그렇다면 Null Hypothesis를 세우기 위해 데이터의 분포를 그렇다 치고~라고 가정할 수 있는 경우가 어떤 경우인가요라는 관점에서 살펴보면, Shapiro-Wilk는 특정 정규분포를 가정해 놓고, 표본들과 비교해 보는 것인데, 이때 표본의 평균을  모평균으로 가정하고 (분산도 그런 식으로 요) 그때 가정한 Gaussian 분포와 표본과의 차이를 계산을 합니다. 그렇게 하고 나면 그 차이들의 분포는 어떤 분포를 갖게 되는데, 그것이 Shapiro-Wilk 분포를 갖습니다. 그 값들은 Table로 제시되는데, Shapiro, S.S. & Wilk, M.B. (1965) An analysis of variance for normality (complete samples). Biometrika, Vol. 52, No. 3/4.에 마치 정규분포표처럼 확률표가 자세하게 제시되어 있습니다. 오호 이것도 확률분포 테이블이군요.

그러니까, 자세한 이야기를 빼고 대략적으로만 이야기 한다면 표본 분포를 $\mu=\bar{X}$인 Gaussian으로 가정한 후에 (Null Hypothesis로 가정), 차이의 제곱의 합을 검정통계량으로 구해서 그 검정통계량을 활용하여 p value를 구한 후에 Null Hypothesis를 기각해야 하는지 알아보는 그런 스토리입니다. 당연히 p value가 작으면 Gaussian과 거리가 있다. 뭐 그런 스토리인데, 이런 이야기를 검정하는 방법을 미리 본 덕에 서슴지 않고 할 수 있어서 마음이 후련합니다. 

참고로 Shapiro-wilk의 검정통계량의 원리는 - 인생에 다시 볼 일이 없기를 - 중요치는 않습니다만, 대~충 어떤 것인지 알면 좋으니까, 늘어놓으면 다음과 같습니다. 
$W = \cfrac{(\sum_{i=1}^{n}a_ix_{(i)})^2}{\sum_{i=1}^{n}(x_i-\bar{x})^2}$ 여기에서 a 계수는 Covariance Matrix로부터 계산한 어쩌구인데, 이건 저세상으로 보내고 잊는 것이 신상에 좋겠습니다. - W가 검정통계량이므로 이 값에 대한 확률표를 가지고 p value를 구하는 것이죠 -

그리고 Kolmogorov-Smirnov 검정은 이미 언급했었는데, 어떤 분포일 것이라고 가정한 확률분포의 CDF와 표본분포의 누적분포와의 차이를 분포로 해서 p value를 구하는 뭐 그런 이야기인데, "주어진 데이터에 대해 가장 적합한 확률 분포 찾기 - 확률분포의 추정"편에서 그까이꺼 대~충 살펴본 적이 있습니다만. 그러니까 이번에는 그냥 넘어가요.

표본크기에 따라 판단하는 방법을 다음과 같은 방식으로 정리된다고 해도 적당한 크기의 표본을 더 구하는 것이 늘 정답이라고 생각합니다. 그래도 어느 정도 생각의 흐름이 다음과 같은 방식이라면 조금 더 합리적이지 않을까 합니다.

실은 소표본 이야기하다가 꺼내기 뭣한 이야기이지만, "모분포를 모르는" 아~주 큰 대표본에서는 Shapiro-Wilk와 Kolomogorov-Smirnov 정규성 검정이 Null Hypothesis를 기각하게 될 가능성이 큽니다. 왜냐하면 완벽한 정규분포로부터 조금이라도 빗나가면 아주 작은 p value를 얻기 때문입니다. 그러니까 세상에 모든 것은 적당한 것이 좋습니다. - 

그래서 그때 사용하는 확인 방법이 QQ plot, 첨도/왜도를 보는 방법인데, 이 방법들을 실무적으로 대략 검정하는 방법론으로 많이 택합니다. Shapiro-Wilk방법이나 Kolmogorov-Smirnov방법이 이름만 보면 꽤나 있어 보이기는 하나, 대표본의 경우에 이 두 가지 검정방법에서 정규성 검정을 통과하기가 어지간해서는 쉽지 않으니까요, 레알 세상의 데이터들에 대해서 사용하기에는 상당히 엄격한 방법입니다. 참고로 QQ plot은 시각적으로 데이터의 분포를 보니까 꽤나 느슨한 방법인데, 이 방법은 정규성을 보이지 않는 데이터를 정규성이 보이도록 데이터 변환을 했을 때, 정말 괜찮아졌나? 하고 확인할 때 상당히 유용한 방법입니다. 

이렇게 정규성 검정을 따지지만, 큰 대표본에서 "평균을 이용한 검정을 하기 위해서" 정규성 검정을 굳이 사용하는 것은 별 의미가 없다고 봐야 하지 않을까 합니다. 왜냐하면 우리가 관심 있는 것은 표본의 평균의 분포이지 모분포가 아니기 때문에 이미 크으은 표본에서는 중심극한정리를 이용해서 표본평균의 분포를 정규성을 띈다고 가정할 수 있기 때문이죠. 

이런 큰 표본에서 QQ plot이나, 첨도왜도로 모집단이 정규하는가를 따지는 이유는 평균을 활용한 검정을 하기 위해서라기보다는, 여러 가지로 모집단을 이해하기 훨씬 쉬워진다는 의미에서 사용한다고 보면 되겠습니다. 특히 데이터 변환할 때, 예를 들어, 오른쪽으로 꼬리가 긴 분포는 로그 변환을 사용해주면, 표본 크기가 작더라도 정규분포와 유사한 모양이 되는 것을 QQ plot을 이용해서 확인해 볼 수 있습니다. 물론 첨도 왜도를 이용하여 판단할 수도 있고요. 모집단이 Gaussian이라면 분석이 엄청 쉬워지겠죠?

그러면, 크으으~은 대표본이 있을 때에는 Shapiro-Wilk나, Kolmogorov-Smirnov test가 실패가 되는 경우가 많이 있다고 하니까, 이때 첨도와 왜도를 이용하여 대충~ Gaussian이라고 판단하는 간단한 방법인 왜도 첨도 방법을 이야기해 볼까 하는데요, - QQ plot은 나중에 - 왜도나 첨도가 익숙하지 않을 수 있겠습니다만, 왜도는 왜곡되는 것이고, 첨도는 뾰족한 정도라고 생각하면 금세 익숙해질 것입니다.

참고로 첨도 = 0이면 표준 정규분포이고요, 첨도가 크다할지라도, 분산이 더 큰 경우, 완만한 그래프가 될 수 있으므로, 비교할 것이라면 분산이 동일한 분포끼리 비교해야 합니다. Gaussian과 t 분포가 그런 관계입니다. 

요컨대 West 등(1995)의 연구에서는 왜도는 절대값이 2, 첨도는 절댓값이 7 이하이면 정규분포에서 크게 벗어나지 않아 정규성을 띈다고 봐도 된다고 합니다.

from scipy.stats import skew, kurtosis

skew(data) # 왜도
kurtosis(data, fisher=True) # 첨도


참고로 fisher=True 이면, 정규분포 첨도를 0 기준으로 계산해주고, False이면 정규분포 첨도를 3으로 계산해 줍니다. 

여러 가지 이야기 중에 QQ Plot이야기는 하지 않았는데, 이것은 나중에 데이터를 변환해서 정규성을 띄도록 만들 때 다시 보는 것이 어떨까 합니다. 너무 많은 것을 한꺼번에 보면 정나미가 떨어질 수 있으니까요.

그렇긴 하지만, 모집단이 정규분포하는 경우는 "중심극한정리에 대한 오해, 많으면 무조건 정규분포 OK???"편과 "왜 가우시안 분포가 이렇게도 많을까?"편에서 적당히 살펴보았으니, 그래도 대충 어떨 때 모집단이 정규분포할지 감은 있지 않을까 생각합니다. 

결론적으로는 가능하면 적당히 큰 표본을 구하는 것이 좋고, 그게 아니라면, 표본이 비용이긴 하지만, 표본을 구하는 비용이 더 큰지, 아니면 결과를 분석하여 결론이 틀려도 되는 비용이 더 큰지를 늘 가슴속에 품어야 하겠습니다.

통계를 이용해서 너무 소표본이나 이런 것들을 상대하는 것을 고민하는 시간에 표본의 크기를 늘리는 것이 더 정신건강에 이롭지 않을까 생각합니다.

뜬금없지만, 정규성 검정을 하고 나면 등분산 가정이라는 것도 늘 따라다닙니다. 이건 또 무엇이냐. 머리가 지끈거리네요. 등분산 가정이라는 것은 검정에서는 비교하는 집단이 서로 분산이 같다는 가정인데 - 사실은 분산이 같다는 의미는 각각의 분산이 확률변수로써 같을 확률이 크고 그렇다는 의미는 각각의 집단은 같은 성질의 집단이고, 같은 성질의 집단이라는 이야기는 같은 성질의 모집단에서 나눈 그룹일 수 있다.라고 할 수 있겠습니다. -, 그러니까 이것도 각 표본의 분산의 값이 똑같을 필요는 없습니다. 모분산이 확률적으로 같을 거다 정도입니다. 그런 걸 동질성이라고 부르는데, Homogeneity of Variance라고 영어로 표현하고요, 모분산이 같으면(표본분산이 동질하면) 검정 통계량을 Simplify 해서 공통 표준오차를 쉽게 계산할 수 있어서 매우 좋겠지만, 집단 간 분산이 다를 경우(표본분산이 동질 하지 않은 경우)에는 그냥 다른 채로 복잡한 통합된 표준오차를 계산하면 되니까, 너무 걱정하지 마세요. 그런 복잡한 경우에는 또 그때그때의 방법론이 또 있으니까, 그건 그때 본다고 생각하고 지금은 까마득히 잊으셔도 좋겠습니다. 단, 먼저 이야기하기에는 조큼 이르지만 ANOVA의 경우에는 등분산 조건(표본분산이 동질인 조건)이 만족해야만 뭔가 할 수 있고, 등분산이 아닌 경우에는 Welch's ANOVA라는 방법을 사용합니다.

등분산도 검정을 할 수 가 있는데, Bartlett 검정과 Levene 검정이 대표적입니다. 그 차이로는 Bartlett 검정은 정규성 가정이 만족한 집단들에 대한 등분산 검정이어서, 정규성 검정을 한 후에 만족한 경우에만 이 검정방법이 가능하고, Levene 검정은 정규성 가정과 무관한 방법으로 표본 집단의 분포가 정규분포이던 아니던 가능합니다. 그러니까, 등분산인지 아닌지를 검정하면 차이 검정을 할 때 조금 더 확실하게 접근할 수 있겠습니다. 

참고할 수 있도록 어떤 식으로 검정을 할 수 있는가 하면,

from scipy.stats 
# 정규성 검정 - 소표본에서 평균검정과 관련 있음
stats.shapiro(data) # Shapiro 검정을 합니다. 

dist = getattr(stats, "norm")  # 분포의 특징을 가져와서
param = dist.fit(data) # 관측값을 이용하여 가정한 분포의 모수를 추정 
D, p = stats.kstest(data, dist_name, param) # Kolmogorov-Smirnov 검정을 합니다. 

# 등분산 검정 - 평균을 이용한 검정할 때 필요함
stats.bartlett(data, data2) # barlett 등분산검정을 합니다. 
stats.levene(data, data2) # levene 등분산 검정을 합니다.

결국 또 이야기 하지만, 어쨌거나 이렇게 긴 이야기를 했어도 n≥30 이상으로 표본을 구하는 것이 여러가지 의문이나 말이 나오지 않는 방법이라고 생각합니다. 

친절한 데이터 사이언스 강좌 글 전체 목차 (링크) -



댓글





친절한 데이터 사이언스 강좌 글 전체 목차 (링크) -