T-테스트(Student's T-test)
T-테스트가 뭐지?
t-테스트(t-test) 또는 t-검정 또는 스튜던트 t-테스트(Student's t-test)는 검정통계량이 귀무가설 하에서 t-분포를 따르는 통계적 가설 검정법이다.
- 위키백과
단순하게 말하면 '두 집단의 평균값이 유의미한 차이가 있는지 알아보는 방법'이다.
T-테스트는 One Sample T-test와 Two Sample T-test가 있다.
테스트 결과 두 값이 같을지 다를지 혹은 둘 중 하나가 더 큰지 알아보려면 각각 One-tailed T-test와 Two-tailed T-test를 사용한다.
T-테스트는 어떻게 하는거지?
과정
- 귀무가설 설정
- 대안가설 설정
- 신뢰도 설정 : 모수가 신뢰구간 안에 포함될 확률 (보통 95, 99% 등을 사용)※ 신뢰도 95%의 의미
= 모수가 신뢰 구간 안에 포함될 확률이 95%
= 귀무가설이 틀렸지만 우연히 성립할 확률이 5% - P-value 확인P-value는 주어진 가설에 대해서 "얼마나 근거가 있는지"에 대한 값을 0과 1사이의 값으로 나타낸 지표이며
P-value가 낮다는 것은, 귀무가설이 틀렸을 확률이 높다는 뜻이다. - 이후 P-value를 바탕으로 가설에 대해 결론을 내림
One Sample T-test
- 한 표본 집단의 평균값을 특정값(주로 모집단의 평균)과 비교하는 것
- Two-tailed(Two-sided) T-test인 경우
- 귀무가설(H_0) : 두 값이 같을 것이다 $\rightarrow \overline{x} = \mu$
- 대안가설(H_a) : 두 값이 같지 않을 것이다 $\rightarrow \overline{x} \neq \mu$
- One-tailed(One-sided) T-test인 경우
- 귀무가설(H_0) : 두 값이 같을 것이다 $\rightarrow \overline{x} = \mu$
- 대안가설(H_a) : 둘 중 하나가 더 클 것이다 $\rightarrow \overline{x} > \mu$ 또는 $\overline{x} < \mu$
<예시>
# Two-tailed T-test
import numpy as np
np.random.seed(1111)
coinflips = np.random.binomial(n = 1, p = 0.5, size = 1000)
print(np.mean(coinflips))
0.509
from scipy import stats
# ttest_1samp 함수의 파라미터 1) Sample 데이터, 2) 비교하려는 값
stats.ttest_1samp(coinflips, 0.5) # coinflips의 평균값이 0.5와 같은가?
Ttest_1sampResult(statistic=0.5690174909554405, pvalue=0.5694721717152109)
∴ p값(p-value)이 0.05보다 크기 때문에 coinflips의 평균은 0.5와 같다고 볼 수 있다.
※ 참고 - One Sample One-tailed T-test를 하려면? (A와 특정값 비교 시)
- p값을 2로 나누어 준 값을 alpha(0.05)와 비교
- p값이 0.05보다 작다면 둘 중 하나가 더 크다고 볼 수 있다
- T-test 통계치가 양수라면 A가 더 크다고 볼 수 있고, 음수라면 작다고 볼 수 있다
※ 내용 추가 : ttest_1samp() 함수의 alternavive 옵션을 사용하여 One Sample One-tailed T-test 가능
# One-tailed T-test
stats.ttest_1samp(coinflips, 0.3, alternative='greater') # 작은지 알고 싶으면 'greater'를 'less'로 설정
Ttest_1sampResult(statistic=13.213850623298551, pvalue=3.7058897137725e-37)
∴ p값(p-value)이 0.05보다 작고, 통계치가 양수이기 때문에 coinflips의 평균은 0.3보다 크다고 볼 수 있다.
Two Sample T-test
- 두 표본 집단의 평균값을 비교하는 것
- Two-tailed(Two-sided) T-test인 경우
- 귀무가설(H_0) : 두 값이 같을 것이다 $\rightarrow \overline{x}_1 = \overline{x}_2$
- 대안가설(H_a) : 두 값이 같지 않을 것이다 $\rightarrow \overline{x}_1 \neq \overline{x}_2$
- One-tailed(One-sided) T-test인 경우
- 귀무가설(H_0) : 두 값이 같을 것이다 $\rightarrow \overline{x}_1 = \overline{x}_2$
- 대안가설(H_a) : 둘 중 하나가 더 클 것이다 $\rightarrow \overline{x}_1 > \overline{x}_2$ 또는 $\overline{x}_1 < \overline{x}_2$
<예시>
# Two-tailed T-test
np.random.seed(111)
coin1 = np.random.binomial(n = 1, p = 0.5, size = 500)
coin2 = np.random.binomial(n = 1, p = 0.5, size = 200)
print(np.mean(coin1))
print(np.mean(coin2))
stats.ttest_ind(coin1, coin2)
0.476
0.5
Ttest_indResult(statistic=-0.5733615498088787, pvalue=0.5665845925197331)
∴ p값(p-value)이 0.05보다 크기 때문에 두 집단의 평균은 같다고 볼 수 있다.
np.random.seed(111)
coin1 = np.random.binomial(n = 1, p = 0.6, size = 500)
coin2 = np.random.binomial(n = 1, p = 0.5, size = 200)
print(np.mean(coin1))
print(np.mean(coin2))
stats.ttest_ind(coin1, coin2)
0.604
0.5
Ttest_indResult(statistic=2.5217925052968604, pvalue=0.011897284906103034)
∴ p값(p-value)이 0.05보다 작기 때문에 두 집단의 평균은 같다고 볼 수 없다.
# One-tailed T-test
stats.ttest_ind(coin1, coin2, alternative='greater')
Ttest_indResult(statistic=2.5217925052968604, pvalue=0.005948642453051517)
∴ p값(p-value)이 0.05보다 작고 통계치가 양수이기 때문에 coin1의 평균값이 coin2의 평균값보다 크다고 볼 수 있다.
<참고 자료>
t-테스트 - 위키백과
단측-양측 검정 - 위키백과
[통계교육] 풀어쓰는 통계 - t 검정(t-test)이란?
[ 통계, 처음입니다] 헷갈리는 양측검정, 단측검정 (one-tailed, two-tailed)
Hypothesis Test - T-Test
[부트캠프 #3] Statistics (1) T-test
scipy.stats.ttest_1samp - One Sample T-test
scipy.stats.mstats.ttest_ind - Two Sample T-test
'Statistics > Hypothesis Test' 카테고리의 다른 글
[Stats] 분산 분석(ANOVA, analysis of variance) (0) | 2021.10.15 |
---|---|
[Stats] 카이제곱 검정(chi-squared test) (0) | 2021.10.15 |
[Stats] P-값 (유의 확률, P-value) (0) | 2021.10.14 |