카이제곱 적합도 검정
1. 카이제곱 검정 개요
- 정의:
- → 질적 변수(예: 성별, 학점, 선호도)의 빈도(횟수)나 비율을 비교할 때 사용하는 검정
- 원리:
- 실제로 관찰된 값(Observed, O)
- 이론적으로 기대되는 값(Expected, E)
- 두 값이 얼마나 차이가 나는지 계산 → 그 차이가 단순한 우연인지, 아니면 의미 있는 차이인지 확인
- 적합도 검정(Goodness of Fit):
- → 한 개의 질적 변수에 대해 관찰된 분포가 이론적 분포와 잘 맞는지 검정하는 방법
📌 쉽게 말해:
“학생 성적 분포가 원래와 같은 비율대로 나왔을까, 아니면 달라졌을까?”
2. 적합도 검정 예제
문제:
지난 학기 학점 비율: A=20%, B=30%, C=50%
→ 이러닝 도입 후 200명 성적: A=54, B=48, C=98
→ 5% 유의수준에서 차이가 있는지 검정
(1) 가설 설정
- H₀ (귀무가설): A:B:C = 2:3:5 (변화 없음)
- Hₐ (연구가설): A:B:C ≠ 2:3:5 (변화 있음)
(2) 기대빈도(E) 계산
- 전체 학생 200명 × 각 비율
- A: 200×0.2=40
- B: 200×0.3=60
- C: 200×0.5=100
(3) 카이제곱(χ²) 계산
공식:
$$\chi^2 = \sum \frac{(O - E)^2}{E}$$
대입:
- A: (54-40)² / 40 = 4.9
- B: (48-60)² / 60 = 2.4
- C: (98-100)² / 100 = 0.04
- 합계: χ² = 7.34
(4) 결론 도출
- 자유도(df) = 범주 수 - 1 = 3-1 = 2
- 유의수준 0.05에서 χ² 임계값 = 5.991
- 계산값 7.34 > 5.991 → 귀무가설 기각
👉 결론:
이러닝 도입 후 학점 분포가 달라졌으므로, 프로그램이 학습에 영향을 미쳤다고 볼 수 있다.
- 카이제곱 검정은 질적 자료의 빈도 비교에 사용
- χ² = Σ (O−E)² / E
- 적합도 검정은 관찰된 분포가 이론적 분포와 맞는지 확인
- 이번 사례에서는 프로그램 도입 후 학점 분포 변화가 있었다고 결론
카이제곱 독립성 검정
1. 독립성 검정 개요
- 정의:
- 두 개의 질적 변수가 서로 관련이 있는지, 아니면 독립적인지 확인하는 방법
- 원리:
- 두 변수를 교차표(Contingency Table, 분할표)로 정리
- 각 셀의 관찰빈도(O)와 기대빈도(E)를 비교
- O와 E의 차이가 단순한 우연인지, 아니면 실제 관계가 있는지를 검정
- 가설:
- 귀무가설(H₀): 두 변수는 독립이다 (관계 없음)
- 연구가설(Hₐ): 두 변수는 독립이 아니다 (관계 있음)
📌 예시 비유:
- 변수① = 교육 수준 (고졸/대졸 이상)
- 변수② = 결혼 생활 만족도 (만족/불만족)
- → “교육 수준이 높을수록 만족도가 더 높은 경향이 있는가?”
2. 독립성 검정 예제
문제:
교육 수준과 결혼 생활 만족도의 관계를 보기 위해 1,000명 조사 결과:
| 교육 수준 | 만족 | 불만족 | 합계 |
|---|---|---|---|
| 고졸 이하 | 170 | 130 | 300 |
| 전문대 졸업 | 300 | 120 | 420 |
| 4년제 이상 | 180 | 100 | 280 |
| 합계 | 650 | 350 | 1000 |
→ 5% 유의수준에서 두 변수가 독립적인지 검정
(1) 기대빈도(E) 계산
공식: $E_{ij} = \frac{R_i \times C_j}{N}$
R: 행 합계, C: 열 합계, N: 총 합계
- 고졸, 만족: (300×650) / 1000 = 195
- 고졸, 불만족: (300×350) / 1000 = 105
- 전문대, 만족: (420×650) / 1000 = 273
- ...
(2) Python 실습
import pandas as pd
from scipy.stats import chi2_contingency
import numpy as np
# 데이터프레임 생성
data = {
'만족': [170, 300, 180],
'불만족': [130, 120, 100]
}
df = pd.DataFrame(data, index=['고졸 이하', '전문대 졸업', '4년제 이상'])
print("관찰 빈도표:")
print(df)
print("-" * 30)
# 카이제곱 독립성 검정
# chi2: 카이제곱 통계량, p: p-value, dof: 자유도, expected: 기대 빈도
chi2, p, dof, expected = chi2_contingency(df)
print(f"카이제곱 통계량: {chi2:.4f}")
print(f"p-value: {p:.4f}")
print(f"자유도: {dof}")
print("\n기대 빈도표:")
print(pd.DataFrame(expected, index=df.index, columns=df.columns))
3. 결과 해석
- 예상 출력:
- 카이제곱 통계량: 32.7481
- p-value: 0.0000
- 결론:
- p-value(0.0000) < 유의수준(0.05) 이므로, 귀무가설 기각
- 교육 수준과 결혼 생활 만족도는 서로 독립적이지 않다. 즉, 관계가 있다.
💡 카이제곱 검정 핵심 요약
- 적합도: 관찰 비율이 가설 비율과 같은가?
- 독립성: 두 질적 변수가 서로 관련 있는가?
- P < 0.05 → 귀무가설 기각(차이/관계 있음), P ≥ 0.05 → 기각 못함(차이/관계 불확실)