본문 바로가기
진짜 평균이 그래도 되나. t분포 - One Sample t-test -

일단 본격적인 검정의 시작으로 가장 간단한 진짜 평균이 그런가를 검정하는 것을 해 보겠습니다. 통계란 모름지기 평균에 대한 탐구가 가장 우선이어야 하고 이를 게을리하면 안 되니까, 이것부터 잘해 두면 좋겠군요.

t 분포는 모분산을 모를 때, Gaussian을 대용해서 실제 표본으로 통계적인 접근을 할 수 있는 분포라는 점을 잘 생각하면 좋겠습니다. 여기에서 평균이라는 말과 Gaussian이라는 단어가 나왔다면 제일 먼저 생각나야 하는 것이 있겠죠. 바로 중심극한정리 입니다. 꼭 기억하셔야 하는 것이 중심극한정리는 모분포가 어떤 것이라도 표본의 평균의 분포만은 Gaussian으로 분포한다는 그런 것입니다. -여러가지 조건이 있긴 하지만요-

가장 간단한 Gaussian을 이용한 z 검정을 이용해서 검정을 하는 과정을 한번 보면 아, 검정이 실제적으로는 이런 것이구나 하는 느낌이 올 거라 생각합니다. - 사실 이미 한번 봤지만 - t 검정을 할 때도 나머지는 다 똑같습니다. 
t검정을 하지 않고, 어느 정도 z검정을 사용할 수 있는 환경이 있는데, 
⓵ 평균을 내기 위해 한번에 추출하는 표본 크기가 30보다 큼 
⓶ 데이터가 서로 독립적이고, 각각의 데이터는 모집단에서 동일한 확률로 선택되야 함 (i.i.d)
⓷ 또는 모분포가 정규분포 임 (그러나, 평균을 내기 위한 표본크기가 30보다 큰 대규모 표본에서는 중요하지 않음)

어때요, 어디선가 많이 본 조건 아닌가요? 이것은 중심극한정리의 조건과 꼭 닮았군요! 이런 조건을 만족하면 중심극한정리를 이용해서 z 검정을 해 볼 수 있겠습니다. 평균에 관한 것이라면 이런 조건을 만족하면 모두 z검정을 할 수 있습니다. 

스토리는 z검정을 해 보고, 같은 방식으로 t검정을 해 보는 것을 오늘의 코스요리로 생각해 보겠습니다. 자, z 검정을 먼저 해 보겠습니다.

망설이지 말고, 간단한 예를 가지고 이야기해 보는 것으로 이야기의 시작. 

지난 오랜 기간 동안 포도내꺼 과수원에서 매년 100개 포도의 알 수를 적어 두었는데, 전체적으로 평균 75알 표준편차는 15알이더라고요. 올해 포도내꺼 과수원에서 100개의 포도를 따서 알 수를 확인하였더니 평균 알 수가 79.5알이었습니다. 그러면 평균 포도알 수가 75개 이어도 될지 유의수준 5%에서 검정을 해 보시죠.

자, 우리 여기에서 Null Hypothesis와 Alternative Hypothesis를 먼저 정해봐요.

일단, Null Hypothesis는 μ=75, Alternative Hypothesis는 μ≠75 로 정해야 확률분포를 가정할 수 있겠군요. 이때 확률분포는 중심극한정리에 의해 Gaussian이고, 표준편차 즉, 표준오차는 $\dfrac{\sigma}{\sqrt{n}} = \dfrac{15}{\sqrt{100}}$입니다. (누군가 이것은 표준오차가 아니라고 말하기도 할 텐데 모표본편차가 포함되어 있기 때문이긴 하죠. 그래도 표준오차처럼 취급해야 조금은 일관성 있게 현상을 바라볼 수 있으니까 표준오차와 진배없다 정도로 생각해 주세요.)

자, 그러면 모든 준비가 완료되었습니다. 조건을 기반으로 문제를 들여다 보면, 

⓵ Null Hypothesis에 의한 확률분포를 구성! 이것은 Gaussian이군요!
⓶ Null Hypothesis의 95% 신뢰구간을 추정해 보면, $75±1.96\cdot\dfrac{15}{\sqrt{100}}→ (72.06 ,77.94) $ 군요. 
⓷ 79.5알을 목격!

지금 목격한 것이 95%채택역 안에 포함되어 있지 않군요. 일반적인(95%) 추정구간 내에 있지 않네요. 이렇다는 이야기는 대부분의 경우 95%는 이 구간에서 관측되는데, 관측되기 꽤 어려운 경우가 되겠군요. 하! 그러니까 아, 이거 이거 좀 상당히(Significant) 특이 케이스네요.

그러면, 이것을 검정의 관점에서 본다면 채택역을 제외한 나머지 구간을 보게 되는데, 이것이 유의수준 α 5%에 속하는 기각역에 있는지를 보는 것입니다. 그것이 검정의 가장 중요한 스텝입니다. 

잘 보니까, 79.5알을 목격한 경우에는 표준화된 z 값은 $\dfrac{79.5-75}{\cfrac{15}{\sqrt{100}}}=3$  입니다. 참고로 이때의 p value를 계산하면 0.00135입니다. 

⓸ 양측검정이니까, 양쪽 사이드에 기각역 2.5%를 설정하고요, 
⓹ 79.5알을 표준화한 z의 값은 3이므로 p value를 구하면 0.00135 = 0.135%입니다. 양측검정이니까 z=-3부터 -∞까지의 값도 0.135%일테니 두 개의 합은 0.27%입니다.

요컨대, 귀무가설이 참이라는 가정아래서 (평균이 75알) 79.5알이라는 것이 관측/목격될 확률이 매우 낮은 데도 불구하고 관측되었기 때문에, 귀무가설을 기각할 수 있습니다. 즉, 75알이 평균이라는 귀무가설을 기각한다!라고 소리치며 이야기하는 것이죠.

자, 그러면 이번에는 이 문제를 t검정으로 풀어볼까 합니다. (어떤 경우가 t검정을 해야 하냐면, 모분산을 모르니까, 모분산 대신에 표본분산을 이용하는 경우, 모분포가 Gaussian이거나, 중심극한정리를 적용할 수 있는 n≥30인 경우라는 점.)

지난 오랜 기간 동안 포도포도 과수원에서 포도의 평균 알 수를 적어 두었는데, 평균 75알이더라고요. 올해 포도내꺼 과수원에서 20개의 포도를 따서 알 수를 확인하였더니 평균 알 수가 79.5알이었고, 표본의 표준편차는 7알이었습니다 (표본표준편차 7알은 n-1자유도=19로 계산한 것입니다). 평균 알 수가 75알이어도 될지 유의수준 5%에서 검정하려면 어떻게 하면 좋을까요.

그러면, 똑같이 Null Hypothesis는 μ=75, Alternative Hypothesis는 μ≠75 로 정해야 확률분포를 가정할 수 있겠군요. 물론 이렇게 했을 때는 양측검정이고요. 이거 뭔가 기시감이 있는데.

중심극한정리에 의한 Gaussian이라고 치면 $ z = \cfrac{\bar{X}-\mu}{SE} = \cfrac{\bar{X}-\mu}{\frac{\sigma}{\sqrt{n}}}$ 이고, t분포는 닮은꼴로 unknown σ를 s로 치환하게 되면 따르는 분포이니까, $t = \cfrac{\bar{X}-\mu}{SE} = \cfrac{\bar{X}-\mu}{\frac{s}{\sqrt{n}}}$가 되겠습니다.

이때, 표준오차는 $\frac{s}{\sqrt{n}} = \frac{7}{\sqrt{20}} = 1.56$ 입니다. 

아항, 그러면 목격한 79.5알은 $t_{stat} = \frac{\bar{X}-\mu}{\frac{s}{\sqrt{n}}} = \frac{79.5-75}{\frac{7}{\sqrt{20}}} = 2.885$ (df(자유도)=20-1=19)입니다. 그러면, t분포에서 t 값이 2.885일 때의 p value를 구해보면 0.0047입니다. 0.47%네요. 매우 상당한(Significant)값이군요. 간단하게 오른쪽만 본다면 2.5%에 비해 엄청나게 작은 값이니까, 75알이 평균이라는 귀무가설을 기각한다! 는 스토리이고, 양측검정으로 보게 된다면 p value = 0.0047 2 = 0.0094 니까, 0.94%로서 α 5%에 비해서도 너무나 바깥쪽에 있어서 75알이 평균이라는 귀무가설을 기각한다! 는 같은 이야기의 반복입니다. 똑~같~습~니~다~아.  

이걸 이번엔 Python으로 한번 해볼까요?

실제 포도알 수의 데이터 입니다. 휴.

grapes = [75. 84. 73. 75. 69. 79. 84. 87. 79. 88. 90. 73. 85. 85. 75. 76. 92. 67. 77. 77.]

grapes.mean(), grapes.std(ddof=1) 는 각각 79.5, 7.007514763301947(약 7) 이고요. 

자, 이것을 1 sample t test하게 되면

stats.ttest_1samp(grapes, popmean=75) # popmeans가 모평균임 (귀무가설의 모수)
Ttest_1sampResult(statistic=2.8718614911651468, pvalue=0.009763414179591203)

 

아무래도 표준편차가 딱 7이 아닌 관계로 약간의 차이가 나지만, p value가 0.00976(0.976%)으로 손으로 풀었을 때와 비슷하게 나왔고, p value가 5%보다 많이 작아서 귀무가설을 기각할 수 있다는 이야기입니다. 

이제까지 봐서 눈치를 채셨겠지만,
검정이라는 것은 모두 똑같은 이야기의 반복입니다. 

㉠ 분포를 가정할 수 있도록 Null Hypothesis를 정하고, 
㉡ 유의수준을 정하고, 
㉢ 관측값이 Null Hypothesis에 의한 분포에서 어디에 위치하는지를 찾아낸 후에 
㉣ 그 위치를 이용하여 p value를 구한 후에 
㉤ 유의수준과 비교해서 Null Hypothesis를 어떻게 할지(채택할지 기각할지)를 정한다. 

이게 다에요. 증말 간단하쥬?

t분포의 테이블을 찾기 귀찮으니까, 이걸 python의 scipy 패키지로 계산할 수 있습니다. 확률을 가지고, 그때의 t 값을 구하려면 
stats.t.ppf(1-0.025, 19) = 2.093024054408263인데, 이 t값이 유의수준2.5%에서의 t 값이고, 이 값을 T로 보고, 거꾸로 t>T 일 때의 확률을 구하려면 stats.t.sf(abs(T), 19) = 0.025 (2.5%) 이런 식으로 구할 수 있습니다. 엑셀에서 하려면 양측이기 때문에 T.INV.2T(0.025, 19) 이렇게 하면 될 것 같은데 실제로는 2T가 양측을 의미하기 때문에 T.INV.2T(0.05, 19)로 구하면 됩니다. 
사실상 실무적으로 t 테이블을 보면서 확률을 구할 때에는 모든 값이 테이블에 나와 있는 것이 아니기 때문에 테이블에 있는 값들을 근거로 어느 범위에 있다 정도로 밖에 설명할 수 없는 경우가 있습니다

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



댓글





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