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-테스트는 어떻게 하는거지?

과정

  1. 귀무가설 설정
  2. 대안가설 설정
  3. 신뢰도 설정 : 모수가 신뢰구간 안에 포함될 확률 (보통 95, 99% 등을 사용)※ 신뢰도 95%의 의미
    = 모수가 신뢰 구간 안에 포함될 확률이 95%
    = 귀무가설이 틀렸지만 우연히 성립할 확률이 5%
  4. P-value 확인P-value는 주어진 가설에 대해서 "얼마나 근거가 있는지"에 대한 값을 0과 1사이의 값으로 나타낸 지표이며
    P-value가 낮다는 것은, 귀무가설이 틀렸을 확률이 높다는 뜻이다.
  5. 이후 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

+ Recent posts