BDA

[BDA] 7주차 이변량 분석2 범주형 vs 범주형

getfeelingsfrom 2025. 12. 1. 23:59

이번 주에는 지난주에 이어 EDA (탐색적 분석)과, CDA(확인적 분석)에 따라 

단변량 분석, 이변량 분석, t-test, ANOVA에 대해 배웠습니다. 

 

 

1주차 때 강사님이 가장 중요한 거라고 강조했던 CRISP-DM을 오랜만에 다시 짚어보고 수업을 시작했어요.

문제 정의 -> 데이터 이해 -> 데이터 준비 -> 모델링 -> 평가 -> 배포까지의 과정을 뜻하는데 분석의 시작은 비즈니스 문제 정의이며, 가설 수립에서 부터 출발한다고 다시 언급해 주셨습니다. 


단변량 분석 

먼저 단변량 분석에 대해 이야기 해보자면 지난주에 다뤘던 내용들 입니다, 

숫자형 변수는 평균/ 중앙값/ 사분위 수/ 도수분포표 등 기초 통계량과 히스토그램/ 박스플롯을 활용하여 데이터의 분포를 체크합니다. 

 

범주형 변수는 value_counts(), 비율 계산, barplot을 활용하여 분포를 파악합니다.

 

barplot으로 평균 나이를 비교할 수 있다. 

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

 


이변량 분석

숫자형 변수끼리는 

산점도, 상관계수, p-value를 통해 관계성을 확인할 수 있습니다. 

 

만약, 범주와 숫자 데이터를 비교한다면 어떻게 해야할까요? 

먼저 barplot을 이용하여 시각화를 진행해줍니다. 

해당 과정을 통해 두 집단의 평균을 비교하고, 신뢰 구간을 해석할 수 있습니다. 

범주가 3개 이상일 때도 동일하게 시각화를 진행하여 분석을 진행해나가면 됩니다.

 

 


수치화 도구 - T-test & ANOVA

 

T-test는 범주가 2개일 때 사용합니다. 두 집단의 평균 차이가 통계적으로 유의미한지 확인할 때 사용하는데요.

p-value<0.05일 경우 유의미하다고 이야기하고, t통계량은 |2| 이상일 때 차이가 있다고 해석합니다. 

 

# 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)  # 0.05보다 작다

 

이 코드를 실행 했을 때 t= 2.06, p=0.039정도였습니다.

p-value<0.05이고 , t값은 >|2|이기 때문에 생존 여부에 따라 나이에 유의미한 차이가 있지ㅣ만, t값이 2와 매우 가깝기 때문에 큰 차이는 아니지만 미세한 차이는 있을 거라고 추정할 수 있습니다. 

 

 

ANOVA는 T-test와 다르게 범주가 3개 이상일 때 사용합니다. 전체 평균과 각 그룹의 평균 간의 차이를 비교하여 F값이 크고 p<0.05이면 그룹 간 차이가 존재합니다. 하지만, 어느 그룹과의 차이인지는 꼭 확인해봐야합니다.  

 

 

범주가 3개이기 때문에 그룹별 데이터를 만들어주는 것이 우선입니다, 

# 1) 분산 분석을 위한 데이터 만들기
# NaN 행 제외
temp = titanic.loc[titanic['Age'].notnull()]

# 그룹별 저장
P_1 = temp.loc[temp.Pclass == 1, 'Age']
P_2 = temp.loc[temp.Pclass == 2, 'Age']
P_3 = temp.loc[temp.Pclass == 3, 'Age']

 

다음과 같은 ANOVA를 실행하면 

spst.f_oneway(P_1, P_2, P_3)

 

F=57.44 정도, p<0.05이기 때문에 

객실 등급에 따라 나이 분포에 유의미한 차이가 있다는 것을 알 수 있었습니다. 

 


저는 요즘 데이터 직무에 대해 생각하는 시간이 늘어났는데요 

어떤 일을 해야 가장 행복하게 오래 이 일을 할 수 있을지에 대한 고민을 많이 하고 있어요

 

엔터와 관련된 데이터를 가지고 데이터를 분석하고 미래를 예측하는 데이터분석가/ 데이터 사이언티스트를 하면

내가 행복하게 일할 수 있지 않을까 싶기도 하고..

미래를 생각했을 때 제가 BDA학회에서 첫 발을 내디딘건 되게 잘한 일 같아요

 

체계적인 커리큘럼을 통해 다양한 방법을 배워가고 있으니까요 

 

앞으로는 더 실전 문제에 적용해서 해보고 싶습니당