1. 교차분석¶
- 교차분석은 두 범주 변인 간 관계가 상호 독립 관계인지 아니면 상호 연관성을 맺고 있는지를 검증하는 방법
- 적합도 검정, 독립성 검정, 동일성 검정에 사용된다.
- 카이제곱 검정 통계량을 이용
- 이 중 카이제곱 교차분석은 실제로 나온 관찰빈도(observed frequency)와 각 셀에서 통계적으로 기대할 수 있는 빈도, 즉 기대빈도(expected frequency) 간에 얼마만큼의 차이가 있는지를 카이제곱 분포(chi-squared distribution)를 참조해 통계적으로 검증하는 통계 기법이다. 여기서 기대빈도는 모집단의 빈도 모수(parameter)와 일치하는 값이다.
2. 적합도 검정¶
- k개의 범주 (혹은 계급)을 가지는 한 개의 요인(factor)에 대해서 어떤 이론적 분포를 따르고 있는지를 검정하는 방법
- 관측값들이 어떠한 이론적 분포를 따르고 있는지를 알아볼 수 있음.
- 모집단 분포에 대한 가정이 옳게 됐는지를 관측 자료와 비교하여 검정
- 귀무가설 : 실제분포와 이론적 분포 간에는 차이가 없다. (두 분포가 일치한다.)
- 대립가설 : 실제분포와 이론적 분포 간에는 차이가 있다. (두 분포가 일치하지 않는다.)
Example 1 - 일원카이제곱검정¶
- 제품 A,B,C의 보유대수를 조사하니 324대, 78대, 261대 -> 계:663
- 제품의 판매량 비율은 A56%, B12%, C32% -> 기대빈도는 663 * 0.56 ...
- 이 자료로 다음같은 관찰빈도와 기대빈도를 만들 수 있음
- 귀무가설은 관찰빈도는 기대빈도와 같다
- 대립가설은 관찰빈도와 기대빈도는 다르다
In [1]:
import pandas as pd
xo, xe = [324,78,261], [371,80,212]
xc = pd.DataFrame([xo,xe], columns=['ItemA','ItemB','ItemC'], index=['obs','exp'])
xc
Out[1]:
ItemA | ItemB | ItemC | |
---|---|---|---|
obs | 324 | 78 | 261 |
exp | 371 | 80 | 212 |
In [2]:
import matplotlib.pyplot as plt
%matplotlib inline
xc.plot(kind='bar', title='Number of item', figsize=(8,6))
plt.grid()
카이제곱 검정 수행¶
In [3]:
from scipy.stats import chisquare
result = chisquare(xo, f_exp=xe)
result
Out[3]:
Power_divergenceResult(statistic=17.329649595687332, pvalue=0.00017254977751013492)
p-value가 유의수준 0.05보다 아주 작은 값이므로 귀무가설을 기각하고 대립가설을 지지한다. 즉, 연구가설이 지지된다.
Example 2 - 일원카이제곱검정¶
- 귀무가설 : 전체응답자 중 왼손잡이는 20%, 오른손잡이는 80%이다
- 대립가설 : 전체응답자 중 왼손잡이의 비율은 20%, 오른손잡이의 비율이 80%라고 할 수 없다.
In [4]:
data = pd.DataFrame({'Left':[18], 'Right':[218]})
data
xo = [18,218]
xe = [47.2,188.8]
In [5]:
from scipy.stats import chisquare
result = chisquare(xo , f_exp=xe)
result
Out[5]:
Power_divergenceResult(statistic=22.58050847457627, pvalue=2.0151876969887844e-06)
p-value가 유의수준 0.05보다 작으므로 전체응답자 중 왼손잡이는 20%, 오른손잡이는 80%라는 귀무가설을 기각한다.
- 모집단이 두 개의 변수 A,B에 의해 범주화되었을 때, 이 두 변수들 사이의 관계가 독립인지 아닌지를 검정하는 것을 의미
- 모집단을 범주화하는 기준이 되는 두 변수 A,B가 서로 독립적으로 관측값에 영향을 미치는지의 여부를 검정하는 것
- 귀무가설 : 두 변수 사이에는 연관이 없다. (독립이다.)
- 대립가설 : 두 변수 사이에는 연관이 있다. (종속이다.)
Example 1 - 이원카이제곱검정¶
- 제품1 ~3까지 여성과 남성의 판매량 차이에 대해 카이제곱검정
In [6]:
xf, xm = [269, 83, 215], [155, 57, 181]
x = pd.DataFrame([xf, xm], columns=['Item 1', 'Item 2', 'Item 3'], index=['Female', 'Male'])
x
Out[6]:
Item 1 | Item 2 | Item 3 | |
---|---|---|---|
Female | 269 | 83 | 215 |
Male | 155 | 57 | 181 |
In [7]:
from scipy.stats import chi2_contingency
chi2, p, dof, expected = chi2_contingency([xf,xm])
msg = 'Test Statistic: {}\np-value: {}\nDegree of Freedom: {}'
print(msg.format(chi2, p, dof))
print(expected)
Test Statistic: 7.094264414804222
p-value: 0.028807134195296135
Degree of Freedom: 2
[[250.425 82.6875 233.8875]
[173.575 57.3125 162.1125]]
자유도는 (3-1) * (2-1) = 2이고, p-value는 유의수준 0.05보다 작은 값으로 2개 그룹간에 차이가 있다고 판단할 수 있음
Example 2 - 이원카이제곱검정¶
In [8]:
data = pd.DataFrame([[156,14,2,4],[124,20,5,4],[77,11,7,13],[82,36,15,7],[53,11,1,57]],\
columns=['wife','alternating','husband','jointly'], index=['landry','main_mean','dinner','breakfast','tidying'])
data
Out[8]:
wife | alternating | husband | jointly | |
---|---|---|---|---|
landry | 156 | 14 | 2 | 4 |
main_mean | 124 | 20 | 5 | 4 |
dinner | 77 | 11 | 7 | 13 |
breakfast | 82 | 36 | 15 | 7 |
tidying | 53 | 11 | 1 | 57 |
In [9]:
from scipy.stats import chi2_contingency
chi2, pvalue, dof, expected = chi2_contingency(data)
msg = 'Test Statistic: {}\np-value: {}\nDegree of Freedom: {}'
print(msg.format(chi2, p, dof))
print(expected)
Test Statistic: 222.77883846736816
p-value: 0.028807134195296135
Degree of Freedom: 12
[[123.87982833 23.16452074 7.55364807 21.40200286]
[107.69098712 20.13733906 6.56652361 18.60515021]
[ 76.01716738 14.21459227 4.63519313 13.13304721]
[ 98.54077253 18.42632332 6.00858369 17.02432046]
[ 85.87124464 16.05722461 5.2360515 14.83547926]]
- 모집단이 임의의 변수에 따라 R개의 속성으로 범주화되었을 때, R개의 부분 모집단에서 추출한 각 표본인 C개으 범주화된 집단의 분포는 서로 동일한지 아닌지를 검정하는 것을 의미
- 귀무가설 : p(1j) = p(2j) = p(3j).. = p(nj) (n=1,2,...,r)
- 대립가설 : p(nj)중 다른 값이 하나이상 존재한다.
- 계산법과 검정법은 모두 독립성 검정과 같은 방법으로 진행
'Statistics' 카테고리의 다른 글
파이썬으로하는 이원배치 분산분석 (Two-way ANOVA) (1) | 2021.08.03 |
---|---|
파이썬으로하는 일원배치 분산분석 (one-way ANOVA) (2) | 2021.08.03 |
파이썬으로하는 T 검정(T-test) (0) | 2021.08.03 |