데이터분석

T-Test(T-검정)

DEDS 2025. 4. 8. 10:17
728x90
반응형

통계학에서 가장 널리 쓰이는 검정 중 하나로, 두 집단의 평균 차이가 통계적으로 유의미한지 확인할 때 사용합니다.

 

두 그룹의 평균이 실제로 차이가 있는지를 확인하는 통계적 방법
→ “우연한 결과가 나온 것일까? 아니면 실제 평균이 다른 걸까?” 를 판단하는 도구입니다.

 

사용목적

  • 두 그룹의 평균 차이 검정
  • 표본 수가 작을 때도 사용 가능
  • 정규분포(또는 근사) 가정이 필요함

 

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를 수행하기 위해 다음 가정이 필요합니다:

  1. 정규성: 데이터가 정규분포를 따름 (샘플 수 많으면 약한 정규성도 OK)
    t-검정은 일반적으로 데이터가 정규 분포를 따른다고 가정합니다. 만약 데이터가 정규 분포를 따르지 않는다면 비모수적 검정을 고려해야 합니다.
  2. 등분산성: 두 그룹의 분산이 같아야 함 (※ 차이가 있을때 Welch’s t-test로 대체 가능)
    t-검정은 일반적으로 데이터가 정규 분포를 따른다고 가정합니다. 만약 데이터가 정규 분포를 따르지 않는다면 비모수적 검정을 고려해야 합니다.
  3. 독립성: 독립표본일 경우, 그룹 간 독립해야 함

 

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 가능)

 

728x90
반응형

'데이터분석' 카테고리의 다른 글

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