본문 바로가기

AI

카이제곱 검정

통계 분석에서 빈도(Frequency) 데이터를 다룰 때 가장 많이 사용되는 카이제곱 검정(Chi-square test)에 대해 알아보겠습니다.

단순히 계산 공식만 외우는 것이 아니라, "왜 이 검정을 하는지"와 "파이썬으로 어떻게 구현하는지"를 중심으로 알아보겠습니다.


카이제곱 검정이란?

한마디로 정의하자면 "내가 예상한 빈도와 실제로 관찰된 빈도가 얼마나 다른가?"를 수치로 나타낸 것입니다.

  • 관찰도수(O): 실제로 눈앞에 나타난 데이터 (현실)
  • 기대도수(E): 이론적으로 나와야 하는 데이터 (이상향)

이 두 값의 차이가 작으면 "우연이네?"라고 넘어가고, 차이가 너무 크면 "이건 우연이 아니라 뭔가 이유가 있구나!"라고 판단하며 귀무가설기각하게 됩니다.


1. 적합도 검정 (Goodness of Fit Test)

"지금 나타난 데이터의 비율이 기존에 알려진 이론(비율)과 일치하는가?"를 확인합니다.

실전 예제: 수원 vs 부산 탕수육 전쟁

수원 사람 5명에게 '찍먹'과 '부먹' 선호도를 조사했습니다.

  • 실제 조사 결과(관찰): 찍먹 3명, 부먹 2명
  • 알려진 기준(기대): 부산 지역의 선호도는 찍먹 60%, 부먹 40%

Q. 수원 사람들의 취향은 부산과 같다고 볼 수 있을까요?

  • 귀무가설($H_0$): 수원의 선호도는 부산(60%:40%)과 동일하다.
  • 대립가설($H_1$): 수원의 선호도는 부산과 유의하게 다르다.

파이썬 코드 구현

카이제곱 검정은 비율(%)이 아닌 빈도(Count)로 계산해야 합니다.

from scipy import stats

# 1. 관찰 빈도 (수원 조사 결과)
observed = [3, 2] 

# 2. 기대 빈도 (부산 비율 0.6, 0.4를 전체 n=5에 적용)
# 5 * 0.6 = 3.0, 5 * 0.4 = 2.0
expected = [3.0, 2.0]

# 적합도 검정 실행
chi_stat, p_val = stats.chisquare(observed, expected)

print(f"카이제곱 통계량: {chi_stat}")
print(f"p-value: {p_val}")

 

만약 p-value가 0.05보다 크다면, "수원 사람들의 취향은 부산과 큰 차이가 없다"고 결론 내립니다.

(위 예시에서는 관찰과 기대가 완벽히 일치하므로 p-value가 1.0이 나옵니다.)


2. 독립성 검정 (Test of Independence)

"두 변수(A, B)가 서로 관련이 있는가? 아니면 남남인가?"를 확인합니다.

예를 들어 '성별'과 '선호하는 스마트폰 브랜드'가 관련이 있는지 궁금할 때 사용합니다.

교차표(Contingency Table) 

독립성 검정은 데이터를 표(Table) 형태로 정리하는 것이 핵심입니다.

  아이폰 갤럭시
남성 20 30
여성 40 10

파이썬 코드 구현

독립성 검정에서는 chi2_contingency 함수를 사용합니다.

import numpy as np
from scipy.stats import chi2_contingency

# 교차표 만들기
table = np.array([[20, 30], [40, 10]])

# 독립성 검정 실행
# correction=True는 데이터 수가 적을 때 수행하는 '야츠의 연속성 보정'입니다.
chi2, p, dof, expected = chi2_contingency(table, correction=True)

print(f"p-value: {p}")
  • p < 0.05: 성별과 스마트폰 브랜드 선택은 서로 연관이 있다 (독립적이지 않다).
  • p >= 0.05: 성별에 따라 선호 브랜드가 다르다고 할 수 없다 (서로 독립적이다).

3. 동질성 검정 (Test of Homogeneity)

"두 개 이상의 집단의 분포가 서로 동일한가?"를 확인합니다.

사실 동질성 검정은 독립성 검정과 수학적 계산 방법이 완전히 같습니다. 차이점은 오직 데이터를 수집하는 '목적'에 있습니다.

  • 독립성 검정: 한 집단에서 두 변수의 '관계'가 궁금할 때 (예: 우리 반 학생들의 안경 착용 여부와 성적의 관계)
  • 동질성 검정: 두 집단 자체가 같은지 궁금할 때 (예: A 학교와 B 학교의 안경 착용 비율 비교)

절차는 독립성 검정과 동일하게 chi2_contingency를 사용하면 됩니다.


요약 및 주의사항

  1. 데이터의 형태: 반드시 빈도(Count)여야 합니다. (평균이나 비율을 직접 넣으면 안 됩니다)
  2. 기대 빈도의 크기: 보통 각 칸(Cell)의 기대 빈도가 5 이상일 때 결과가 정확합니다. 너무 적은 표본(위의 탕수육 예시)에서는 결과가 왜곡될 수 있으니 주의하세요
  3. 결과 해석: p-value가 유의수준(보통 0.05)보다 작으면 "차이가 있다" 또는 "연관이 있다"는 대립가설을 채택합니다.