오늘 아는 분이 박스 플롯의 의미가 무엇이고 어떻게 그리는지 궁금하다고 말씀하셔서 이야기 나온김에 정리를 해본다.
박스 플롯을 사용하는 이유는 많은 데이터를 눈으로 확인하기 어려울 때 그림을 이용해 데이터 집합의 범위와 중앙값을 빠르게 확인할 수 있는 목적으로 사용한다. 또한 통계적으로 이상치(outlier)가 있는지도 확인이 가능하다.
'박스 플롯'은 '상자 수염 그림'(Box-and-Whisker Plot) '상자 그림' 등 다양한 이름으로 불린다.
기술 통계학에서 박스 플롯은 수치적 자료를 표현하는 그래프이다. 이 그래프는 자료에서 얻은 다섯 수치 요약(five number summary)을 가지고 그린다.
다섯 수치 요약은 아래와 같다.
- 최솟값 : 제 1사분위에서 1.5 IQR을 뺀 위치이다. 1
- 제 1사분위(Q1) : 25%의 위치를 의미한다.
- 제 2사분위(Q2) : 50%의 위치로 중앙값(median)을 의미한다.
- 제 3사분위(Q3) : 75%의 위치를 의미한다.
- 최댓값 : 제 3사분위에서 1.5 IQR을 더한 위치이다.
- Q1 = 16
- Q2(중위수) = 39
- Q3 = 46
- 사분위간 범위(IQR) = 30
- 1.5 IQR = 32 x 1.5 = 45
아웃라이어 범위:
- 하한값: -29.0
- 상한값: 91.0
- 주어진 데이터에서 각 사분위수를 계산한다.
- 그래프에서 제 1사분위수와 제 3사분위수를 기준으로 박스를 그린다.
- 제 2사분위수에 해당하는 위치에 선을 긎는다.
- 제 3사분위수에서 1.5IQR을 더한 위치에 가로 선을 긎고 제 3사분위수부터 가로선까지 세로선을 긎는다.
- 제 1사분위수에서 1.5IQR을 뺀 위치에 가로 선을 긎고 제 1사분위수부터 가로선까지 세로선을 긎는다.
- 4,5번에 그은 직선을 넘어서는 위치에 존재하는 값은 동그라미와 같은 기호로 표시한다.(이상치 의미)
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 데이터 정의
data = [7, 9, 16, 36, 39, 45, 46, 48, 51]
# Seaborn을 사용하여 Boxplot 그리기
plt.figure(figsize=(10, 6))
sns.boxplot(data=data)
plt.title('Boxplot')
plt.ylabel('값')
plt.show()
# 추가 설명
print("\n박스플롯 해석:")
print("- 박스의 아래쪽 경계: Q1 (1사분위수)")
print("- 박스 내부의 선: Q2 (중앙값)")
print("- 박스의 위쪽 경계: Q3 (3사분위수)")
print("- 수염(whisker)의 끝: 최소값과 최대값 (이상치 제외)")
print("- 박스의 높이: IQR (Q3 - Q1)")
# 사분위수 계산 및 출력
Q1 = np.percentile(data, 25)
Q2 = np.percentile(data, 50)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
print(f"\n계산된 값:")
print(f"Q1: {Q1}")
print(f"Q2 (중앙값): {Q2}")
print(f"Q3: {Q3}")
print(f"IQR: {IQR}")
# 아웃라이어 계산
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers = [x for x in data if x < lower_bound or x > upper_bound]
print(f"\n아웃라이어 범위:")
print(f"하한값: {lower_bound}")
print(f"상한값: {upper_bound}")
print(f"아웃라이어: {outliers}")
Reference
https://ko.wikipedia.org/wiki/%EC%83%81%EC%9E%90_%EC%88%98%EC%97%BC_%EA%B7%B8%EB%A6%BC
http://goodtogreate.tistory.com/entry/%EC%9D%B4%EC%83%81%EC%B9%98-%EC%A0%9C%EA%B1%B0-Boxplot-%ED%95%B4%EC%84%9D%EC%9D%84-%ED%86%B5%ED%95%9C
http://newmkka.tistory.com/348
http://flowingdata.com/2008/02/15/how-to-read-and-use-a-box-and-whisker-plot/
https://support.minitab.com/ko-kr/minitab/18/help-and-how-to/graphs/how-to/boxplot/interpret-the-results/quartiles/
- IQR : Interquartile range의 약어이며 제 3분위 - 제 1분위의 값을 의미한다. [본문으로]
'통계(Statistics)' 카테고리의 다른 글
코헨의 카파 계수 (0) | 2024.08.19 |
---|---|
t-test를 이용해서 두 집단간의 차이를 검정하는 방법 (0) | 2022.12.23 |
중심극한정리 (0) | 2017.09.08 |