위와 같이 두 범주형 데이터(categorical data)로 만들어놓은 표다.
contingency table 이라고도 한다.
pd.crosstab(series_y, series_x, margins=True, normalize=True)
margins=True
를 넣어주면 총 합을 보여준다.normalize=True
를 넣어주면 모든 셀을 sum으로 나눠서 비율을 보여준다.2차원 버전의 df.['columnname'].value_counts
라고 생각하자.
from scipy import stats
stats.chisquare(series0, series1)
결과로 p-value
가 나온다.
아래부터 내가 카이제곱검정에 대해서 더 찾아본 내용이다.
https://hsm-edu.tistory.com/1213 여기 잘 요약되어 있다.
카이제곱검정은 세가지가 있는데
stats.chisquare()
함수를 사용한다.stats.chi2_contingency()
함수를 사용한다.두 변수가 독립적임을 가정하였을 때(귀무가설)
현재와 같은 데이터, 혹은 더욱 극단적인(상관관계를 보여주는) 데이터가
다른 샘플 데이터에서도 나타날 조건부 확률
내가 이해한 대로 말하면 두 변수가 아무런 상관이 없다면 우리가 이 데이터를 마주칠 확률이 얼마일까? 에 대한 답이 p값이라는 것이다. 만약 p값이 너무 낮으면?
이런 희박한 확률을 뚫고 이 데이터를 마주쳤다는 것이 말이 안되므로 영가설인 '두 데이터는 상관이 없다'를 버려야 합리적이다.
p-value가 0.05 이하, 충분히 낮다면
두 변수 간에 상관관계가 있다고 판단하고 귀무가설을 기각한다.
p-value가 0.05 이상, 충분히 높다면
두 변수는 서로 독립적이라고 판단하여 귀무가설을 기각하지 않는다.
*여기서 유의수준 0.05를 alpha라고 한다. 당연히 보수적으로 낮추거나 널널하게 높이는 식으로 조절 가능하다.