[코드 블록] t 검정 (t-test)
t 검정은 샘플 값들의 평균을 기준으로 집단을 평가한다.
종류로는 일원 t 검정(one sample t-test)와 이원 t 검정(two samples t-test)가 있다.
일원 t 검정은 하나의 샘플 집단이 특정 평균값을 갖고있는지 판별한다.
이원 t 검정은 두개의 샘플 집단의 평균값을 서로 비교한다.
0. t-test를 활용하기 위한 조건
t-test는 분명 강력한 도구다.
하지만 아래 3가지 조건을 만족해야 사용가능하다.
* 독립성
t-test에서 비교하는 자료는 서로 독립적이어야 한다.
특정 약을 복용하기 전의 환자와 복용한 후의 환자는 독립적이지 않다.
이러한 자료는 서로 종속적이기 때문에 t-test가 불가능하다.
* 정규성
t-test에 쓰일 샘플 값들은 정규분포의 형태여야 한다.
다른 분포의 형태일 경우 t-test가 불가능하다.
파이썬에서 다음 코드를 활용하면 정규성을 검증할 수 있다.
from scipy.stats import normaltest
import numpy as np
normaltest(sample)
<결과 해석>
결과값으로 pvalue가 0.05보다 작게 나오면 sample은 normal 분포가 아니다.
반대로 pvalue가 0.05보다 크게 나오면 sample은 정규성을 지닌 것으로 볼 수 있다.
* 등분산성
등분산성은 이원 t 검정을 할 때 필요하다.
t-test에 쓰일 샘플 값들의 분산은 서로 같아야 한다.
서로 다른 샘플의 분산이 다를 경우 t-test가 불가능하다.
파이썬에서 다음 코드를 활용하면 등분산성을 검증할 수 있다.
from scipy import stats
lresult = stats.levene(sample1, sample2)
print('F-value : %.3f \np-value : %.3f' % (lresult))
<결과 해석>
결과값으로 pvalue가 0.05보다 작게 나오면 샘플들은 분포가 다르다는 의미다.
다행히도 등분산성은 보장되지 않더라도 t-test가 가능하다.
분산이 서로 다를 경우 자유도를 수정한 독립표본 t-test를 수행하면 된다.
1. t-test를 위한 코드
앞서 말한 것처럼 t-test는 일원 t 검정과 이원 t 검정이 있다.
i) 일원 t 검정 (One sample t-test)
일원 t 검정은 샘플 값들의 평균이 특정값과 유사한지 판별해준다.
주로 검증하려는 특정한 수치가 있을 때 사용한다.
예를 들어 대한민국 남성들의 평균 키가 175cm라는 것을 검증할 수 있다.
이를 위한 코드는 아래와 같다.
from scipy import stats
male_height = height.Male
result = stats.ttest_1samp(male_height, 175)
print('t statistic : %.3f \np-value : %.3f' % (result))
<결과 해석>
결과를 저장한 값에는 첫째로 t 값이, 그리고 둘째로 p 값이 저장돼있다.
p 값이 0.05라면 신뢰수준 95%하에 대한민국 남성들의 평균 키가 175cm라는 가설을 기각할 수 있다.
ii) 이원 t 검정 (Two samples t-test)
이원 t 검정은 두 샘플 값들의 평균이 서로 비슷한지 보기 위해 쓴다.
예를 들어 한국 남성들의 평균 키가 일본 남성들의 평균 키와 차이가 없는지 알 수 있다.
이를 위한 코드는 아래와 같다.
from scipy import stats
# 등분산성을 충족하는 경우
result = stats.ttest_ind(korea_male.Height, japan_male.Height)
# 등분산성을 충족하지 못하는 경우
result = stats.ttest_ind(korea_male.Height, japan_male.Height, equal_var=False)
샘플 값들의 등분산성에 따라 쓰는 코드가 달라진다.
앞서 소개했던 등분산성 검정을 먼저 수행하는 것을 잊지말자.
<결과 해석>
p 값이 0.05라면 신뢰수준 95%하에 한국 남성과 일본 남성의 평균 키가 같다는 가설을 기각할 수 있다.
iii) 쌍체표본 t 검정 (Paired t-test)
실은 t 검정이 한 종류 더 있다.
쌍체표본 t 검정은 t-test를 위한 조건 중 독립성에 어긋나는 자료를 다룬다.
아까 예를 들은 것처럼 특정 약을 복용하기 전의 환자와 복용 후의 환자를 다룰 수 있다.
이를 위한 코드는 아래와 같다.
from scipy import stats
result = stats.ttest_rel(after_med, before_med)
print('t statistic : %.3f \np-value : %.3f' % (result))
<결과 해석>
p 값이 0.05라면 신뢰수준 95%하에 약 복용 전과 복용 후에 차이가 없다는 가설을 기각할 수 있다.
모두 행복하길
-끝-