양치기 소년과 늑대 이야기로 알아보는 1종/2종 오류와 p-value
양치기 소년과 늑대 이야기를 통해 1종 오류, 2종 오류, p-value의 개념을 쉽게 이해하세요. 데이터 분석가에게 필수적인 이 통계적 개념들을 재미있는 스토리와 함께 알아보고, Python 코드로 실제 적용 예시도 확인해보세요.
Feb 17, 2025

안녕하세요, 데이터 분석을 공부하고 있는 예비 데이터 분석가입니다. 오늘은 통계학의 핵심 개념인 1종/2종 오류와 p-value를 재미있는 '양치기 소년과 늑대' 이야기를 통해 알아보겠습니다.
글 3문장 요약
- 1종 오류는 양치기 소년이 거짓으로 "늑대다!"라고 외쳤을 때 마을 사람들이 달려오는 상황과 같습니다.
- 2종 오류는 실제로 늑대가 나타났을 때 마을 사람들이 소년의 말을 믿지 않는 상황과 유사합니다.
- p-value는 양치기 소년의 신뢰도를 수치화한 것으로 볼 수 있습니다.
데이터 분석에 1종/2종 오류, p-value를 알아야 하는 이유
데이터 분석가에게 이 개념들은 매우 중요합니다:
- 정확한 의사결정 지원: 분석 결과의 신뢰성을 평가하고 해석하는 데 필수적입니다.
- 실험 설계 능력 향상: 적절한 표본 크기와 유의수준을 결정하는 데 도움이 됩니다.
- 비용-효과 분석: 오류의 종류에 따른 비용을 고려해 효율적인 의사결정을 지원합니다.
양치기 소년 이야기로 알아보는 1종/2종 오류와 p-value
1종 오류 : ‘우연’을 ‘사실’로 판단하는 의사결정 오류
2종 오류 : ‘사실’을 ‘우연’으로 판단하는 의사결정 오류, 표본크기가 작아서 발생하는 경우가 많아서 표본크기를 늘리면 해결되는 오류기도 함.
p값(p-value) :
- 내가 관찰한 사건의 ‘통계적 유의미함’을 확인하고 싶다.
- 관찰한 사건이 무작위로 일어나는 랜덤 모델을 만들어서 사건의 발생 확률을 계산한다. (보통 랜덤 모델을 1,000회 실행하는 것 같다.)
- 이때 p값은 2번의 결과가 1에서 관찰한 사건과 같거나 더 극단적일 확률이다.
- p값이 높다 : 관찰한 사건은 흔하게 발생할 수 있는 일이다.
- p값이 낮다 : 관찰한 사건은 특별한 경우다.
→ 대립가설 기각 후 가설 재설정 필요.
→ 대립가설 채택 후 방식 변경
유의수준 : 가설 채택의 기준으로 삼는 값. 보통 0.05, 0.01을 사용한다고 함. 절대적인 값은 아니며 상황에 따라 더 치명적인 오류를 피하기 위해 분석가가 조정할 수 있습니다.
참고. 0.05라는 암묵적인 유의수준은 통계학자 로널드 피셔가 1925년 발표한 자료에서 주장한 뒤로 계속 사용하고 있습니다. 최근 이 0.05라는 값에 대해 재논의 중이라고 합니다.
1종 오류: 거짓 경보 (False Alarm)
양치기 소년이 거짓으로 "늑대다!"라고 외쳤을 때, 마을 사람들이 달려오는 상황입니다.
- 가설: "늑대가 없다" (귀무가설)
- 1종 오류: 늑대가 없는데 마을 사람들이 달려옴 (귀무가설을 잘못 기각)
2종 오류: 미감지 (Miss)
실제로 늑대가 나타났을 때, 마을 사람들이 소년의 말을 믿지 않는 상황입니다.
- 가설: "늑대가 없다" (귀무가설)
- 2종 오류: 늑대가 있는데 마을 사람들이 오지 않음 (귀무가설을 잘못 채택)
p-value
p-value는 양치기 소년의 신뢰도를 수치화한 것으로 볼 수 있습니다. 소년이 "늑대다!"라고 외쳤을 때, 그 말이 사실일 확률을 나타냅니다.
- p-value가 낮을수록: 소년의 말을 믿을 가능성이 높아짐
- p-value가 높을수록: 소년의 말을 의심할 가능성이 높아짐
Python 코드 기반의 실제 적용 예시
pythonimport numpy as np
from scipy import stats
def simulate_boy_cries_wolf(n_days=1000, wolf_probability=0.1, villagers_threshold=0.05):
type1_errors = 0
type2_errors = 0
for _ in range(n_days):
wolf_present = np.random.random() < wolf_probability
boy_cries = np.random.random() < 0.5 # 소년이 50% 확률로 "늑대다!"라고 외침
p_value = stats.bernoulli(0.5).pmf(1) # 간단한 예시를 위해 고정 p-value 사용
villagers_come = p_value < villagers_threshold
if not wolf_present and villagers_come:
type1_errors += 1
elif wolf_present and not villagers_come:
type2_errors += 1
return type1_errors / n_days, type2_errors / n_days
type1_rate, type2_rate = simulate_boy_cries_wolf()
print(f"1종 오류 비율: {type1_rate:.4f}")
print(f"2종 오류 비율: {type2_rate:.4f}")
이 코드는 양치기 소년 시나리오를 시뮬레이션하여 1종 오류와 2종 오류의 비율을 계산합니다.
마을사람들이 의사결정을 한다면?
이 비율과 오류 발생시 소모하는 비용을 곱하여 의사결정을 할 수 있습니다.
- 1종 오류 비율 * 오류 발생 시 소모하는 비용 = 1종 오류 기대 소모 비용
- 2종 오류 비율 * 오류 발생시 소모하는 비용 = 2종 오류 기대 소모 비용
기대 소모 비용이 더 높은 오류가 줄어들도록 소년의 외침에 마을사람들이 오기로 결정하는 수준(=유의수준)을 조절합니다.
예를들어, 늑대가 1마리 나타나서 양 1마리 만을 잡아간다면 마을 사람들이 오지 않는 게 낫습니다. 마을사람들이 오면 마을에서 목장까지 오는 비용, 늑대와 싸우다가 죽거나 다치는 비용, 일을 멈추는 동안 발생하는 경제적 손실이 발생합니다.
하지만 늑대가 여러마리 나타나서 양 여러마리를 죽이거나 잡아가서 손실이 크다면 마을사람들이 와야합니다.
따라서 통상적으로 ‘1종 오류가 더 위험하다. 1종 오류를 줄여야 한다.’고 설명하지만 상황과 분석가의 의도에 따라 조심할 오류가 달라집니다.
결론
1종/2종 오류와 p-value는 데이터 분석가의 필수 도구입니다. 양치기 소년 이야기를 통해 이 개념들을 이해하면, 실제 데이터 분석 상황에서도 더 직관적으로 적용할 수 있습니다.
이러한 개념들을 올바르게 이해하고 적용함으로써:
- 더 신뢰할 수 있는 분석 결과를 제공할 수 있습니다.
- 실험 설계의 질을 높일 수 있습니다.
- 비즈니스 의사결정을 효과적으로 지원할 수 있습니다.
앞으로도 통계적 개념을 실무에 적용하는 방법에 대해 지속적으로 학습하고 공유하겠습니다. 여러분도 데이터를 분석할 때마다 양치기 소년을 떠올리며, 1종 오류, 2종 오류, p-value의 중요성을 항상 기억하시기 바랍니다!
#데이터분석 #통계학 #가설검정 #Python #DataScience
Share article