오답노트

[데이터 분석] 이변량 분석 - 수치 데이터와 범주 데이터 본문

Python/데이터 분석

[데이터 분석] 이변량 분석 - 수치 데이터와 범주 데이터

권멋져 2022. 8. 12. 20:38

시각화

시각화는 히스토그램과 밀도함수 그래프 각각 할 수 있다.

이 때는 범주별로 겹쳐서 출력 후 비교한다.

 

밀도함수 그래프

sns.kdeplot(x='Age', data = titanic, hue ='Survived', common_norm = False)
plt.show()

1.1.1 kdeplot

hue 옵션으로 범주를 설정해줘야 한다.

그리고 common_norm 옵션을 False로 해야 정확한 결과를 얻을 수 있다.

common_norm이 True면 두 면적의 합이 1이 되게 한다. False를 입력하면 각 면적이 1이 되도록 출력한다.

 

표 해석은 다음과 같이 할 수 있다.

 

0세 부터 20세까지는 산 사람이 많고

약 30세부터 40세까지는 죽은 사람이 많다.

40세부터 60세까지는 산 사람이 조금 많고

60세부터 80세까지는 죽은 사람이 조금 많다.

 

이렇게 구간별 해석도 가능하다.

 

sns.kdeplot(x='Age', data = titanic, hue ='Survived', multiple = 'fill')
plt.show()

1.1.2 kdeplot multiple fill 옵션

multiple 옵션에 fill을 입력하면 색이 찬 그래프로 출력되는데, 비율을 비교하는데 용이하다.

 

히스토그램

sns.histplot(x='Age', data = titanic, hue = 'Survived')
plt.show()

1.2.1. hist

hue 옵션으로 범주를 설정해줘야 한다.

 

kdeplot 과 마찬가지로 multiple 옵션에 fill을 입력해서 출력할 수 있다.

 

sns.histplot(x='Age', data = titanic, bins = 16
             , hue ='Survived', multiple = 'fill')
plt.show()

1.2.2 hist multiple fill 옵션

수치화

수치 데이터 와 범주 데이터에 대해 가설검정을 위한 도구가 없다.

대신 로지스틱 회귀 모델로 부터 p 값을 구할 수 있다.

 

import statsmodels.api as sm
sm.Logit(타겟시리즈, 변수시리즈).fit()

 

model = sm.Logit(titanic['Survived'], titanic['Age'])
result = model.fit()
print(result.pvalues)


'''

Optimization terminated successfully.
         Current function value: 0.661967
         Iterations 4
Age    3.932980e-13
dtype: float64

'''

3.932980e-13 가 p 값이다. 0.0125 보다 작으므로 상관관계가 있다고 볼 수 있다.