가설검정의 핵심 개념
차 맛 감별 사건
- 1920년대 영국의 로담스테드 농업 연구소. 연구원들이 모여 오후의 차를 마시던 시간
- 조류학자 뮤리엘 브리스톨(Muriel Bristol) 박사의 주장
- "우유를 먼저 붓고 차를 따른 것과 차를 먼저 따르고 우유를 부은 것은 맛이 다르다. 나는 구별할 수 있다."
- 다른 연구원들은 섞이면 똑같다며 반신반의
- 그 자리에 있던 통계학자 로널드 피셔(Ronald Fisher)의 질문
- "정말 구별하는 것인지, 우연히 맞히는 것인지 어떻게 확인할 수 있을까?"
- 피셔는 이 일을 바탕으로 실험을 설계하고, 1935년 책 『실험 설계(The Design of Experiments)』에 소개
실험 설계
- 차 8잔 준비
- 잔마다 동전을 던져 우유를 먼저 부을지, 차를 먼저 따를지 정함
- 한 잔씩 맛보고 잔마다 "우유 먼저" 또는 "차 먼저"라고 답함
- 질문: 8잔 중 몇 잔을 맞혀야 "구별할 수 있다"고 인정할까?
우연히 맞힐 확률
- 맛을 전혀 구별하지 못하고 아무렇게나 답한다고 가정
- 이 경우 한 잔을 맞힐 확률은 50%
- 각 잔은 서로 독립. 동전 던지기를 8번 하는 것과 같음
- 8잔의 답이 나올 수 있는 모든 경우의 수
from math import comb
2 ** 8 # 잔마다 맞힘/틀림 2가지
실행 결과
256
- 맞힌 잔 수별 경우의 수
- 8잔 중 맞힌 k잔을 고르는 방법:
comb(8, k) - 전체 256가지로 나누면 확률
- 8잔 중 맞힌 k잔을 고르는 방법:
- 누적 확률(이상): 그 잔 수 이상을 맞힐 확률. 8잔부터 거꾸로 확률을 더해 계산
- 예: 7잔 이상 = 7잔 또는 8잔을 맞힐 확률
import pandas as pd
table = pd.DataFrame({"맞힌 잔 수": range(9)})
table["경우의 수"] = [comb(8, k) for k in table["맞힌 잔 수"]]
table["확률"] = table["경우의 수"] / 2 ** 8
table["누적 확률(이상)"] = table["확률"][::-1].cumsum() # 8잔부터 거꾸로 더하기
table
실행 결과
맞힌 잔 수 경우의 수 확률 누적 확률(이상)
0 0 1 0.003906 1.000000
1 1 8 0.031250 0.996094
2 2 28 0.109375 0.964844
3 3 56 0.218750 0.855469
4 4 70 0.273438 0.636719
5 5 56 0.218750 0.363281
6 6 28 0.109375 0.144531
7 7 8 0.031250 0.035156
8 8 1 0.003906 0.003906
가설검정의 용어로 정리
- 귀무가설(H0): 맛을 구별하지 못한다. 50% 확률로 아무렇게나 고른다
- 대립가설(H1): 맛을 구별할 수 있다
- p-value: 귀무가설이 맞다고 가정할 때, 지금 결과 이상으로 잘 맞힐 확률
- 유의수준(α): p-value가 이보다 작으면 우연으로 보기 어렵다고 판단하는 기준. 보통 0.05
| 결과 | p-value | 판단 |
|---|---|---|
| 8잔 모두 맞힘 | 1/256 ≈ 0.004 | 0.05보다 작음. 귀무가설 기각. 구별할 수 있다고 판단 |
| 7잔 이상 맞힘 | 9/256 ≈ 0.035 | 0.05보다 작음. 귀무가설 기각. 구별할 수 있다고 판단 |
| 6잔 이상 맞힘 | 37/256 ≈ 0.145 | 0.05 이상. 귀무가설 기각 실패. 우연으로도 설명 가능 |
- 이 실험에서는 7잔 이상 맞히면 구별할 수 있다고 판단
- 6잔만 맞혀서 기각에 실패하더라도, 구별하지 못한다는 것이 증명된 것은 아님. 구별한다고 말할 근거가 부족하다는 뜻
가설검정의 흐름
Mermaid 다이어그램 원문
flowchart LR
A["귀무가설 세우기<br/>(구별 못한다)"] --> B["데이터 모으기<br/>(8잔 맛보기)"]
B --> C["p-value 계산<br/>(우연히 이만큼 맞힐 확률)"]
C --> D{"p-value < 0.05"}
D -- "예" --> E["귀무가설 기각"]
D -- "아니오" --> F["귀무가설 기각 실패"]대화형 다이어그램을 불러오기 전에는 원문으로 표시됩니다.
- "구별할 수 있다"를 직접 증명하는 대신 "구별 못한다"를 세우고, 데이터가 그 가정과 얼마나 맞지 않는지 확인
- 다른 가설검정도 같은 흐름. 계산 방법만 달라짐
두 가지 오류
- 1종 오류(false alarm, 거짓 경보): 귀무가설이 참인데, 우연히 기각 범위를 넘는 경우
- 유의수준 α는 1종 오류를 어느 정도까지 허용할지 정한 값
- 2종 오류(miss, 놓침): 귀무가설이 거짓인데, 우연히 기각 범위를 넘지 못하는 경우
- 예: 실제로는 80%의 확률로 구분할 수 있는데, 8잔 중에 6잔만 맞힘
퀴즈
차 맛 감별 실험에서 귀무가설로 알맞은 것은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.