통계 초보자를 위한 카이제곱 적합도 검정 가이드: 분포는 이론과 일치할까?
카이제곱 적합도 검정이란 무엇인가?
카이제곱 적합도 검정(Chi-square goodness-of-fit test)은
k개의 범주(또는 계급)를 가지는 하나의 요인에 대해, 관측된 데이터의 분포가 특정 이론적 분포를 따르는지를 검정하는 통계적 방법입니다.
즉, 실제로 관측된 값들이 우리가 가정한 분포와 얼마나 잘 맞는지를 확인하기 위한 검정입니다.
이 검정을 통해 다음과 같은 질문에 답할 수 있습니다.
- 관측된 데이터가 특정 비율 분포를 따른다고 볼 수 있을까?
- 모집단 분포에 대한 가정이 관측 자료와 일치할까?
- 이론적으로 기대한 분포가 현실에서도 유지되고 있을까?
언제 카이제곱 적합도 검정을 사용할까?
카이제곱 적합도 검정은 다음과 같은 상황에서 사용됩니다.
- 분석 대상이 범주형 데이터일 때
- 하나의 변수(요인)에 여러 범주가 존재할 때
- 각 범주에 대해 이론적으로 기대되는 비율 또는 빈도가 있을 때
- 관측값과 기대값을 비교하고자 할 때
이러한 이유로 품질 관리, 마케팅 분석, 사회과학 연구 등 다양한 분야에서 활용됩니다.
가설 설정
카이제곱 적합도 검정의 가설은 다음과 같이 설정됩니다.
- 귀무가설(H0): 실제 분포와 이론적 분포 간에는 차이가 없다.
- 대립가설(H1): 실제 분포와 이론적 분포 간에는 차이가 있다.
즉, 귀무가설은
“관측된 데이터가 이론적으로 가정한 분포를 따른다”는 주장입니다.
예시로 이해해보기
어떤 회사에서 세 가지 제품 A, B, C의 보유 대수를 조사한 결과는 다음과 같다고 가정해봅시다.
- A: 324대
- B: 78대
- C: 261대
한편, 회사의 내부 자료에 따르면
제품 판매 비율은 다음과 같다고 알려져 있습니다.
- A: 56%
- B: 12%
- C: 32%
전체 보유 대수가 663대라면,
이 비율에 따른 기대 보유 대수는 다음과 같이 계산할 수 있습니다.
- A: 371대
- B: 80대
- C: 212대
이제 관측값과 기대값이 통계적으로 유의미하게 다른지 검정해봅니다.
Python 코드 예시
아래는 SciPy를 사용하여 카이제곱 적합도 검정을 수행하는 예시 코드입니다.
xo = [324, 78, 261] # 관측값
xe = [371, 80, 212] # 기대값
from scipy.stats import chisquare
result = chisquare(xo, f_exp=xe)
print(result)
출력 결과에는 카이제곱 통계량과 p-value가 포함됩니다.
결과 해석 방법
검정 결과의 p-value를 기준으로 다음과 같이 해석합니다.
-
p-value ≥ 0.05
→ 관측된 분포와 이론적 분포 간의 차이가 통계적으로 유의하지 않음
→ 귀무가설을 기각할 수 없음 -
p-value < 0.05
→ 관측된 분포와 이론적 분포 간의 차이가 통계적으로 유의함
→ 귀무가설을 기각
즉, p-value가 충분히 작다면
“이 데이터는 가정한 이론적 분포를 따른다고 보기 어렵다”고 판단합니다.
사용할 때 주의할 점
카이제곱 적합도 검정을 사용할 때는 다음 사항을 함께 고려해야 합니다.
- 각 범주의 기대 빈도는 일반적으로 5 이상이 권장됨
- 범주 간 상호 독립성이 보장되어야 함
- 표본 크기가 너무 작으면 결과 해석이 어려울 수 있음
이러한 조건이 충족되지 않는 경우에는
다른 검정 방법을 고려해야 할 수도 있습니다.
마무리하며
카이제곱 적합도 검정은
관측된 분포가 이론적 가정과 얼마나 잘 맞는지를 평가하는 기본적인 통계 도구입니다.
범주형 데이터 분석의 출발점으로,
이 검정을 이해하면 다양한 데이터 분포를 보다 체계적으로 해석할 수 있습니다.