본문 바로가기
데이터분석

카이제곱 검정 > 독립성 검정, 동질성 검정

by 데이터데이트 2024. 6. 11.
728x90
반응형

오늘은, 카이제곱 검정의 독립성 검정과 동질성 검정의 예시와 파이썬 코드를 살펴보겠습니다.

참고로 독립성 검정과 동질성 검정은 동일한 파이썬 함수를 사용합니다.

독립성 검정 (Test of Indepencence)

  • 두 범주형 변수 간에 통계적으로 유의미한 관계가 있는지 확인하기 위해 사용되는 통계적 방법
    • 귀무 가설 (H0): 두 변수는 독립적이다 (즉, 서로 영향을 미치지 않는다).
    • 대립 가설 (H1): 두 변수는 독립적이지 않다 (즉, 하나의 변수가 다른 변수에 영향을 미친다).

예시1. 성별과 커피 선호도 사이에 관계가 있는지 검증

     - 귀무가설(H0) : 성별과 커피 선호도 사이에 관계가 없다.

     - 대립가설(H1) : 성별과 커피 선호도 사이에 관계가 있다.

     - 파이썬 코드 

from scipy import stats
import numpy as np

# 관찰 빈도 데이터
data = np.array([[30, 20],  # 남성 [아메리카노, 라떼]
                 [35, 30]]) # 여성 [아메리카노, 라떼]
                 
# 카이제곱 독립성 검증
print(stats.chi2_contingency(data))

Chi2ContingencyResult(statistic=0.22108579881656829, pvalue=0.6382138366924077, dof=1, expected_freq=array([[28.26086957, 21.73913043], [36.73913043, 28.26086957]]))

--> 귀무가설 기각 : 성별과 커피선호도 사이에 관계가 없다.

예시2. 성별과 흡연여부에 관계가 있는지 검정

     - 귀무가설(H0) : 성별과 흡연여부 사이에 관계가 없다.

     - 대립가설(H1) : 성별과 흡연여부 사이에 관계가 있다.

    - 파이썬 코드

import pandas as pd
from scipy import stats

# 성별에 따른 흡연여부
data = {
    'Gender': ['Male', 'Male', 'Female', 'Male', 'Female', 'Male', 'Female', 'Female', 'Male', 'Female'],
    'Smoker': ['Yes', 'No', 'No', 'Yes', 'No', 'No', 'No', 'Yes', 'No', 'Yes']
}

# 교차표 생성
df = pd.crosstab(data['Gender'], data['Smoker'])

# 카이제곱 독립성 검정
print(stats.chi2_contingency(df))

Chi2ContingencyResult(statistic=0.0, pvalue=1.0, dof=1, expected_freq=array([[3., 2.], [3., 2.]]))

--> 귀무가설 채택 : 성별에 따른 흡연여부는 독립적이다.(관계가 없다.)

 

독립성 검정 (Test of Indepencence)

  • 두 개 이상의 집단이 동일한 분포를 따르는지 검정
    • 귀무 가설 (H0): 두 집단은 동일한 분포를 따른다.
    • 대립 가설 (H1): 두 집단은 동일한 분포를 따르지 않는다.

예시2. 두 지역의 주민들이 동일한 선호도를 가지는지 검정

import numpy as np
from scipy.stats import chi2_contingency

# 관찰된 데이터
# 지역 A: [아메리카노, 라떼]
# 지역 B: [아메리카노, 라떼]
data = np.array([[50, 30],  # 지역 A
                 [45, 35]]) # 지역 B

# chi2_contingency 함수 적용
print(chi2_contingency(data))

Chi2ContingencyResult(statistic=0.4145748987854251, pvalue=0.5196565532398361, dof=1, expected_freq=array([[47.5, 32.5], [47.5, 32.5]]))

--> 귀무가설 채택. 두 집단은 동일한 커피 선호도를 가진다.

반응형