AI/기초통계

[기초통계] 백분위수와 사분위수범위, quantile() in R (What is Percentile and Interquartile Range?)

슈퍼짱짱 2019. 9. 22. 08:00
반응형

지난 포스팅들에서 자료를 표현하는 방법에 대해 알아보았다.

 

>> 평균 vs 중앙값 vs 최빈값 바로가기

>> 분산과 표준편차란? 바로가기

 

특히 지난 시간에는 퍼진 정도를 나타내는 분산과 표준편차에 대해 알아보았다.

이번에는 백분위수와 사분위수에 대해 알아보겠다.

 


 

백분위수란? What is Percentile?

 

중앙값은 전체의 관측값을 반으로 나누는 경계값이다. 즉, 중앙값은 전체의 관측값 중 50% 위치에 해당하는 값이다.

이 개념을 확장하여 전체 관측값을 크기 순서대로 배열했을 때, 전체의 관측값을 (100xp)%와 100x(1-p)%로 나눌 수 있는 값을 백분위수라 한다.

 

자료의 수가 n개 일때, 제 100 x p 백분위수는 그 값보다 작거나 같은 관측값의 개수가 np개 이상이고, 그 값보다 크거나 같은 관측값이 n(1-p)개 이상인 값이다.

 

예를들어, 1 2 4 6 8 의 5개 관측값에서 제 30 백분위수는 2이다.

왜냐하면 그 값보다 작거나 같은 관측값의 개수가 5x0.3=1.5개 이상이어야 하고, 그 값보다 크거나 같은 관측값의 개수가 5x0.7=3.5 이상이어야 한다. 이때 2보다 작거나 같은 관측값이 2개이고, 2보다 크거나 같은 관측값이 4개이므로 제 30백분위수는 2이다.

 

그러나 제 40 백분위수의 경우 2와 4 모두 해당된다. 이럴 때 이론적으로는 2와 4 사이의 모든 값이 제 40 백분위수가 될 수 있으나, 일반적으로 두 수의 중앙값을 백분위수로 정한다.

 

제 100 x p 백분위수 구하는 방법

 

1. 관측값을 작은 순서로 배열한다.

2. 관측값의 개수(n)에 p를 곱한다.

1) 만약 n x p가 정수이면, n x p 번째로 작은 관측값과 n x p + 1 번째로 작은 관측값의 평균을 제 100 x p 백분위수로 한다.

2) 만약 n x p가 정수가 아니면, n x p에서 정수부분에 1을 더한 값 m을 구한 수, m 번째 작은 관측값을 제 n x p 백분위수로 한다.

 

예)

 

다음 관측값의 제 50 백분위수(중앙값)과 제 20 백분위수를 구하라.

 

42 40 38 37 43 39 78 38 45 44 40 38 41 62 61 44

 

-> 위 자료의 크기를 순서대로 재배열 하면 다음과 같다.

37 38 38 38 39 40 40 41 42 43 44 44 45 78 61 62

 

관측값의 개수가 16개 이므로 제 50 백분위수는 8 번째로 작은 값과 9 번째로 작은 값의 평균값이다. 즉 제 50 백분위수는 41.5가 된다.

 

제 20 백분위수는 16 x 0.2 = 3.2이므로 4번째 작은 값인 38이다.

 


 

사분위수란? What is Quartile?

IQR이란?

 

전체 관측값을 작은 순서로 배열했을 때, 사분위수는 전체를 사등분하는 값을 나타낸다. 즉, 전체 사분의 1, 사분의 2, 사분의 3 은 각각 전체의 25%, 50% 75% 이므로 제 1 사분위수, 제 2 사분위수, 제 3 사분위수는 각각 제 25 백분위수, 제 50 백분위수, 제 75 백분위수이며 각각 Q1, Q2, Q3로 표시한다.

이때, 중앙값은 전체의 1/2 위치에 위치하는 값이므로 제 2사분위수인 동시에 제 50 백분위수가 된다.

 

사분위수

 

제 1 사분위수 = Q1 = 제 25 백분위수

제 2 사분위수 = Q2 = 제 50 백분위수

제 3 사분위수 = Q3 = 제 75 백분위수

 

이 때, 제 3 사분위수와 제 1 사분위수 사이의 거리를 자료의 퍼진 정도의 측도로 사용할 수 있는데 이 수치를 사분위수범위(IQR, interquartile range)라 한다.

 

사분위수 범위 : IQR = 제 3 사분위수 - 제 1 사분위수 = Q3 - Q1

 

IQR은 상위 25%의 관측값과 하위 25%의 관측값을 제외한 중앙에 위치한 50%의 관측값의 퍼진 정도를 나타낸다. 따라서 극단값에 영향을 받지않는다.

 

예)

 

다음 관측값의 IQR을 구하여라.

 

42 40 38 37 43 39 78 38 45 44 40 38 41 62 61 44

 

-> 제 1 사분위수 : 38.75, 제 3사분위수 : 44.25

IQR = 44.25 - 38.75 = 5.5

 

사분위수의 위치와 사분위수 범위를 그림으로 나타내면 다음과 같다.

 

1
2
3
4
5
ggplot(data.frame(x = c(-5, 5)), aes(x=x)) +
  stat_function(fun=dnorm, args=list(mean=0, sd=1)) +
  geom_vline(xintercept = c(quantile(-5:5)[2:4])) +
  theme_bw() + labs(x="",y="")
 
cs

 

 


 

R에서 사분위수 구하기 quantile in R

 

R에서 백분위수(Percentile)는 다음 함수로 구할 수 있다.

 

quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE, names = TRUE, type = 7, ...)

 

이때 quantile에서 probs 파라미터로 원하는 백분위수를 조정할 수 있으며, Default값이 seq(0, 1, 0.25)로 따로 지정해주지 않으면 사분위수를 반환한다.

 

예1)

 

다음 관측값의 사분위수를 구하여라.

 

42 40 38 37 43 39 78 38 45 44 40 38 41 62 61 44

 

1
quantile(c(42, 40, 38, 37, 43, 39, 78, 38, 45, 44, 40, 38, 41, 62, 61, 44))
cs

 

   0%   25%   50%   75%  100% 

37.00 38.75 41.50 44.25 78.00 

 

 

예2)

 

예1의 관측값의 제 20 백분위수를 구하여라

 

1
2
x <- c(42, 40, 38, 37, 43, 39, 78, 38, 45, 44, 40, 38, 41, 62, 61, 44)
quantile(x, probs = 0.2)
cs

 

20% 

 38

 


 

R에서 IQR은 다음 함수로 구할 수 있다.

 

IQR(x, na.rm = FALSE, type = 7)

 

 

예3) 

 

예1 의 관측치의 IQR을 구하여라

 

1
2
x <- c(42, 40, 38, 37, 43, 39, 78, 38, 45, 44, 40, 38, 41, 62, 61, 44)
IQR(x)
cs

 

5.5

 

1
2
3
x <- c(42, 40, 38, 37, 43, 39, 78, 38, 45, 44, 40, 38, 41, 62, 61, 44)
q <- quantile(x)
IQR(x) == q[4]-q[2]
cs

 

TRUE

 

반응형