평균값 검정에 쓰이는 T 검정의 개념에 대해 알아보고, 이를 파이썬 Scipy.stats 라이브러리를 이용해서 시연해봅니다.
[ Contents ]
1. T검정(T-test)
두 집단(또는 한 집단과 기준값) 간의 평균 차이가 통계적으로 유의한지를 검정하는 통계적 방법
표본을 통해 모집단의 평균을 추정할 때 T 검정을 합니다. 특정 값 또는 특정 집단과의 평균 차이가 어느 정도 되는지를 T 검정을 통해서 가름할 수 있습니다.
1) 가설 설정
귀무가설(H0) : 두 평균의 차이는 없다.
대립가설(H1) : 두 평균의 차이가 있다.
유의수준 5%에서 p-value 값이 0.05보다 작으면 귀무가설을 기각하여, 평균 차이가 있다고 볼 수 있습니다. 반대로 0.05보다 크면 귀무가설을 채택하여 통계적으로 차이가 없음을 입증할 수 있습니다.
2) 검정 통계량(T-통계량)
T-통계량이 클수록, 표본 평균이 비교 기준에서 더 멀리 떨어져 있다는 걸 의미합니다. 즉 귀무가설 기각 가능성이 높아지죠.
표준 오차는 s / root(n) 입니다. 표본 표준편차를 루트(표본갯수)로 나눈 값이죠.
대학교에서 통계를 배울 때에는 손 아프게 검정통계량을 일일이 계산하곤 했으나, 통계 패키지가 잘 되어 있어 실제론 그럴 필요가 없습니다. 아래에서는 파이썬 scipy.stats를 이용해서 사용해보는 예제를 다뤄봅니다.
2. 활용 예시
1) 단일표본 t-검정 (ttest_1samp)
ttest_1samp(sample_data, popmean)
단일표본 t-검정은 특정 값과 유의하게 평균이 다른지를 검정합니다.
10대 남자 청소년 키 평균이 '170' 정도 되는지, 몸무게가 '70' 정도 되는지 등 특정 값과 평균을 비교할 때 사용합니다.
from scipy.stats import ttest_1samp
import numpy as np
# 예: 샘플 직원 근속연수
sample_years = np.array([4.5, 5.2, 6.1, 4.8, 5.0, 5.3, 6.0])
popmean = 5.0
t_stat, p_val = ttest_1samp(sample_years, popmean)
print(f"t={t_stat:.3f}, p={p_val:.3f}")
위 예시는 한 회사의 직원 평균 근속연수가 5년이 맞는지를 t검정한 결과입니다.
p-value가 0.272 정도로 유의수준 0.05보다 상당히 크며, 평균 5년에 통계적으로 근접한다는 걸 알 수 있습니다.
2) 독립표본 t-검정 (ttest_ind)
ttest_ind(sample1, sample2, equal_var=True)
독립표본 t-검정은 서로 다른 두 독립된 집단 간 평균 차이를 검정합니다. 예를 들어 성별이나 나이, 지역 등에 따른 독립 집단 간의 평균 차이를 검정할 때 쓰일 수 있죠.
파라미터는 비교할 두 데이터 집단과 등분산 여부가 들어갑니다. 두 집단의 등분산 여부는 levene 등분산 검정을 통해 확인할 수 있으며, 해당 검정이 선행되야 합니다.
2025.06.17 - [Data Visualization/Python Lib] - [Scipy] 등분산 검정 Levene Test, 파이썬 통계 패키지 이용해서 검정하는 방법
[Scipy] 등분산 검정 Levene Test, 파이썬 통계 패키지 이용해서 검정하는 방법
두 집단의 분산이 같은지 검정하는 걸 등분산 검정이라고 합니다. 대표적인 등분산 검정인 Levene test를 알아보고, 이를 파이썬 패키지를 이용해서 검정해보겠습니다. [ Contents ] 1. 등분산 검정 두
star7sss.tistory.com
하지만 데이터가 클 경우에는 중심극한정리에 의해 정규성과 등분산성이 가정되므로, 보통은 equal_var=True로 검정합니다.
from scipy.stats import ttest_ind
# 예: 남녀 수학 점수 비교
male_scores = [88, 92, 85, 91, 87]
female_scores = [78, 82, 84, 79, 81]
t_stat, p_val = ttest_ind(male_scores, female_scores, equal_var=True)
print(f"t={t_stat:.3f}, p={p_val:.3f}")
위 예시는 남녀 수학 평균 점수 비교입니다. 데이터가 적긴 하지만, 눈대중으로 봐도 남자 점수가 좀 더 높죠.
그래서 p-value도 0.002 수준으로 '평균이 같다'는 귀무가설을 기각하며, 평균 차이가 크다는 걸 통계적으로 알아볼 수 있습니다.
3. 대응표본 t-검정 (ttest_rel)
ttest_rel(before, after)
대응표본은 같은 대상에 대해 두 번 측정된 값을 말하며, 그 둘의 평균 차이를 t-검정할 수 있습니다.
예시로는 다이어트 전후 체중, 학습 전후 시험 점수 평균을 비교할 수 있죠.
from scipy.stats import ttest_rel
# 예: 교육 전후 점수
before = [70, 75, 80, 72, 78]
after = [75, 78, 85, 77, 80]
t_stat, p_val = ttest_rel(before, after)
print(f"t={t_stat:.3f}, p={p_val:.3f}")
동일한 대상을 시차 혹은 어떠한 사건 전후로 측정한 평균 비교를 할 때 쓰이며, 위 검정에서는 유의수준 0.05에서 귀무가설을 기각하므로 유의미한 평균 차이가 있다고 볼 수 있습니다.
T통계량이 -이므로, 교육 후에 점수가 올랐다고 볼 수 있겠네요.
이상, 여기까지 단일표본, 독립표본, 대응표본의 T검정과 예시를 알아봤습니다.
'Data Visualization > Python Lib' 카테고리의 다른 글
[Scipy] 등분산 검정 Levene Test, 파이썬 통계 패키지 이용해서 검정하는 방법 (0) | 2025.06.17 |
---|---|
[Scipy] 정규성 검정 개념 및 shapiro를 통한 파이썬 사용 예시 알아보기 (0) | 2025.06.17 |
[Pandas] map 이용해서 데이터프레임 그룹 통계 열 추가하기 (1) | 2025.06.17 |
[Pandas] transform 이용해서 groupby 집계별 연산결과 덧붙이기 (0) | 2025.06.17 |
[Pandas] 데이터프레임 행 열마다 함수 연산 적용하는 방법 (apply 활용) (0) | 2025.06.16 |
댓글