[수학] 두 개의 이진 변수 간 상관관계 분석: 카이제곱 검정

 

📊 두 개의 이진 변수 간 상관관계 분석: 카이제곱 검정(Chi-square Test) + 수식 + Python 코드


🧠 1. 왜 이진 변수 간 상관관계를 검정할까?

두 개의 이진 변수(binary variable) 사이에 통계적으로 유의미한 관계가 있는지를 알고 싶을 때, 우리는 카이제곱 독립성 검정을 사용합니다.
예를 들어:

  • A: 흡연 여부 (흡연자 / 비흡연자)

  • B: 폐암 여부 (진단 / 미진단)

이 두 변수 사이에 관계가 있는지 확인하고 싶을 때, 카이제곱 검정이 유용합니다.


📐 2. 카이제곱 독립성 검정이란?

🎯 목적

두 개의 범주형 변수 간에 통계적으로 유의미한 연관성이 있는지를 검정합니다.


🔸 카이제곱 통계량 공식

χ2=i=1rj=1c(OijEij)2Eij\chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}}
  • OijO_{ij}: 실제 관측값 (Observed frequency)

  • EijE_{ij}: 기대값 (Expected frequency)

  • rr: 행의 개수

  • cc: 열의 개수


🔸 기대값 EijE_{ij} 계산 공식

Eij=(행 합계)i×(열 합계)j전체 합계E_{ij} = \frac{(\text{행 합계})_i \times (\text{열 합계})_j}{\text{전체 합계}}

즉, ii행과 jj열의 교차점에서 기대되는 빈도수는 해당 행과 열의 주변 합계를 곱한 뒤 전체 합계로 나누면 됩니다.

📌 예시

폐암 진단 O폐암 진단 X행 합계
흡연자3070100
비흡연자10190200
열 합계40260300
  • 흡연자(100명) 중 폐암(40명)의 기대값:

E11=100×40300=13.33E_{11} = \frac{100 \times 40}{300} = 13.33

🐍 3. Python 코드로 카이제곱 검정 수행하기

import pandas as pd from scipy.stats import chi2_contingency # 관측값 (Observed) data = [[30, 70], # 흡연자 [10, 190]] # 비흡연자 # 교차표 table = pd.DataFrame(data, index=["흡연자", "비흡연자"], columns=["폐암 진단 O", "폐암 진단 X"]) print("▶️ 교차표:\n", table) # 카이제곱 검정 실행 chi2, p, dof, expected = chi2_contingency(table) # 결과 출력 print(f"\n✅ 카이제곱 통계량 (χ²): {chi2:.4f}") print(f"✅ 자유도: {dof}") print(f"✅ 기대값 (Expected Frequencies):\n{pd.DataFrame(expected, index=table.index, columns=table.columns)}") print(f"✅ p-value: {p:.4f}") # 유의성 검정 alpha = 0.05 if p < alpha: print("\n👉 귀무가설 기각: 두 변수는 독립이 아님 → 통계적으로 유의한 상관관계 있음.") else: print("\n👉 귀무가설 채택: 두 변수는 통계적으로 독립 (상관관계 없음).")

✅ 4. 해석

예상 출력 결과:

✅ 카이제곱 통계량 (χ²): 36.0085 ✅ 자유도: 1 ✅ 기대값: 폐암 진단 O 폐암 진단 X 흡연자 13.33 86.67 비흡연자 26.67 173.33 ✅ p-value: 0.0000 👉 귀무가설 기각: 두 변수는 독립이 아님 → 통계적으로 유의한 상관관계 있음.
  • 기대값과 관측값의 차이가 매우 큼

  • p-value < 0.05 → 두 변수는 독립이 아니므로 상관관계 있음


⚠️ 5. 주의사항

항목설명
기대값이 5 미만인 셀이 있다면Fisher의 정확 검정 사용 권장
연속형 변수 분석→ Pearson/Spearman/Kendall 등 사용
데이터 크기 부족 시결과 신뢰도 낮아짐

📝 6. 정리

  • 카이제곱 독립성 검정은 이진 변수 간 상관관계를 검정하는 대표적인 통계 기법입니다.

  • 기대값은 "행합 × 열합 ÷ 전체합" 공식을 이용해 계산합니다.

  • scipy.stats.chi2_contingency로 손쉽게 구현 가능

  • p-value < 0.05면 → 통계적으로 유의한 상관관계 있음

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

공압 속도 제어: 미터인 vs 미터아웃

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

3선 결선식 센서의 타입 PNP, NPN

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

제너 다이오드에 저항을 연결하는 이유

[스마트팜] EC/pH 미터 만들기: 아두이노로 전기 전도도 및 pH 측정

[투자] TIGER 미국30년국채커버드콜액티브(H) 매수 타이밍은?

[PLC] 래더 다이어그램과 PLC