Data Analysis & ML/Python을 활용한 통계분석

[통계분석] 교차분석(카이제곱 검정)

YSY^ 2020. 12. 19. 17:36

교차분석(카이제곱 검정)

  • 범주형 자료인 두변수 간의 관계를 알아보기 위해 실시
  • 적합성, 독립성, 동질성검정에 사용하며, 카이제곱 검정 통계량을 이용

교차분할표

  • 교차분할표에서 행을 이루는 변수를 행변수, 열을 이루는 변수를 열변수라 하며, 행 및 열의 개수는 각 변수의 범주수를 나타낸다.
  • 두 변수의 각 범주가 만나는 곳을 셀이라 하며, 셀에 있는 관찰값들은 도수(개체수)이다.
  • 셀에는 도수와 함께 비율을 표시하기도 한다. 각 행의 합계 및 각 열의 합계를 주변합이라 하고, 전체 합계는 총합이라고 한다.
  • 교차분할표에서는 카이제곱 검정에 의해 독립적인지(관계가 없는지)를 검정하며, 이를 독립성 검정이라고 한다.

 

일원 카이제곱검정

  • 관찰 도수가 기대 도수와 일치하는지 검정하는 적합도 검정이 여기에 속함
  • 카이제곱 검정에 의해 표현형의 관찰도수가 기대도수와 일치하는지를 검정하며, 이를 적합도 검정이라고 한다.
  • data = pd.DataFrame({'id': ['id1', 'id1', 'id1', 'id2', 'id2', 'id3'], 'fa_1': ['a', 'a', 'a', 'b', 'b', 'b'], 'fa_2': ['e', 'e', 'e', 'c', 'c', 'e']}) data

적합성 검정

  • 관측값들이 어떤 이론적 분포를 따르고 있는지를 검정. 한 개의 요인을 대상으로 함
  • 관찰된 빈도가 기대빈도와 의미있게 다른지의 여부를 검증하기 위해 사용되는 검증방법입니다.
  • 자료가 빈도로 주어졌을 때, 특히 명목척도 자료의 분석에 이용됩니다.
  • 즉, 모집단 분포에 대한 가정이 옳게 됐는지를 관측자료와 비교하여 검정
  • 귀무가설 : 관측치와 기대치는 차이 없다.
  • 대립가설 : 관측치와 기대치는 차이 있다.
  • 선호도 분석에 사용
# xo ->관찰, xe-> 기대
xo, xe = [324, 78, 261], [371, 80, 212]
xc = pd.DataFrame([xo, xe], columns=['Item A', 'Item B', 'Item C'], index=['Obs', 'Exp'])
xc
import matplotlib.pyplot as plt
%matplotlib inline

ax = xc.plot(kind='bar', title='Number of Items', figsize=(8, 6))
ax.set_ylabel('value')
plt.grid(color='gray')
plt.show()

from scipy.stats import chisquare

result = chisquare(xo, f_exp=xe)
result #p-value가 0.05보다 작으므로 귀무가설 기각-> 관찰빈도와 기대빈도가 다름
# Power_divergenceResult(statistic=17.329649595687332, pvalue=0.00017254977751013492)
from numpy import linspace
from scipy.stats import chi2

df = 2          # 자유도
x = linspace(0, 20, 201)
y = chi2(df).pdf(x)
x095 = chi2(df).ppf(.95)

plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b--')
plt.axvline(x=x095, color='green', linestyle=':')
plt.text(x95, .3, 'Critical_Value\n' + str(round(x095, 4)), 
         horizontalalignment='center', color='black')

plt.axvline(x=result[0], color='r', linestyle=':')
plt.text(result[0], .3, 'Statistic\n' + str(round(result[0], 4)), 
         horizontalalignment='center', color='black')

plt.xlabel('X')
plt.ylabel('P(X)')
plt.grid()
plt.title(r'$\chi^2$ Distribution (df = 2)')
plt.show()
plt.show()

 

이원 카이제곱검정

  • 교차 분할표를 이용하는 카이 제곱 검정으로 두 개 이상의 변인(집단 또는 범주) 대상으로 검정을 수행한다.

독립성 검정

  • 두변수들 사이의 관계가 독립인지 아닌지 검정 EX) 회사에서 나이와 직위의 연관성
  • 검정통계량 값은 교차표 활용
  • 귀무가설 : 두변수 사이는 연관 없다(독립)
  • 대립가설 : 두변수 사이는 연관 있다(종속)
data = [[30, 10],
     [35, 5],
     [28, 12],
     [20, 20]]
     
from scipy.stats import chi2_contingency

chi2, pval, dof, expected = chi2_contingency(data)
pval # p-value가 0.05 이하라면 집단 간의 차이가 있다고 해석할 수 있다.
# 0.002812834559546625

동질성 검정

  • 모집단이 임의의 변수에 따라 R개의 속성을 범주화되었을때,R개의 부분 모집단에서 추출한 각 표본인 C개의 범주화된 집단의 분포가 동일한지 검정
  • 두 집단의 분포가 동일한 모집단에 추출된 것인지를 검정 EX) 직업의 유형에 따른 만족도의 차이
  • 계산법과 검증법은 모두 독립성 검정과 같은 방법으로 진행
  • 동질성 검정과 독립성 검정의 중요한 차이점은 동질성 검정은 비율이 서로 같은지를 검정하고, 독립성 검정은 독립적인지(관계가 없는지) 를 검정하는 것이다.
  • 귀무가설 : 두변수 사이는 연관 없다(독립)
  • 대립가설 : 두변수 사이는 연관 있다(종속)
728x90
반응형