교차표
- pd.crosstab('범주',범주')
pd.crosstab(titanic['Survived'], titanic['Sex'])
normalize : 컬럼안에서 비율 계산 (columns, index, all)
pd.crosstab(titanic['Survived'], titanic['Sex'], normalize = 'columns')
- 외) pd.crosstab(x,y)
temp = pd.crosstab(titanic['Pclass'], titanic['Survived'], normalize = 'index')
print(temp)
temp.plot.bar(stacked=True)
plt.axhline(1-titanic['Survived'].mean(), color = 'r')
plt.show()
시각화 : Mosaic Plot
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.graphics.mosaicplot import mosaic #mosaic plot!
import scipy.stats as spst
- mosaic(data, ['x범주','y범주'])
temp = data.sort_values('Sex')
mosaic(temp, [ 'Sex','Survived'])
plt.axhline(1- titanic['Survived'].mean(), color = 'r')
plt.show()
수치화 : 카이제곱 검정 : Chi-squared Test
카이제곱 통계량 : 기대빈도(관련이 없을 때 나오는 값)와 실제 데이터의 차이
기대빈도 : 아무 관련이 없을 때 나올 수 있는 빈도수(귀무가설이 참일때 나오는 값 )
- 자유도
샘플이나 표본 데이터에서 자유롭게 변할 수 있는 변수의 수
자유도 = 범주의 수 - 1
- 코드
1. 교차표 집계
교차표 = pd.crosstab(데이터['범주'],데이터['범주'])
※ 비율로 하면 안됌!
table = pd.crosstab(titanic['Survived'], titanic['Pclass'])
2. 카이제곱검정
spst.chi2_contingency(교차표)
result = spst.chi2_contingency(table)
print(f'x^2 : {result[0]}')
print(f'pv : {result[1]}')
print(f'dof : {result[2]}')
print(f'ef : {result[3]}')
카이제곱 : 높을 수록 차이가 큼
p-value : 0.05 기준
dof 자유도 : (3-1) x (2-1)
기대빈도 : 관련이 없으면 나오는 빈도수
'KT AIVLE School > 데이터 분석 및 의미 찾기' 카테고리의 다른 글
시계열 데이터 (0) | 2024.09.13 |
---|---|
이변량 분석 : 숫자 → 범주 (0) | 2024.09.13 |
이변량 분석 : 범주 → 숫자 (0) | 2024.09.12 |
평균 추정과 신뢰구간 (0) | 2024.09.12 |
이변량 분석 : 숫자 → 숫자 (0) | 2024.09.11 |