[파이썬] 사분위수(Quantiles)란?
- 수학
- 2022. 11. 7.
사분위수란 데이터를 가장 작은 값부터 큰 값으로 나열하고 4등분을 했을 때의 각 등분에 해당하는 값을 말합니다. 그래서 4등분했을 때의 값들을 등위라고 하는데 제p사분위수 라고 합니다.
- 제1사분위수(Q1) : 전체 데이터를 사등분했을 시 1번째에 해당하는 값, 데이터를 작은수부터 나열했을때 25% 지점에 해당하는 수.
- 제2사분위수(Q2) : 전체 데이터를 사등분했을 때 2번째에 해당하는 수, 50% 지점에 해당하는 수로 중간값(median)과 동일
- 제3사분위수(Q3) : 전체 데이터를 사등분했을 때 3번째에 해당하는 수, 75% 지점에 해당하는 수
- 사분위수 범위(Interquartile range,IQR) : Q3-Q1으로 자료 집합의 50%를 가지는 값의 범위.
실생활에서 많이 쓰는 등분은 100,10,4인데 100등분을 하는 경우 백분위수(percentile)이라고 하고, 10등분을 하는 경우 십분위수(decille)이라고 합니다.
이를 사분위수에 적용하면 제1사분위수(Q1) 은 25%에 해당하므로 제25백분위수(25th percentile) 라고 표현할 수 있습니다. 제2사분위수(Q1)는 제50백분위수(50th percentile) 또는 제5십분위수(5th decile) 라고 말할 수 있습니다.
사분위수 표현하기
그래프 그리기
사분위수를 가장 잘 표현하는 그래프는 박스 플롯(box plot)입니다. 박스 플롯는 '상자 수염 그림'(Box-and-Whisker Plot) 이라고도 하는데 데이터분포나 이상치 확인을 하는데 유용합니다. 그래프가 사분위수를 염두해 만들어서 데이터의 사분위가 어디인지 한눈에 볼 수 있습니다.
박스 플롯을 그리는 방법은 다음 포스팅에서 확인해보시기 바랍니다.
[Python] boxplot 그리기(matplotlib,seaborn)
수치로 구하기
numpy를 이용하면 아주 쉽게 구할 수 있습니다. numpy의 메쏘드 중에 percentile과 quantile이 있습니다. 짐작하셨겠지만 percentile은 100분위수, quantile은 4분위수를 의미합니다.
4분위수를 percentile과 quantile을 이용해 구해보겠습니다.
percentile
import numpy as np
# np.percentile(데이터,백분위수)
np.random.seed(1)
x =np.random.randint(1,100,size=(20,))
print ("Quantiles:")
for val in [0,25,50,75,100]:
dt_qntls = np.percentile(x,val)
print (str(val)+"%" ,dt_qntls)
# IQR 구하기
q75, q25 = np.percentile(x, [75 ,25]); print ("IQR:",q75-q25)
quantile
# np.quantile(데이터,4분위수) - 4분위수는 백분위를 0~1사이 숫자로 표현
print ("Quantiles:")
for val in [0,0.25,0.5,0.75,1]:
dt_qntls = np.quantile(x,val)
print (str(val*100)+"%" ,dt_qntls)
# IQR
q75, q25 = np.quantile(x, [0.75 ,0.25]); print ("IQR:",q75-q25)
percentile과 quantille이 같은 값으로 나옵니다. 더 선호하는 함수로 선택해서 쓰시면 됩니다.
관련 포스팅
[Python] boxplot 그리기(matplotlib,seaborn)
'수학' 카테고리의 다른 글
[미적분] 복리계산법 (0) | 2023.07.15 |
---|---|
[미적분] 자연상수 e의 정의 (0) | 2023.07.13 |
파이썬으로 정규분포 그리기 (0) | 2022.10.06 |
[sympy] 파이썬으로 미분방정식 해 구하기(증명 필요없음) (0) | 2022.06.23 |
수학 기호 입력 사이트들 (0) | 2022.06.17 |