통계학에서 가장 널리 쓰이는 검정 중 하나로, 두 집단의 평균 차이가 통계적으로 유의미한지 확인할 때 사용합니다.
두 그룹의 평균이 실제로 차이가 있는지를 확인하는 통계적 방법
→ “우연한 결과가 나온 것일까? 아니면 실제 평균이 다른 걸까?” 를 판단하는 도구입니다.
사용목적
- 두 그룹의 평균 차이 검정
- 표본 수가 작을 때도 사용 가능
- 정규분포(또는 근사) 가정이 필요함
T-Test 유형
유형 | 라이브러리 | 설명 | 예시 |
단일표본 T-검정 (One Sample) |
ttest_1samp(그룹,특정값) | 한 집단의 평균이 특정 값과 다른지 검정 | "우리 반 평균 수학점수는 전국 평균 70점과 다를까?" |
독립표본 T-검정 (Two Sample / Independent) |
ttest_ind(그룹1,그룹2) | 서로 다른 두 집단(예: 실험군과 대조군) 의 평균 비교 | "남학생과 여학생의 시험 평균이 다를까?" |
대응표본 T-검정 (Paired Sample) |
ttest_rel(사전,사후) | 같은 대상의 사전-사후 평균 비교 | "다이어트 전/후 체중에 차이가 있을까?" |
가설 검정: 설정한 유의 수준 (일반적으로 0.05)에서 귀무 가설 (두 집단의 평균이 같다)을 기각할 수 있는지 판단합니다.
p-값 계산: t-검정 결과로 얻은 p-값을 통해 유의성을 판단합니다. p-값이 유의 수준보다 작으면 귀무 가설을 기각하고, 두 집단 간에 유의한 차이가 있다고 결론지을 수 있습니다.
전제조건
T-Test를 수행하기 위해 다음 가정이 필요합니다:
- 정규성: 데이터가 정규분포를 따름 (샘플 수 많으면 약한 정규성도 OK)
t-검정은 일반적으로 데이터가 정규 분포를 따른다고 가정합니다. 만약 데이터가 정규 분포를 따르지 않는다면 비모수적 검정을 고려해야 합니다. - 등분산성: 두 그룹의 분산이 같아야 함 (※ 차이가 있을때 Welch’s t-test로 대체 가능)
t-검정은 일반적으로 데이터가 정규 분포를 따른다고 가정합니다. 만약 데이터가 정규 분포를 따르지 않는다면 비모수적 검정을 고려해야 합니다. - 독립성: 독립표본일 경우, 그룹 간 독립해야 함
t-통계량: 표본 평균의 차이를 표준 오차로 나눈 값으로, 두 집단 간의 차이가 얼마나 큰지를 나타냅니다.
단일표본 T-검정 (One Sample T-Test) 샘플코드
- 학생들의 수학 점수가 전국 평균 70점과 다른지 확인
from scipy import stats
# 학생 수학 점수
scores = [72, 74, 71, 69, 73, 75, 70, 68, 72, 74]
# 단일표본 t-검정 (평균이 70인지 검정)
t_stat, p_value = stats.ttest_1samp(scores, popmean=70)
print(f" 단일표본 T-검정 결과\nT 통계량: {t_stat:.3f}, p-value: {p_value:.3f}")
단일표본 T-검정 결과 T 통계량: 2.475, p-value: 0.035
해석: p-value < 0.05 → 평균이 전국 평균 70과 유의미하게 다름
독립 표본 T-검정 샘플코드
- group1과 group2의 키 차이가 있는지 확인
from scipy import stats
group1 = [180, 178, 184, 181, 179,181, 179, 185, 182, 178] # 남자 키
group2 = [170, 172, 169, 171, 168,171, 173, 168, 170, 167] # 여자 키
t_stat, p_value = stats.ttest_ind(group1, group2)
#t_stat, p_value = stats.ttest_ind(group1, group2, equal_var=False) #Welch’s t-test
print(f"T 통계량: {t_stat:.10f}, p-value: {p_value:.10f}")
T 통계량: 11.1131083172, p-value: 0.0000000017
p-value < 0.05 → 통계적으로 유의미한 차이가 있음
(p-value가 >=0.05 유의미한 차이가 없음으로 우연한 것으로 볼수 있음)
대응표본 T-검정 (Paired Sample T-Test)
같은 대상의 사전-사후 변화를 비교할 때 사용합니다.
- 학생에게 시험 전/후 성적을 비교
from scipy import stats
# 시험 전 점수
before = [60, 65, 70, 66, 72, 68, 75, 70, 64, 69]
# 시험 후 점수
after = [63, 67, 74, 69, 76, 70, 78, 72, 66, 71]
# 대응표본 t-검정
t_stat, p_value = stats.ttest_rel(before, after)
print(f"대응표본 T-검정 결과\nT 통계량: {t_stat:.10f}, p-value: {p_value:.10f}")
대응표본 T-검정 결과
T 통계량: -10.3709872746, p-value: 0.0000026402
p-value < 0.05 → 시험 후 점수에 유의미한 변화가 있음
분산 차이 기준
- 간단히 표준편차의 비율이 2배 이상이면 welch's t-test 사용
- Levene’s Test 또는 F-test로 분산 검정
import numpy as np
std1 = np.std(group1, ddof=1) #ddof=1 표본의 표준편차, ddof=0 모집단의 표준편차
std2 = np.std(group2, ddof=1)
ratio = max(std1, std2) / min(std1, std2)
print(f" 표준편차 비율: {ratio:.2f}")
from scipy.stats import levene
group1 = [80, 85, 78, 90, 88]
group2 = [70, 75, 72, 69, 65, 68, 74]
stat, p = levene(group1, group2)
print(f"Levene’s Test 결과: p-value = {p:.4f}")
해석:
- p < 0.05 → 분산이 다르다 ( Welch’s t-test 사용)
- p ≥ 0.05 → 분산이 같다고 볼 수 있다 ( 일반 t-test 가능)
'데이터분석' 카테고리의 다른 글
pandas 컬럼명 변경 (0) | 2025.04.08 |
---|---|
비모수검정 (0) | 2025.04.08 |
정규성 검정(Normality Tests) (0) | 2025.04.08 |
dfSummary vs skim (0) | 2025.04.02 |
파이썬 파일 읽는 방법(csv,json,excel,parquet,avro) (0) | 2025.04.01 |