728x90
데이터에 따른 분석도구
추론 및 검정을 위한 데이터 분석 시에 분석 모델 선택에 영향을 주는 주요 구분 잣대는 사용되는 데이터 분석시 종속변수와 독립변수의 척도에 따라 분석 도구가 달라진다.
독립변수 | 종속변수 | 분석방법 |
범주형 | 범주형 | 카이제곱 검정 |
범주형 | 연속형 | T검정(범주형값 2개 이하) ANOVA검정 (범주형값 3개 이상) |
연속형 | 범주형 | 로지스틱 회귀 |
연속형 | 연속형 | 선형회귀, 구조 방정식 |
카이제곱 분포는 데이터들의 중심위치를 파악하는 대표적인 척도가 평균이다. 그리고 평균에서 데이터들이 흩어져 있는 정도, 즉 치우침을 표현하는 척도가 분산이다. 분산이 퍼져있는 모습을 분포로 만든 것이 카이제곱 분포이다.
* 카이제곱 분포의 그래프
- 항상 양의 값, 오른쪽 꼬리를 갖는 비대칭 분포, 자유도에 자유도가 클수록 좌우 대칭인 정규분포에 가까워진다.
1. 일원카이제곱검정 : 적합성 검정
2. 이원카이제곱검정 : 독립성 검정, 동질성 검정
*일원 카이제곱 검정 Test
# 카이제곱검정 중 일원카이제곱 : 변인 단수
# 관찰도수가 기대도수와 일치하는 지를 검정하는 방법
# 종류 : 적합도/선호도 검정
# - 범주형 변수가 한 가지로, 관찰도수가 기대도수에 일치하는지 검정한다.
# 적합도 검정
# 자연현상이나 각종 실험을 통해 관찰되는 도수들이 귀무가설 하의 분포(범주형 자료의 각 수준별 비율)에 얼마나 일치하는가에 대한
# 분석을 적합도 검정이라 한다.
# 관측값들이 어떤 이론적 분포를 따르고 있는지를 검정으로 한 개의 요인을 대상으로 함.
# <적합도 검정실습>
# 주사위를 60 회 던져서 나온 관측도수 / 기대도수가 아래와 같이 나온 경우에 이 주사위는 적합한 주사위가 맞는가를 일원카이제곱 검정
# 으로 분석하자.
# 관측도수 4 6 17 16 8 9 : 60회
# 기대도수 10 10 10 10 10 10 : 60회
# 귀무가설 : 기대치와 관찰치는 차이가 없다. 이 주사위는 게임에 적합하다.
# 대립가설 : 기대치와 관찰치는 차이가 있다. 이 주사위는 게임에 적합하지 않다.
import pandas as pd
import scipy.stats as stats
data = [4, 6, 17, 16, 8, 9] #관측값
exp = [10, 10, 10, 10, 10, 10]
print(stats.chisquare(data, exp))
#Power_divergenceResult(statistic=14.200000000000001, pvalue=0.014387678176921308)
#유의확률(p-value) 0.01439 < 유의수준 0.05 이므로 귀무가설을 기각하고 대립가설을 채택한다.
*이원카이제곱 검정 Test
import pandas as pd
data = pd.read_csv("pass_cross.csv", encoding='euc-kr') #euc-kr <- encoding해주기위함
print(data.head()) # data의 정보를 5개만 보기위함
print(data.shape) # data의 크기 확인
# 귀무가설과 대립가설 설정해주기
# 귀무가설 : 벼락치기 공부는 합격 여부와 관계가 없다.
# 대립가설 : 벼락치기 공부는 합격 여부와 관계가 있다.
# 귀무가설은 보수적으로 선언하며 대립가설은 귀무가설의 반대가설이어야 한다.
공부함 공부안함 합격 불합격
0 1 0 1 0
1 1 0 1 0
2 0 1 0 1
3 0 1 0 1
4 1 0 1 0
(50, 4)
crosstab을 이용하여 빈도표를 활용한다.
ctab = pd.crosstab(index=data['공부함'], columns = data['합격'], margins=True)
#ctab = pd.crosstab(index=data['공부안함'], columns=data['불합격'], margins=True)#둘 중 상관없다.
ctab.columns = ['합격', '불합격', '행합']
ctab.index = ['공부함', '공부안함', '열합']
print(ctab)
빈도표 ----
합격 불합격 행합
공부함 13 12 25
공부안함 7 18 25
열합 20 30 50
교차분석 연습 : 모듈이 제공하는 p-value를 사용한다.
import scipy.stats as stats
chi2, p, _, _, = stats.chi2_contingency(ctab)
print('chi2:{}, p-value:{}'.format(chi2, p))
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
chi2:3.0, p-value:0.5578254003710748
결론 : p-value 가 0.05보다 크므로 귀무가설을 채택하고 대립가설 기각한다.
즉 벼락치기 공부는 합격 여부와 관계가 없다.
728x90
'데이터분석 > 데이터분석' 카테고리의 다른 글
비율분석 (0) | 2022.04.30 |
---|---|
ANOVA (0) | 2022.04.30 |
T-test (0) | 2022.04.30 |
글 스크래핑 후 형태소를 분석 (0) | 2022.04.30 |
konlpy 한국어 처리 패키지 (0) | 2022.04.30 |