[통계] 통계학 기초 3주차 (5) 카이제곱 검정

·2025년 1월 8일

통계

목록 보기
16/34

카이제곱 검정

  • 범주형 데이터의 표본 분포가 모집단 분포와 일치하는지 검정 \rightarrow 적합도 검정
  • 두 범주형 데이터 간의 독립성 검정 \rightarrow 독립성 검정

적합도 검정

  • 관찰된 분포와 기대된 분포가 일치하는지 검정
  • p값이 높으면 데이터가 귀무 가설에 적합
  • p값이 낮으면 데이터가 귀무가설에 부적합

독립성 검정

  • 두 범주형 변수 간의 독립성 검정
  • p값이 높으면 두 변수 간의 연관성 없음 \rightarrow 독립성 있음
  • p값이 낮으면 두 변수 간의 연관성 있음 \rightarrow 독립성 없음

실습

scipy.stats.chisquare(observed_data, f_exp = expeted_data) - 적합도 검정

  • data1과 data2 사이의 적합도 검정 수행.
  • 관찰된 빈도 분포가 기대된 빈도 분포와 일치하는지 평가.
  • 주로 단일 표본에 대해 관찰된 빈도가 특정 이론적 분포와 일치하는지 확인
  • 반환하는 값
    • chi2: 카이제곱 통계량
    • p: p-value

scipy.stats.chi2_contingency(data) - 독립성 검정

  • 입력: 각 데이터 튜플(ex. [나이, 성별, 흡연여부])을 array로 묶어서 input
    • 예) np.array([[10, 10, 20], [20, 20, 40]])
  • 두 개 이상의 범주형 변수 간의 독립성 검정.
  • 관측 빈도를 담고 있는 교차표(contingency table)를 입력받음.
  • 반환하는 값
    • chi2: 카이제곱 통계량
    • p: p-value
    • dof: 자유도. (행의 수 - 1) * (열의 수 - 1)
    • expected: 기대 빈도. 행 합계와 열 합계를 사용하여 계산된 이론적 빈도

적합도 검정

observed = [20, 30, 25, 25]
expected = [25, 25, 25, 25]
chi2_stat, p_value = stats.chisquare(observed, f_exp=expected)
print(f"적합도 검정 카이제곱 통계량: {chi2_stat}, p-값: {p_value}")

적합도 검정 카이제곱 통계량: 2.0, p-값: 0.5724067044708798

  • p-value가 0.05보다 크기 때문에 두 데이터의 분포는 일치하지 않는다 (부적합)

독립성 검정

# 독립성 검정
observed = np.array([[10, 10, 20], [20, 20, 40]])
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"독립성 검정 카이제곱 통계량: {chi2_stat}, p-값: {p_value}")

독립성 검정 카이제곱 통계량: 0.0, p-값: 1.0

  • p-value가 0.05보다 크기 때문에 두 데이터 사이의 연관성은 없다 (독립적)

성별과 흡연 여부 독립성 검정

# 나이과 흡연 여부 독립성 검정
observed = np.array([[30, 10], [20, 40]]) # [나이, 흡연]
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"독립성 검정 카이제곱 통계량: {chi2_stat}, p-값: {p_value}")

독립성 검정 카이제곱 통계량: 15.041666666666666, p-값: 0.00010516355403363098

  • p-value가 0.05보다 작기 때문에 두 데이터 사이의 연관성이 있음
profile
To Dare is To Do

0개의 댓글