꾸준히 성장하기

[D+24] 교육 | 이변량 분석의 핵심: 수치-수치 & 범주-수치 간 관계 본문

KT 에이블스쿨 5기/교육

[D+24] 교육 | 이변량 분석의 핵심: 수치-수치 & 범주-수치 간 관계

data.dohii 2024. 3. 15. 23:01

오늘의 주제는 이변량 분석에서 매우 중요한 두 가지 유형의 관계, 즉 수치(x)-수치(y) 간의 관계범주(x)-수치(y) 간의 관계에 관한 내용입니다. 

이 두 관계를 이해하는 것은 데이터 분석에서 필수적인 부분이며, 여러분의 DX 컨설턴트로서의 역량을 높이는 데 큰 도움이 될 것입니다.


1. 수치(x)→수치(y) 간의 관계 "직선"

1) 시각화: 산점도

산점도는 두 수치형 변수 사이의 관계를 시각적으로 파악하는 데 매우 유용합니다. 

데이터 포인트가 직선에 가까이 모여 있으면 강한 선형 관계를 나타내며, 흩어져 있으면 두 변수 사이에 관계가 없음을 의미합니다. 

 

수치 → 수치 이변량 분석 함수 코드

def eda_2_nn(data, feature, target):

# Scatter plot

temp = data.loc[data[feature].notnull()]

sns.scatterplot(x=feature, y=target, data=temp)

plt.grid()

plt.show()

 

# Pearson correlation coefficient

result = spst.pearsonr(temp[feature], temp[target])

print(f'Correlation coefficient: {result[0]}, P-value: {result[1]}')

tax(제산세율) → medv(집값) 산점도

eda_2_nn(boston, 'tax', 'medv')

 

tax(제산세율) → medv(집값) 산점도와 단변량

sns.jointplot(x='tax', y='medv', data=boston)

plt.show()

 

2) 수치화: 상관계수 및 상관분석

상관계수(r)는 -1부터 1까지의 값을 가지며, 이는 두 변수 사이의 선형 관계의 강도와 방향을 나타냅니다. 

r 값이 1에 가까우면 강한 양의 선형 관계를, -1에 가까우면 강한 음의 선형 관계를 의미합니다. 

상관분석에서 p-value는 상관계수가 통계적으로 유의미한지를 검정합니다. 

p-value가 0.05 미만이면 두 변수 사이에 유의미한 관계가 있다고 볼 수 있습니다.

 

수치 → 수치 수치화 분석

result = spst.pearsonr(boston['tax'], boston['medv']) print(result)

 

2. 범주(x)→수치(y) 간의 관계 "평균비교"

1) 시각화: bar plot (평균비교)

범주-수치 간의 관계를 시각화하는 방법 중 하나는 바 플롯을 사용하는 것입니다. 

바 플롯은 각 범주별 평균값을 막대로 나타내며, 검은 세로 선은 신뢰구간을 나타내어 평균값의 정확도를 제공합니다. 

이를 통해 여러 범주 간의 평균값을 비교하여 차이를 쉽게 파악할 수 있습니다.

 

범주 → 수치 이변량 분석 함수 코드(0: 사망, 1: 생존)

sns.barplot(x="Survived", y="Age", data=titanic)

plt.grid()

plt.show()

 

2-1) 두 집단일 때, 수치화: t-test

t-test를 사용하여 두 집단의 평균 차이가 통계적으로 유의미한지 검정합니다. 

t 통계량이 -2보다 작거나 2보다 크면 두 집단 사이에 유의미한 차이가 있음을 의미합니다.

t 통계량 < -2 또는 t 통계량 > 2 = 차이가 있다 = 내 의견 = 대립 가설

 

범주 → 수치 t-test

# NaN 행 제외

temp = titanic.loc[titanic['Age'].notnull()]

#  두 그룹으로 데이터 저장

died = temp.loc[temp['Survived'] == 0, 'Age']

survived = temp.loc[temp['Survived'] == 1, 'Age']

#  t-test

spst.ttest_ind(died, survived)

 

2-2) 세 집단일 때, 수치화: ANOVA(분산분석)

ANOVA(분산분석)를 사용하여 세 개 이상의 집단 평균 사이에 차이가 있는지 검정합니다. 

F 통계량은 집단 간 분산과 집단 내 분산의 비율로 계산되며, 이 값이 클수록 집단 간에 유의미한 차이가 있음을 의미합니다.

분산은 제곱을 한 후의 값이기에 음수 값이 나올 수 없습니다.
F 통계량 = 집단 간 분산 / 집단 내 분산
집단 간 분산 > 집단 내 분산 = F통계량 값이 크다 = 집단 내 값들이 오밀조밀 = 신뢰도가 높다 = 대립 가설 = 차이가 있다

 

범주 → 수치 ANOVA

# NaN 행 제외

temp = titanic.loc[titanic['Fare'].notnull()]

#  세 그룹으로 데이터 저장

E_1 = temp.loc[temp.Embarked == 'S', 'Fare']

E_2 = temp.loc[temp.Embarked == 'C', 'Fare']

E_3 = temp.loc[temp.Embarked == 'Q', 'Fare']

#  ANOVA

result = spst.f_oneway(E_1, E_2, E_3)

 


이러한 분석 방법을 이해하고 적용하는 것은 데이터를 해석하고 인사이트를 도출하는 데 있어 매우 중요합니다. 

오늘 다룬 내용을 잘 이해하고 실습에 적극적으로 참여하는 것을 추천드립니다🌟

반응형