본문 바로가기
IT.데이터

빅데이터 분석기사 실기 - 작업형 3유형 준비 / 카이제곱, 피셔의 정확 검정 (Fisher's Exact Test), 비모수 검정

by JROK 2023. 6. 20.

 

작업형 3유형의 출제될 문제 중 하나인 카이제곱에 대해 다루겠다.

실제 실습에서 어떻게 쓰이는 지 위주로 적겠다.

 

 

카이제곱 종류

한 개 범주형 변수와 각 그룹 별 비율과 특정 상수비가 같은 지 검정하는 적합도 검정(The Goodness of Fit Chi-Square)

▪ 각 집단이 범주형 변수에 대해 서로 유사한 성향을 갖는지 분석하는 동질성 검정

▪ 두 개 범주형 변수가 서로 독립인지 검정하는 독립성 검정

 

 

카이-제곱 적합도(The Goodness of Fit Chi-Square) ( 가설 ) 검정

▪ 모집단의 어떤 확률 분포를 가설로 설정한 후, 표본 자료의 분포를 분석해 모집단 가설에 대한 타당성 검증

▪ 𝒏개 범주에 대한 비율을 𝑷𝟏,𝑷𝟐, … ,𝑷𝒏 으로 정의할 때

   귀무가설 : 𝑷𝟏 = 𝑷𝟐 = … = 𝑷𝒏 각 비율 간 차이가 없다 또는 𝑷𝟏 = 𝒂,𝑷𝟐 = 𝒃, … , 𝑷𝒏 = 𝒇 (일정 비율이 기대된다)

   대립가설 : 적어도 하나의 비율이 다르다 또는 적어도 하나는 기대 비율과 다르다

▪ p-value가 유의수준보다 작은 경우, 적어도 하나의 비율이 다르거나 적어도 하나는 기대 비율과 다르다고 할 수 있다. 즉, 귀무가설이 기각되면 적어도 하나의 범주의 비율이 가정한 기대 비율과 다르다고 할 수 있다

▪ p-value가 유의수준보다 큰 경우, 관찰도수와 기대도수의 차이가 작고, 적합도가 높다고 할 수 있다

 

 

적합도( 가설 ) 검정 모듈 함수 & 주요 parameter

from scipy.stats import chisquare

chisquare(관찰값, 기댓값=None, ddof=0, axis=0) → chisq, p-value

#chisq == statistic 이라고 생각하면 됨.

 

 

 

카이 제곱 동질성/독립성 검정

▪ 두 범주형 자료 간의 차이 및 연관성을 분석하는 검증 방법

관찰빈도(실제값)가 기대빈도(기댓값)와 유의한 차이가 있는지 검증

귀무가설이 기각되면 범주별 기대빈도와 관측빈도의 차이가 크다/독립이 아니다라고 할 수 있음

기대빈도 5미만의 셀이 전체의 20% 보다 작아야 함데이터 양이 적은 경우 Fisher’s Exact Test 사용 (2 * 2)

 

동질성 검정 : 한 개의 범주형 변수에 대해 다른 범주형 변수는 비교 대상이 되는 그룹으로 해석

예) 남자 그룹, 여자그룹의 표본을 각각 100명씩 추출(비교 그룹)하여, 각 표본의 핸드폰 모델(범주형 변수) 선호도를 조사함

 

독립성 검정 : 표본추출은 전체 집단 하나만 추출, 두 개의 범주형 변수에 대해 서로 연관성이 있는지 검정하는 것

예) 일반인 200명을 임의 추출하고, 성별과 핸드폰 모델 선호도를 조사함

 

 

동질성/독립성 검정 모듈 함수 & 주요 parameter

pandas

pd.crosstab(index, columns, …) → DataFrame

 

from scipy.stats import chi2_contingency

chi2_contingency(observed, correction=True, lambda=None) → chisq, p-value, df, expected

df = 자유도, expected = 측정값

 

 

 

 

 피셔의 정확 검정 (Fisher’s Exact Test)

▪ 가능한 모든 경우의 수를 확인하는 검정 방법

▪ 초기하 분포를 기반으로 하며 가설은 카이제곱 검정과 동일함

▪ 귀무가설 : 두 변수는 연관성이 없다 (독립이다)

▪ 대립가설 : 두 변수는 연관성이 있다 (독립이 아니다)

▪ 분할표에서 표본의 수가 작거나 범주가 많아서 빈도수가 극도로 작은 경우 사용

▪ 기대빈도가 5보다 작은 셀이 20%를 넘으면 카이제곱 검정보다 피셔의 정확 검정을 사용

 

 

모듈 함수 & 주요 parameter

from scipy.stats import fisher_exact

oddsratio, p-value = fisher_exact(data)

 

 

 

비모수 검정의 종류 -  검정,  용도, 함수 (scipy.stats) & 주요 parameter

 

중앙값을 사용함

- Wilcoxon Signed Rank Test 1개 표본 2개 대응 표본

wilcoxon(x, y=None, zero_method='wilcox', correction=False, alternative='two-sided’)

 

- Wilcoxon Rank-Sum Test 2개 독립 표본

ranksums(x, y, alternative='two-sided’)

 

- Mann-Whitney U Test 2개 독립 표본

mannwhitneyu(x, y, use_continuity=True, alternative='two-sided’)

 

- Kruskal-Wallis H Test K개 독립 표본

kruskal(*samples) 검정 용도 함수 (scipy.stats) & 주요 parameter

 

 

빈도에 대한 기댓값/교차표를 사용함

- Chi-Square 적합도 1개 범주, 비율

chisquare(관찰값, 기댓값=None, ddof=0, axis=0) → chisq, p-value

 

- Chi-Square 동질성, 독립성 2개 독립 표본

pd.crosstab(index, columns, …) → DataFrame

chi2_contingency(observed, correction=True, lambda_=None) → chisq, p-value

 

- Fisher Exact Test 2개 독립 표본

fisher_exact(observed) → oddsratio, p-value

 

 

댓글