데이터 과학

캐글에서 Chi square 데이터 분석 본문

Kaggle 데이터 분석, 딥러닝

캐글에서 Chi square 데이터 분석

티에스윤 2023. 6. 8. 10:32

비모수 통계 분석을 할 때는 카이 스퀘어(Chi square)를 사용합니다. 

 

이번 내용의 카이 스퀘어는 사회조사방법론의 카이스퀘어 방법으로 사용하는 이유는 카테고리 데이터를 분석할 때 사용을 하는데, 여론조사나 TV 시청률 조사를 할 때 많이 사용하는 방법입니다. 

 

카이 스퀘어 공식은 간단합니다. 

 

 

 

 

 

기댓값과 과 관찰값에 대한 비례 수식입니다. 카이 스퀘어에서 스퀘어가 붙는 이유는 공식에 있습니다.

 

다음은 챗GPT에서 설명하는 카이스퀘어에 대한 내용을 한번 읽어 봅시다. 

 

 

-------------

 

 

카이 제곱(χ²) 검정은 사회과학 및 통계학에서 널리 사용되는 통계적인 방법 중 하나입니다. 이 방법은 두 범주형 변수 간의 관련성을 검증하거나 관찰된 빈도가 기대되는 빈도와 일치하는지를 판단하는 데 사용됩니다. 이를 통해 변수 간의 독립성 여부를 결정할 수 있습니다.

카이 제곱 검정에서 사용되는 공식은 다음과 같습니다:

χ² = ∑ ((O - E)² / E)

여기서,
χ²: 카이 제곱 통계량
∑: 모든 카테고리에 대한 합산
O: 관찰된 빈도
E: 기대되는 빈도

카이 제곱 공식은 관찰된 빈도와 기대되는 빈도 사이의 차이를 계산합니다. 이 차이를 제곱한 후, 기대되는 빈도로 나눠줍니다. 이러한 계산을 모든 카테고리에 대해 수행한 후, 모든 항목을 합산하여 카이 제곱 통계량을 얻을 수 있습니다.

카이 제곱 통계량은 자유도(degree of freedom)와 함께 사용됩니다. 자유도는 분석 중인 범주형 변수의 카테고리 수와 관련이 있습니다. 자유도를 계산하는 방법은 (행의 카테고리 수 - 1) * (열의 카테고리 수 - 1)입니다. 이 자유도를 사용하여 카이 제곱 분포의 임계값을 찾고, 이를 통해 귀무가설을 기각하거나 채택할 수 있습니다.

카이 제곱 검정을 통해 변수 간의 독립성을 확인할 수 있으며, 예를 들어 교육 수준과 직업 분야 간의 관련성, 성별과 투표 여부 간의 관련성 등을 분석할 때 유용합니다.

 

 

--------------

 

나름대로 정리가 잘 되어서 설명하는 내용입니다. 자유도를 기준으로 값을 정하고, 음수값이 나오지는 않겠죠. 

ANOVA에서 사용되는 F-test와는 조금은 다른 영역이지만, AP-Stat 시험에도 자주 나오는 내용이니 캐글에서 한번 정도는 실습해 봐도 괜찮을 것 같습니다. 

 

 

 

캐글에 있는 카이 스퀘어 소스를 한번 살펴봅시다. 

 

 

 

# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load in 

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import scipy.stats
# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory

from subprocess import check_output
print(check_output(["ls", "../input"]).decode("utf8"))

# Any results you write to the current directory are saved as output.
survey = pd.read_csv("../input/anonymous-survey-responses.csv")
survey.head()

scipy.stats.chisquare(survey["Have you ever taken a course in statistics?"].value_counts())

scipy.stats.chisquare(survey["Do you have any previous experience with programming?"].value_counts())

cont = pd.crosstab(survey["Have you ever taken a course in statistics?"],survey["Do you have any previous experience with programming?"])

scipy.stats.chi2_contingency(cont)

 

 

간단하게 나타는 소스이며 관련 링크는 아래와 같습니다. 

 

https://www.kaggle.com/code/omarayman/chi-square-test-in-python

 

 

데이터가 위치한 곳이며 이와 관련된 예제가 몇개 있으니 한번 실습해 보는 것도 괜찮습니다. 

 

anonymous-survey-responses-2nd-challenge.csv
0.57MB

https://www.kaggle.com/datasets/rtatman/5day-data-challenge-signup-survey-responses?resource=download 

 

5-Day Data Challenge Sign-Up Survey Responses

What are folks’ backgrounds? And do they prefer cats or dogs?

www.kaggle.com

 

 

 

아래 소스에서는 데이터를 입력 받아서 카이 스퀘어를 처리하는 방법입니다. 

 

https://www.kaggle.com/code/hamelg/python-for-data-25-chi-squared-tests

 

Python for Data 25: Chi-Squared Tests

Explore and run machine learning code with Kaggle Notebooks | Using data from Titanic - Machine Learning from Disaster

www.kaggle.com

 

 

https://onnons.tistory.com/138

'Kaggle 데이터 분석, 딥러닝' 카테고리의 다른 글

캐글에서의 회귀분석  (0) 2023.05.25
캐글에서의 가설검정  (0) 2023.05.23
판다스로 분석하는 포켓몬  (1) 2023.05.16
디렉토리 관련 명령어  (0) 2023.03.30
판다스 - 데이터프레임  (0) 2023.03.23