데이터분석/통계

카이제곱 검정 (적합도 검정, 독립성 검정, 동질성 검정)

씩씩한 IT블로그 2022. 8. 29. 01:49
반응형

카이제곱 검정

카이제곱 검정은 두 범주형 변수에 대한 분석 방법이다.
다음의 세가지 검증 방법이 있다.
1. 적합도 검정 : 한 범주형 변수의 각 그룹 별 비율과 특정 상수비가 같은지 검증하는 것
2. 독립성 검정 : 두 범주형 변수가 서로 독립인지 검정하는 것
3. 동질성 검정 : 각 집단이 서로 유사한 성향을 갖는지 분석하는 것

 

적합도 검정

1. 정의 : 어떤 자료가 주어진 분포를 따른다고 할 수 있는가를 검정하는 것.
2. 예시
  2.1 주사위의 각 눈금이 나올 확률이 1/6인가
    귀무가설 : 주사위의 각 눈금이 나올 확률이 1/6이다.
    대립가설 : 주사위 중 적어도 눈금 하나는 나올 확률이 1/6이 아니다.
  2.2 (A,B,C,D,E) 각각의 자동차 선호도 확률이 (0.3, 0.15, 0.1, 0.25, 0.2)가 맞는가?
    귀무가설 : A=0.3, B=0.15, C=0.1, D=0.25, E=0.2
    대립가설 : 적어도 하나의 등호가 성립하지 않는다.
3. 코드
  250대의 차에 대하여 실제 선호가 기대도수와 맞는지 확인해 본다.
    귀무가설 : A=0.3, B=0.15, C=0.1, D=0.25, E=0.2
    대립가설 : 적어도 하나의 등호가 성립하지 않는다.

import numpy as np
x = np.array([90,30,35,55,40])
e_x = np.array([0.3,0.15,0.1,0.25,0.2])*250

from scipy.stats import chisquare
chisquare(x,e_x)

 

독립성 검정

1. 정의 : 두집단의 독립성을 검정한다.

2. 예시 

  2.1 A집단과 B집단이 독립임을 확인한다

    귀무가설 : A집단과 B집단은 독립이다.

    대립가설 : A와 B는 독립이 아니다.

3. 코드

import pandas as pd
from scipy.stats import chi2_contingency

data = pd.DataFrame({"a":[90,30,35,55,40],
                  "b":[80,40,30,50,45]})

chi,p,df,expected = chi2_contingency(data,correction=False)
print(chi,p)
print("자유도 : ",df)
print("기대도수 : ",  expected)

 

동질성 검정

1. 정의 : 여러 개의 집단에 대한 어떤 변수의 분포가 같은지 검정하는 방법

2. 예시 

  2.1 공장의 근무시간데에 따른 불량률이 모두 같은지 알아보기

    귀무가설 : 근무시간대에 따른 불량률이 모두 같다

    대립가설 : 적어도 하나의 시간대에 불량률은 다르다  

3. 코드 

import numpy as np
import pandas as pd

time = np.tile(["day","evening","night"],2)
count = np.array([905,890,870,45,55,70])
goods = np.repeat(["0","x"],3)
data = {"time":time,"goods":goods,"count":count}

d_table = pd.crosstab(index=data["goods"],columns=data["time"],
                      values=data["count"],aggfunc=sum,margins=True,margins_name="전체")

display(d_table)

from scipy.stats import chi2_contingency
chi,p,df,expected = chi2_contingency(d_table)
print(chi,p)
print("자유도 : ",df)
print("기대도수 : ",  expected)

 

반응형