BDA

[BDA] 9주차 : 이변량 분석(수치형 vs 범주)

getfeelingsfrom 2026. 1. 15. 10:09

이변량 분석이란?

두 변수 간에 관계가 존재하는지 확인하는 분석 단계

 

 

수치형 변수와 범주형 변수와의 관계를 파악해보기 ! 

  • 수치형 변수: Age
  • 범주형 변수: Survived (0/1)

“나이라는 숫자가 생존 여부라는 범주 결과와 관련이 있는가?”

 


숫자 -> 범주 시각화 

📌 KDE Plot을 사용하는 이유

  • 히스토그램보다 분포의 흐름을 부드럽게 표현
  • 집단 간 분포 차이와 겹치는 구간을 직관적으로 확인 가능

숫자 -> 범주 

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

 

  • x축: Age (나이, 수치형 변수)
  • y축: Count (해당 나이 구간에 속한 인원 수)
  • 색상(hue):
    • Survived = 0 → 사망자
    • Survived = 1 → 생존자
  • 전체 연령 분포 특징
    • 전체적으로 20~40대 구간에 승객이 가장 많이 분포
    • 특히 30대 전후에서 가장 높은 빈도를 보임
    • 고령층(60대 이상)과 저연령층(10세 이하)은 상대적으로 표본 수가 적음

 

  • 전체 연령 분포 특징
    • 전체적으로 20~40대 구간에 승객이 가장 많이 분포
    • 특히 30대 전후에서 가장 높은 빈도를 보임
    • 고령층(60대 이상)과 저연령층(10세 이하)은 상대적으로 표본 수가 적음
 
import seaborn as sns 
import matplotlib.pyplot as plt 
sns.kdeplot( x='Age', data=titanic, hue='Survived', common_norm=False ) 
plt.show()

  • x축: Age (나이)
  • y축: Density (확률 밀도)
  • 색상(hue):
    • Survived = 0 → 사망자
    • Survived = 1 → 생존자
  • common_norm=False
    • 생존자와 사망자의 분포를 각각 독립적으로 정규화
    • 두 집단의 분포 형태 자체를 비교하는 데 목적
  • 전체적인 분포 특징
    • 두 집단 모두 20~40대 구간에 분포의 중심이 위치
    • 특히 30대 전후에서 가장 높은 밀도를 보임
    • 전체 연령 분포가 오른쪽으로 긴 꼬리를 가지는 우측 편향(right-skewed) 형태
  • 생존자 vs 사망자 분포 차이
    • 사망자(Survived = 0)
      • 30대 전후에서 더 뾰족한 피크(높은 밀도) 형성
      • 이는 해당 연령대에 사망자가 집중되어 있음을 의미
    • 생존자(Survived = 1)
      • 분포가 상대적으로 완만하게 퍼져 있음
      • 저연령층(0~10세) 구간에서
        사망자 대비 상대적으로 높은 밀도가 관찰됨
  • 두 분포가 교차하는 구간
    • 생존자와 사망자 분포가 여러 연령대에서 겹침
    • 이는 나이 하나만으로
      • 생존 여부를 명확하게 구분하기 어렵다는 점을 의미

 

sns.kdeplot(x='Age', data = titanic, hue ='Survived'
            , multiple = 'fill')#모든 구간에 대한 100% 비율로 kde plot 그리기
plt.axhline(titanic['Survived'].mean(), color = 'r') #평균선
plt.show()
 
 

 

  • x축: Age (나이)
  • y축: Density (각 나이 구간에서의 생존/사망 비율 합 = 1)
  • 색상(hue):
    • Survived = 0 → 사망 비율
    • Survived = 1 → 생존 비율
  • multiple='fill'
    • 각 나이 구간을 100% 기준으로 분해
    • 연령대별 생존 비율 비교에 최적화된 시각화
  • 빨간 수평선
    • 전체 평균 생존율 (약 0.38)
  • 저연령층 (약 0~15세)
    • 생존 비율이 전체 평균 생존율보다 뚜렷하게 높음
    • 어린 승객이 구조 우선순위에 있었음을 시각적으로 확인 가능
  • 청·장년층 (약 20~40대)
    • 생존 비율이 평균선 이하로 내려가는 구간이 다수 존재
    • 특히 30대 전후에서
      • 생존 비율이 가장 낮아지는 지점 중 하나가 나타남
    • 해당 연령대는
      • 전체 승객 비중은 높았으나
      • 상대적으로 생존 확률은 낮았음을 의미
  • 중·장년층 (약 50~70대)
    • 생존 비율이 급격히 감소
    • 평균 생존율을 크게 하회
    • 고령일수록 생존 가능성이 낮아지는 경향이 분명히 나타남
  • 고령 극단 구간 (80세 이상)
    • 생존 비율이 다시 급격히 상승
    • 다만 해당 구간은
      • 표본 수가 매우 적은 영역으로
      • 해석에 주의가 필요
  • 평균선(빨간선)을 기준으로 한 해석
    • 평균선 위 구간
      전체 평균보다 생존 가능성이 높은 연령대
    • 평균선 아래 구간
      상대적으로 생존 가능성이 낮은 연령대

 이 기준을 통해,

  • 단순 분포 비교가 아니라
  • 연령대별 생존 위험 구간을 명확히 구분할 수 있다.

EDA에서 한 단계 더 나아가는 지점이라고 느껴졌다.

단변량 → 이변량/ 감각적인 그래프 → 근거 있는 해석/ 코드 작성 → 분석 스토리 구성 이라는 행동을 하며 

조금 더 데이터 분석이라는 것에 가까워진 것 같다. 

 

앞으로 남은 BDAI 활동에서도
이런 방식으로 “왜 이런 결과가 나왔는지 설명할 수 있는 분석” 을 계속 연습해보고 싶다.