본문 바로가기
2개 집단 간에 차이가 나는가? Independent Samples t-검정 에 대한 심플함

집단 간 차이가 나는지 알아보자구요. 어떻게요? 과연 집단 간 차이를 보는 방법이 있기는 하단 말인가요? 있죠. 있고 말고요. 그러면, 무엇으로 차이가 난다고 비교하죠?라는 질문이 당연히 생길 텐데, 통계에서 특이한 점은 두 집단이 차이가 나는가?라는 질문에 답은 두 집단의 평균을 비교해서 평균이 차이가 나면 음 차이가 나는군. 하고 결론 냅니다. 단순하죠? 통계가 얼마나 평균에 집착하는지 대단합니다. 두 집단의 평균이 확률적으로 차이가 나는지를 따지려면 좀 복잡하니까, z 검정에서부터 시작해서 조금 더 레알 세상에 접근해 보려고 하니까 이런 글 너무 재밌어. 유후라는 기분으로 읽어 주세요.

이번 이야기에도 가장 중요한 이론은 통계에서 가장 중요한 이론인 "Central Limit Theorem - 중심극한정리"입니다. 평균을 따질 것이니까요. 중심극한정리에 의해서, 모집단의 분포와 상관없이 우리는 평균의 분포와 평균을 추정할 수 있습니다. 몇 번을 강조해도 지나침이 없는 아주 중요한 원리입니다. 평균은 모두 중심극한정리에서부터 비롯됩니다. (또는 모분포가 정규분포인 경우) 그리고 모든 통계에서의 비교는 평균의 비교입니다. 각 검정은 어떤 방법으로 평균을 비교할 거냐의 문제라고나 할까요?

그러니까, 어떤 집단의 평균을 추정하게 되면 할 수 있게 되는 것들이 있습니다. 

어떤 한 집단의 평균이 진짜 그런지, 어떤 일이 벌어지기 전과 후의 평균이 같은지, 다른지. 서로 이질적인 집단 두개의 평균이 같은지, 다른지. 서로 다른 세 개 이상의 집단의 평균이 같은지 아닌지 등을 확률적으로 검사 - 이걸 검정이라고 합니다 - 할 수 있습니다. 

추정에서 보았듯이 표본평균의 분포는 중심극한정리(또는 모분포가 정규분포라면)에 의해 Gaussian이니까, 평균을 추정할 수 있었고, 서로 이질적인 집단 두 개의 평균이 같은지 역시 각자의 표본평균의 분포가 Gaussian이니까 비교가 가능하겠습니다. 

차이 비교 검정에 대해서 조금 더 감 잡아 보자면 말이죠, 남학생과 여학생의 평균 손톱 길이를 비교해 보려고 할 때, 당연히 남학생과 여학생의 손톱 길이 분포가 다를 것입니다. 

일단, 어떤 남녀의 손톱길이 분포가 이렇게 생겼다고 치자구요 그러면 이걸 비교할 수 있나요? 다르게 생겨서 말이죠. 절대로 이 두 개를 비교하기는 불가능하다고 생각합니다. 이건 어떻게 해도 비교하기가 쉽지 않으니까, 뭔가 두 개를 비교할 수 있도록 비슷하게 만들면 좋겠군요. 그것이 평균이에요.

이런 식으로 Gaussian으로 둘 다 만들 수 있다면 비교할 수 있겠지요.

일단은 이것을 가능하게 하는 것이 중심극한정리(또는 모분포가 정규분포인 경우)입니다. 표본평균의 분포를 만들어서 그 둘의 평균을 비교하는 것입니다.

그렇긴 한데, 각각의 집단에서 표본을 뽑아서 표본의 평균의 차이를 구해서 비교하려고 할 텐데, 이게 표본이 달라질 때마다 표본 평균의 차이가 달라지겠습니다. 아 당연한 이야기이지요. 

그렇다면, 남자와 여자의 각각 표본의 평균도 Gaussian으로 분포를 갖겠지만 표본의 평균의 차이도 분포를 갖겠지요? - 이 말은 평균의 차이가 확률분포라는 말입니다. - 표본 평균의 분포는 Gaussian이니까요. 물론! 여기에서 중요한 사실은 Gaussian의 합도 Gaussian, Gaussian의 차도 Gaussian입니다. 아항!

그러니까 그 차이의 분포가 즉 μ₂-μ₁ 평균의 차이가 0이라고 치고(가정하고) 이것도 Gaussian을 따를 테니까, 어쨌든 이 Gaussian을 이용해서 차이가 정말 날까? 하는 질문을 할 수 있을 테니, 이것을 Null Hypothesis로 설정하여 차이가 확률적으로 0으로부터 얼마나 나는가를 검정통계량으로 따져서 p value를 이용한 검정을 하는 것입니다. 어떻게든 검정을 하고 싶어라는 기분이 든다면, 이제부터 할 것이니까 조금만 힘을 내주세요.

X, Y 두 집단이 있다고 할 때 두 집단의 평균이 차이가 나는지를 확인하고자 할 때 귀무가설을 어떻게 설정해야 분포를 결정할 수 있을까요.

귀무가설은
$$ H_{0}: \mu_{X}=\mu_{Y} ↔︎  \mu_{X}-\mu_{Y}=0 $$ 
대립가설은 
$$ H_{1}: \mu_{X} \neq \mu_{Y} ↔︎  \mu_{X}-\mu_{Y}\neq0 $$ 

입니다. 두 개의 차이를 0으로 보는 거죠. 그래야 차이의 분포를 가정할 수 있습니다. 차이의 분포의 평균이 0이라는 뭐 그런 겁니다. 

그러면, 각각의 표본평균의 평균은 중심극한정리에 의해서 $\bar{X}$ 는 $\mathcal{N}\left(\mu_{X}, \frac{\sigma_{X}^{2}}{n_{X}} \right)$, $\bar{Y}$ 는 $\mathcal{N}\left(\mu_{Y}, \frac{\sigma_{Y}^{2}}{n_{Y}} \right)$ 의 분포를 따릅니다. 당연하게도. 

이때, $\bar{X}$ 와 $\bar{Y}$ 가 독립이면 복잡한 과정을 거쳐서. 라고 하기에는 꽤나 간단하군요. 놀랄 것이 없는 것이 평균은 두 개 그룹의 차이가 되고, 조금 놀랄 만한 것은 분산은 두개 그룹의 차가 아니고, 합이 됩니다. 왜냐하면 분산은 항상 0 이상의 값이고, 각각의 변화가 합쳐지니까 더 커집니다. 기억해 두세요.

그러니까 결국, 표준오차가 합이 되는 이런 특성을 갖습니다. 
$$
\bar{X}-\bar{Y} \sim \mathcal{N}\left(\mu_{X}-\mu_{Y}, \frac{\sigma_{X}^{2}}{n_{X}}+\frac{\sigma_{Y}^{2}}{n_{Y}}\right)
$$


그러면, 이걸 Normalization을 하게 되면 다음과 같이 됩니다. 
$$
Z=\frac{(\bar{X}-\bar{Y})-\left(\mu_{X}-\mu_{Y}\right)}{\sqrt{\left(\frac{\sigma_X  ^2}{n_{X}}+\frac{\sigma_Y ^2}{n_{Y}}\right)}} \sim \mathcal{N}(0,1)
$$

어흠, 뭔가 두 개 그룹의 차이를 분포로 나타낼 수 있을 것만 같은 예감이 있네요. 

사실 이제 와서 하는 말이지만, Independet Samples t test는 사실 평균추정과 아주 똑같은 것인데요, 한마디로 평균을 추정했을 때의 이야기는 

이렇거든요. 그러면 이것을 평균의 차이로 대치해서 보면 

어멋! 똑같네요? 사실은 평균의 차이에 대하여 95% 신뢰구간을 추정한 후에 5% 유의수준에 의하여 Null Hypothesis를 판단하는 것과 똑같은 이야기입니다. 

이때 중요한 조건을 하나 걸고서 분산의 수식을 간단하게 만드는데 그것이 바로, 등분산일 경우!!이라는 것을 합니다. 그러니까 등분산의 경우, 등분산 가정이라고 부르니까 늘 등분산이어야만 검정이 가능할 것 같지만, 그렇지 않고, 원래 분산이 달라도 복잡하게 검정을 할 수 있지만, 등분산의 경우에는 매우 Simple하게 검정할 수가 있다는 뜻일 뿐입니다. 결국 등분산일 때와 이분산일 때 표준오차가 더 간단한가, 더 복잡 한가 일뿐입니다. 

그러면 당연히 등분산일 경우에는 간단하게
$$\sigma_X = \sigma_Y = \sigma$$ 
로 간략화할 수 있겠습니다요.

$$
Z=\frac{(\bar{X}-\bar{Y})-\left(\mu_{X}-\mu_{Y}\right)}{\sqrt{\left(\frac{1}{n_{X}}+\frac{1}{n_{Y}}\right) \sigma^{2}}} \sim \mathcal{N}(0,1)
$$

그러면 짜잔~! 이렇게 Gaussian으로 예쁘게 만들 수 있겠습니다. 그런데!! 여기에서 또 한 번 우리는 모분산을 모르니까요. 이 모분산 대신에 표본분산을 사용해야 할 때가 도래했습니다.  

표본분산으로 대체한다면 이것은 $n_X + n_Y -2$ 자유도의 t분포를 따르게 된다구요. 자유도는 $\left((n_X - 1) + (n_Y - 1)\right)$ 와 같이 두 그룹의 자유도의 합이 전체 자유도가 됩니다. 이건 왜 그렇죠? 평균을 두 번 구했으니까 당연히 평균 한 개씩 -2가 빠지게 됩니다. 어떻게 해서 이렇게 구하는지 원리를 기억하고 있겠지요?

자, 그러면 이 와중에 t분포를 쓰게 되면 어떻게 되는가!
$$
Z→T=\frac{(\bar{X}-\bar{Y})-\left(\mu_{X}-\mu_{Y}\right)}{\sqrt{\left(\frac{1}{n_{X}}+\frac{1}{n_{Y}}\right) s^{2}}} \sim t\left(n_{X}+n_{Y}-2\right)
$$

이제 우리는 두 개 집단의 평균의 차이를 t 분포로 나타낼 수 있게 되었습니다. 그런데, 아무리 등분산이다 어쩌다 해도 두 분포의 차이에 대한 통합된 표본분산(불편분산)은 어떻게 계산하지요? 와. 다 왔는데 이게 무슨 꼴이람. 그렇지만 뭐 간단해요.

$$
\begin{aligned}
S_{\text {unbiased-pooled}}^{2} &=\frac{\sum_{i}^{n_{X}}\left(X_{i}-\bar{X}\right)^{2}+\sum_{i}^{n_{X}}\left(Y_{i}-\bar{Y}\right)^{2}}{\left(n_{X}-1\right)+\left(n_{Y}-1\right)} \\
&=\frac{\left(n_{X}-1\right) S_{X}+\left(n_{Y}-1\right) S_{Y}}{n_{X}+n_{Y}-2}
\end{aligned}
$$

불편분산은 각 그룹의 평균으로부터의 변화량의 합을 자유도로 나눈다고 보면 되겠습니다. 

자, 그러면 T분포에 불편분산을 한번 넣어볼까요?

$$T=\cfrac{(\bar{X}-\bar{Y})-\left(\mu_{X}-\mu_{Y}\right)}{\sqrt{\left(\frac{1}{n_{X}}+\frac{1}{n_{Y}}\right) S_{unbiased-pooled}^{2}}} \sim t\left(n_{X}+n_{Y}-2\right)$$

이게 최종 검정을 위한 식입니다. 이게 나왔으니 검정의 과정은 똑같습니다. 휴

이제까지는 Null Hypotesis가 $\mu_X - \mu_Y = 0 $를 고려 안 하고 전개했는데, 이걸 고려하게 되면 검정 통계량이 되겠지요! 모두 0으로 대치하는 것이죠.

그런데, 중간에 우리가 등분산인 경우라고 생각하고 간단하게 만들었잖아요? 그러면 두 개 그룹의 분산이 다르면 어떻게 해야 하나요? 이때가 바로 또하나의 난관이긴 하지만 결국 복잡할 뿐이잖아요? 두개 그룹의 분산이 다를 때는 이미 언급한 형태로  불편분산을 그대로 계산하는 하는 것을 Welch's t test라고 하는데.. 잠시만요. 이 부분은 그런 게 있다 정도로 생각해 주세요. 

그럼, 당연히 예를 보면 훨씬 더 쉽게 다가올 테니, 예를 한번 봅시다. 이제부터는 손으로 푸는 것이 어려우니까, 컴퓨터의 힘을 빌려서 하는 것이 좋다고 생각합니다. 원리를 알면 컴퓨터의 힘을 빌리는 것이 매우 좋은 선택입니다. 

자, 예를 들여, 
귀무가설은 남학생과 여학생의 손톱 길이의 차이가 없다. 
대립가설은 남학생과 여학생의 손톱 길이의 차이가 있다. 

이런 것을 검정하려고 하는데 손톱 길이 차이가 나는 것을 뭘로 할거냐? 하면 다음과 같이 평균을 비교한다는 사실로 바꿀 줄 알아야 합니다. 

귀무가설은 남학생과 여학생의 손톱길이 평균값의 차이가 없다. 
대립가설은 남학생과 여학생의 손톱길이 평균값의 차이가 있다. 

자, 그러면 데이터가 있어야겠네요. 

남학생의 손톱 길이와, 여학생의 손톱길이 테이터를 numpy array 넣었다고 합시다. 

boy = [4.7 5.1 4.8 5.5 4.6 4.9 5. 4.6 5.1 5. 5.1 5.8 5.1 4.4 5. 5.5 5.4 4.4
 4.7 5.3 5.1 5.4 5.2 4.6 4.8 5. 4.3 4.8 4.9 5.7 5. 5.1 5.7 5.1 4.8 5.
 5.4 5.2 5. 4.4 4.9 5.4 5.4 4.9 4.5 5.1 5. 4.8 4.6 5.2]
girl = [6.1 5. 6.4 6.3 6.2 5.5 6.3 5.1 6.1 6.5 5.7 5.4 6.3 5.9 5.7 5.9 5.6 6.7
 6.4 6. 5.6 6.7 6.9 6.6 5.8 5.6 5.2 5.8 6.7 6.1 5.7 5.6 6. 5.6 5. 5.5
 6.8 7. 6.1 5.5 6. 5.5 6. 4.9 6.2 5.7 5.5 6.6 5.7 5.8]

두 개의 평균을 비교하기 전에 Box plot으로 그려보면 사실상 전체적인 데이터의 상태는 이미 눈치채게 됩니다. 그려보면, 

뭐 이런 식입니다. 딱 봐도..... 음 그렇구나 차이가 좀 나겠는 걸 하는 생각이 듭니다.  

자, 그럼 직접 검정을 해 볼까요? 일단 등분산성을 확인해 봐야 하겠습니다. 왜 체크하는가 하면 등분산이 아닐 경우에는 조금 더 복잡한 방법을 통해서 통합된 표준오차를 계산해서 검정하기 위해서 입니다. scipy에 barlett을 이용해서 등분산성을 체크할 수 있습니다. 

이때의 Null Hypothesis는 역시나 두 개의 분산이 같다. 이겠습니다

from scipy.stats import bartlett
bartlett(boy, girl)

BartlettResult(statistic=6.891726740802407, pvalue=0.008659557933880048)

결과를 보면 p value가 0.05보다 작군요. 아. 그러면 등분산성을 만족하지 못하는군요. 

이럴 때는 scipy의 independent t test에서 등분산성을 만족하지 않는 경우의 옵션을 줄 수 있습니다. 이게 Welch's t-test입니다. 

from scipy.stats import ttest_ind
ttest_ind(boy, girl, equal_var=False)

equal_var 옵션을 False로 주면 됩니다. 
(등분산일 경우에는 True로 주거나, 아예 아무것도 주지 않아도 됩니다.)

결과는

Ttest_indResult(statistic=-10.52098626754912, pvalue=3.746742613983681e-17)

이니까, p value가 유의 수준 5%라고 한다면 매우 매우 매우 작습니다. 그러면 남학생과 여학생 집단의 손톱 길이의 평균은 차이가 있다. 고 결론을 맺을 수 있겠습니다. 

scipy를 이용해서 계산해 보았지만, 실은 이런 검정은 통계 소프트웨어라면 모두 갖고 있습니다. 심지어 엑셀도 갖고 있으니까, 원리만 터득하고, p value 해석만 할 수 있다면 소프트웨어를 사용하는 것에 겁먹어선 안됩니다. 물러서지 마세요.

사실 먼저 살펴봐야 했겠지만, 등분산이 아닌 경우의 Welch's t-test의 검정통계량은 다음과 같습니다. - Ttest_indResult()로 test 할 때 equal_var=False 케이스입니다 - 

$$T=\frac{(\bar{X}-\bar{Y})}{\sqrt{\frac{S_{X}^{2}}{n_{X}}+\frac{S_{Y}^{2}}{n_{Y}}}} \sim t(\nu)$$
$\nu $는 자유도이고, [누:~]라고 읽습니다. 
$$\nu=\frac{\left(\frac{S_{X}^{2}}{n_{X}}+\frac{S_{Y}^{2}}{n_{Y}}\right)^{2}}{\frac{S_{X}^{4}}{n_{X}^{2}\left(n_{X}-1\right)}+\frac{S_{Y}^{4}}{n_{Y}^{2}\left(n_{Y}-1\right)}}$$

자, 이것이 어떻게 나온 거냐 하면 사실 너무 복잡해서 제 스타일이 아닌 관계로 잠시 고민했습니다만. 이런 걸 자꾸 궁금해하다 보면, 이런 것이 바로 통계를 어렵게 만드는 부분이니까, 이렇게 나온다는 사실만 알고 있는 것도 꽤나 의미가 있지 않은가. 하고 생각합니다. 이런 걸 외우고 있다가는 친구들과 만날 시간도 없는 사람이 되고 말 테니까요. 단, 여기에서  재미있는 사실은 이제까지 자유도가 항상 정수인 것처럼 생각했지만, 정수가 아닌 경우도 이처럼 나온다는 사실. 그런데 이 또한 통계에게 정 붙이기 어렵게 하는 부분이니까, 그냥 이런 것도 있구나 정도로 넘어가 주세요. 통계 소프트웨어를 잘 다루면 자동으로 해 주는 시대니까요 - 라고 무책임 말해도 되는 건지는 모르겠지만. 

 50개의 같은 표본크기를 가진 두 집단을 비교해 보았습니다만, 그러면 두 집단의 표본크기가 다르면 어쩌죠?라는 질문을 할 수 있는데, independent samples t-test는 두 집단의 표본크기가 달라도 검정 결과에는 영향을 미치지 않는다는 점 알고 있으면 매우 자신감이 생길 것입니다. 

보통 Gaussian에 근사한 분포를 비교하면 t분포를 이용한 t 검정을 이용하게 되고,  Gaussian을 제곱한 형태가 되면 카이스퀘어, Gaussain의 제곱의 비를 이용하는 형태가 되면 F검정을 이용한다고 보면 됩니다. 이것만 알아도 마음이 또 한 번 자신감이 생길 것입니다. 

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



댓글





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