박스플롯

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.10
조회수
None
버전
v1

박스플롯

개요

박스플(Box Plot), 또는 수염 그림(Box-and-isker Plot) 데이터의 분포와 산포도를 시각적으로 표현하는 통 그래프이다. 주로 연속형 데이터 중심 경향, 산포, 왜도, 이상치(outlier) 등을 한눈에 파악할 수 있도록 설계되어 있으며, 특히 여러 그룹 간의 분포를 비교할 때 매우 유용하다. 박스플롯은 1977년 미국의 통계학자 존 터키(John Tukey)에 의해 제안되었으며, 탐색적 데이터 분석(EDA, Exploratory Data Analysis)에서 핵심 도구로 널리된다.


구성 요소

박스플롯은 다음과 같은 주요 구성 요소로 이루어진다:

  • 상자(Box): 제1사분위수(Q1, 25번째 백분위수)와 제3사분위수(Q3, 75번째 백분위수) 사이의 범위를 나타내며, 사분위 범위(IQR, Interquartile Range)를 시각화한다.
  • IQR = Q3 - Q1
  • 중앙값(Median, Q2): 상자 안에 있는 선으로 표시되며, 데이터의 중앙 위치를 나타낸다.
  • 수염(Whiskers): 상자의 양 끝에서 확장된 선으로, 일반적으로 Q1 - 1.5×IQR에서 Q3 + 1.5×IQR까지의 범위를 나타낸다.
  • 이상치(Outliers): 수염의 범위를 벗어난 데이터 포인트로, 점이나 별표(*)로 표시된다.

시각적 요약 예시

        ○
    ┌───┴───┐
    │   ┌───┼───┐
    └───┘   │   │
        └───┴───┘
    └─────────────────┘
   Q1       Q2       Q3

  • : 이상치
  • 상자: Q1에서 Q3까지
  • 중앙 선: Q2 (중앙값)
  • 수염 끝: 정상 범위의 최소/최대값

사용 목적과 장점

1. 분포 특성 파악

  • 데이터의 중심(중앙값), 산포(IQR), 대칭성 등을 직관적으로 확인할 수 있다.
  • 예: 중앙값이 상자의 왼쪽에 치우쳐 있으면 오른쪽 꼬리가 긴 우왜도(positive skew) 분포임을 의미한다.

2. 이상치 탐지

  • 수염 밖의 점들은 통계적으로 이상한 값으로 간주되며, 데이터 품질 검토나 이상 행동 탐지에 활용된다.

3. 그룹 간 비교

  • 여러 범주(예: 성별, 지역, 연도 등)에 대한 데이터 분포를 나란히 배치하여 쉽게 비교할 수 있다.
  • 예: 서울, 부산, 대구의 월평균 기온 분포 비교.

4. 비모수적 접근

  • 데이터의 분포가 정규분포가 아닐 경우에도 유용하며, 평균과 표준편차보다 로버스트(robust)하다.

박스플롯의 변형

기본적인 박스플롯 외에도 다양한 변형이 존재한다:

종류 설명
수평 박스플롯 상자가 가로로 배치되어, 특히 범주가 많은 경우 시각적 정리에 유리하다.
그룹화된 박스플롯 두 개 이상의 범주를 기준으로 데이터를 분할하여 비교 (예: 성별 × 연령대).
바이올린 플롯(Violin Plot) 박스플롯과 커널 밀도 추정을 결합한 그래프로, 분포의 형태(예: 이중봉우리)를 더 잘 보여준다.
노치 박스플롯(Notched Box Plot) 중앙값 주변에 "노치"(notch)를 추가하여 중앙값의 신뢰구간을 시각화한다. 두 박스의 노치가 겹치지 않으면 중앙값이 통계적으로 유의미하게 다름을 의미한다.

활용 예시 (코드 기반)

다음은 Python의 [matplotlib](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/[Python](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4/Python)/matplotlib)[seaborn](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/seaborn) 라이브러리를 사용하여 박스플롯을 그리는 예시이다.

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# 샘플 데이터 생성
np.random.seed(42)
data = pd.DataFrame({
    '그룹': np.repeat(['A', 'B', 'C'], 100),
    '값': np.concatenate([
        np.random.normal(50, 10, 100),
        np.random.normal(55, 15, 100),
        np.random.normal(60, 8, 100)
    ])
})

# 박스플롯 그리기
plt.figure(figsize=(10, 6))
sns.boxplot(x='그룹', y='값', data=data)
plt.title('그룹별 값의 분포 (박스플롯)')
plt.xlabel('그룹')
plt.ylabel('값')
plt.show()

이 코드는 세 그룹(A, B, C)의 데이터 분포를 비교하는 박스플롯을 생성하며, 각 그룹의 중앙값, IQR, 이상치 등을 시각적으로 표현한다.


주의사항

  • 이상치 정의의 제한: 1.5×IQR 기준은 경험적 규칙이며, 모든 이상치가 반드시 오류를 의미하지는 않는다.
  • 데이터 크기 영향: 데이터 수가 매우 적을 경우 박스플롯의 해석이 왜곡될 수 있다.
  • 분포 형태의 제한: 박스플롯은 다봉분포(multimodal) 같은 복잡한 분포 형태를 제대로 반영하지 못한다. 이 경우 히스토그램이나 바이올린 플롯이 더 적합할 수 있다.

관련 문서 및 참고 자료


박스플롯은 데이터 과학에서 기본적이면서도 강력한 시각화 도구로, 빠르게 데이터의 특성을 파악하고 의사결정을 지원하는 데 중요한 역할을 한다. 특히 탐색적 분석 초기 단계에서 필수적으로 활용되며, 데이터 리터러시를 높이는 데 기여한다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?