본문 바로가기

Theory/Statistics

파이썬으로 보는 통계 (3) - t-검정

반응형

t-검정은 표본 데이터에서 t-분포를 이용해 검정통계량 $t$를 계산하고 이를 이용하여 두 그룹 간의 모평균에 차이가 있는지를 검정하는 방법입니다. t-분포를 이용해 샘플 크기가 $n$ 충분히 클 경우 모평균은 확률 $1-\alpha$ 신뢰도로 다음과 같이 추정할 수 있으며 (양측 검정의 경우), 이를 이용하여 표본평균과 모평균의 차이를 검정하고 두 그룹 간의 모평균의 차이를 검정할 수 있습니다.

1 sample t-검정

1 sample t-검정은 단일 집단에 대해 평균에 대해 가설을 검정하기 위해 사용합니다. 일반적으로 모집단의 평균이 특정 값으로 알려져있는 경우 모집단의 평균이 특정 값과 같은 지에 대해 가설을 세우고 검증하는 방법입니다.

모집단으로부터 $n$개의 표본 $X_1, ..., X_n$을 독립적으로 추출했을 때 $n$개의 표본을 사용하여 모집단의 일반적으로 알려진 평균 $\mu$인지 여부를 검정하는 방법으로서 검정을 위한 귀무가설 $H_0$은 $H_0: X_m=\mu$로 가정합니다. 

일반적으로 귀무가설은 귀류법과 궤가 같습니다. 즉, 우리가 증명하고자 하는 가설을 직접적으로 증명하기는 어려우니 반대의 경우를 정답으로 하고 오류를 도출해내는 것이죠. 따라서 $H_0: X_m=\mu$라 한다면 $X_m=\mu$의 케이스만 검증하면 됩니다. 다음과 같은 t 분포가 있을 떄,

귀무가설이 맞다면 표본 데이터에서 계산되는 $T$값은 $1-\alpha$의 확률로 $-t\leq T \leq t$에 포함되게 됩니다. 예를 들면 $\alpha=0.05$라면 $T$값은 95%의 확률로 $-t_{0.0025}$와 $t_{0.0025}$사이에 존재하게 됩니다. 이때 $t_{0.0025}$는 $P(T \leq t)$가 0.0025가 되는 $T$값입니다.

정리하면 $T$값은 $1-\alpha$의 확률로 $-t_{\alpha/2} \leq T \leq t_{\alpha/2}$ 범위에 들어가기 때문에 $T$가 이 범위 안에 있을 때는 귀무가설을 보류하고 범위 밖에 있을 때는 귀무가설을 기각하여 통계적으로 표본평균이 $\mu$와 같지 않다고 판단합니다. 이때 $\alpha$를 유의수준이라 합니다.

In python

파이썬에서는 scipy.stats 모듈의 ttest_1samp 함수로 1 sample t-검정을 수행할 수 있습니다. 예를 들어 모평균이 30으로 기대되는 데이터에 대해 다음의 코드를 수행하면 다음 결과를 얻을 수 있습니다.

from scipy.stats import ttest_1samp

data = [32, 34, 29, 29, 22, 39, 38, 37, 38, 36, 30, 26, 22, 22]
expected_mean = 30

ttest_1samp(data, expected_mean)

statistics는 $T$값이며 pvalue는 주어진 유의수준 $\alpha$에 따른 귀무가설 기각 판정 여부 값으로 $\alpha=0.05$일 경우 pvalue가 0.05보다 작으면 귀무가설을 기각하고 크다면 귀무가설 기각을 보류합니다. 이 경우에는 pvalue가 매우 크므로 귀무가설을 기각할 수 없습니다.

 

2 sample t-검정

2 sample t-검정은 2개 독립된 집단에서 표본을 수집했을 때 두 집단의 평균이 서로 일치한다라는 귀무가설을 검증하는 방법입니다. $X$ 그룹의 모평균을 $\mu_X$, $Y$ 그룹의 모평균을 $\mu_Y$이라 하면 귀무가설은 $H_0: \mu_X=\mu_Y$로 종의됩니다.

두 그룹의 모평균에 차이가 있는지의 여부를 검정하기 위해 각 그룹의 표본평균인 $X_m, Y_m$의 차이로 검정합니다. $X_m$의 분포는 $N(\mu_X, \sigma_X^2/n_X)$를 따르고 $Y_m$의 분포는 $N(\mu_Y, \sigma_Y^2/n_Y)$의 분포를 따르므로 $X_m-Y_m$은 $N(\mu_X-\mu_Y, \sigma_X^2/n_X + \sigma_Y^2/n_Y)$를 따르게 됩니다. 이때도 1 sample의 경우와 마찬가지로 정규화하여 $T$를 정의하고 모분산 대신 $S$를 정의하여 얻은 검정통계량을 통해 검정을 수행하며 $\sigma_X^2$와 $\sigma_Y^2$이 같거나 다른 경우 각각에 대해 $T$가 자유도가 다른 t 분포를 따릅니다.

In python

파이썬에서는 scipy.stats 모듈의 ttest_ind 함수를 통해 수행할 수 있습니다. 1 sample의 경우와 마찬가지로 2개의 집단에서 각각 표본을 수집했을 때 ttest_ind 함수를 통해 p-value를 확인하면 귀무가설 기각 여부를 판단할 수 있습니다.

from scipy.stats import ttest_ind

statistics, pvalue = ttest_ind(data1, data2)

 

Paired t-검정

Paired t-검정은 두 집단 차이를 분석하는 방법으로 위의 2 sample t-검정은 독립된 두 집단에 대한 검정이라면, Paired t-검정은 서로 대응되는 집단간 차이를 분석하는 방법입니다. 

예를 들어 고혈압 환자를 대상으로 새로 개발한 약물이 효과가 있는지 알아보는 연구가 있다면 약물이 복용하기 전과 후의 집단이 존재하게 됩니다. 이런 경우에는 약물 복용 전 집단과 약물 복용 후 집단은 서로 독립이 아니라 연관되어 있으므로 대응 관계를 이루게 됩니다. 

Paired t-검정은 각 집단에서 측정된 표본들인 $X_a, X_b$에 대해 $X_a - X_b$에 대한 $T$를 정의합니다. 즉, 집단 A와 B의 차이의 표본평균과 표준편차를 구하고 $X_a - X_b$에 대해 정규화하여 $T$ 검정통계량을 구하여 검정을 수행합니다. 파이썬에서는 scipy.stats 모듈의 ttest_rel 함수를 이용해서 검정할 수 있습니다.

from scipy.stats ipmort ttest_rel
반응형