t-test와 p-value

2025. 7. 22. 13:54·Data Analysis
728x90

이건 진짜 효과일까, 아니면 그냥 우연일까?

어떤 마케팅 팀이 새로 만든 광고 배너를 테스트하고 있습니다.

A그룹은 기존 광고를, B그룹은 새 광고를 본 뒤, 클릭률을 비교했더니

B그룹의 클릭률이 더 높게 나왔습니다.

 

그럼 이 질문이 생각이 납니다:

"이건 진짜 광고 효과일까?" 아니면 단순히 운 좋게 높게 나온 걸까?

 

이럴 때 우리는 느낌이 아니라 '통계적 증거' 가 필요합니다.

바로 이럴 때 쓰는 도구가 가설검정(hypothesis testing) 입니다.

 

가설검정이란?

가설검정은 "눈에 보이는 차이"가 실제로 통계적으로 유의미한 차이인지를 판단하는 방법입니다.

 

통계에서는 두 가지 가설을 세웁니다.

가설 종류 의미
귀무가설 (H₀) 두 그룹 사이에 차이가 없다
대립가설 (H₁) 두 그룹 사이에 차이가 있다

 

예를 들어

  • H₀: 새 광고는 기존 광고보다 클릭률이 더 높지 않다.
  • H₁: 새 광고는 기존 광고보다 클릭률이 더 높다.

그리고 이제, 우리가 관측한 데이터가 이 귀무가설 하에 얼마나 "이상한 결과" 인지 측정합니다.

그 측정값이 바로 p-value입니다.

 

p-value란?

귀무가설이 맞다고 가정했을 때,
우리가 관찰한 데이터(또는 더 극단적인 데이터)가 나올 확률입니다.

p-value 해석
0.50 이런 결과는 자주 나옴 → 우연일 수 있음
0.01 이런 결과는 거의 안 나옴 → 우연이라 보기 어려움

 

기준점: 유의수준 (α = 0.05)

  • p < 0.05: 통계적으로 유의 → 차이 있다! (귀무가설 기각)
  • p ≥ 0.05: 통계적으로 유의하지 않음 → 차이 없다 or 증거 부족

그럼 어떤 검정을 써야할까요?

오늘은 두 집단의 평균을 비교하는 가장 기본적인 방법인 독립표본 t-검정 (independent t-test)을 사용합니다.

 

예를 들어

A반과 B반의 수학 점스를 비교해보도록 하겠습니다.

A반은 기존 방식으로 수업했고, B반은 새 학습법을 적용했습니다.

import numpy as np
from scipy.stats import ttest_ind

# A반, B반 점수 생성 (정규분포 기반)
np.random.seed(42)
group_a = np.random.normal(loc=75, scale=10, size=30)
group_b = np.random.normal(loc=78, scale=10, size=30)

# t-test 수행
t_stat, p_value = ttest_ind(group_a, group_b)

print(f"A반 평균: {np.mean(group_a):.2f}")
print(f"B반 평균: {np.mean(group_b):.2f}")
print(f"t-통계량: {t_stat:.2f}")
print(f"p-value: {p_value:.4f}")

 

A반 평균: 74.38
B반 평균: 78.89
t-통계량: -1.86
p-value: 0.0688

 

  • p = 0.0688  → 유의수준 0.05보다 크다 → 귀무가설 기각할 수 없다
  • 즉, B반 점수가 높아 보이지만, 단순한 유연일 수도 있음

이걸 시각화 해서 보면 다음과 같습니다.

 

중심 극한 정리(CLT)와 가설검정의 연결

  • 각각의 점수는 정규분포가 아닐 수 있어도,
  • 표본 평균은 정규분포에 근사됨 → CLT 덕분에 t-test 가능

 

마무리 요약

핵심 개념 설명
귀무가설 (H₀) 두 그룹 간 차이 없음
대립가설 (H₁) 두 그룹 간 차이 있음
p-value 이런 결과가 나올 확률
유의수준 (α) 통계적으로 유의하다고 판단하는 기준 (보통 0.05)
t-test 평균 비교용 검정 방법
CLT 연결성 표본 평균의 정규분포 근사 덕분에 가능함

 

참고 자료

  • Geron, A. Hands-On Machine Learning
  • Khan Academy: p-value와 t-test 강의
  • scipy 공식 문서: scipy.stats.ttest_ind
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Data Analysis' 카테고리의 다른 글

대응표본 t-test  (2) 2025.07.22
중심 극한 정리 (Central Limit Theorem, CLT)  (0) 2025.05.27
파생변수 생성 - Feature Engineering  (1) 2025.05.19
범주형 변수 인코딩 - Label, One-Hot, Ordinal  (0) 2025.05.19
정규화(Normalization) vs 표준화(Standardization)  (0) 2025.05.14
'Data Analysis' 카테고리의 다른 글
  • 대응표본 t-test
  • 중심 극한 정리 (Central Limit Theorem, CLT)
  • 파생변수 생성 - Feature Engineering
  • 범주형 변수 인코딩 - Label, One-Hot, Ordinal
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (160)
      • python (47)
        • selenium (4)
        • algorithm (10)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (36)
      • Data Scientist (3)
      • Data Analysis (11)
      • Computer Science (36)
      • Why? (16)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
t-test와 p-value
상단으로

티스토리툴바