R로 간단한 기술통계 값을 확인하는 방법을 소개한다.
뭐 대단한 건 아니고 아래와 같은 값을 구해보는 거다.
- 평균 (mean)
- 중앙값 (median)
- 최빈값 (mode)
- 분산 (variance)
- 표준편차 (standard deviation)
- 사분위수 (quartiles)
- IQR
함수를 알아보기에 앞서 일단 계산하고자 하는 데이터를 준비하자.
이렇게 바로 벡터로 준비하든지.
dataset <- c(24, 16, 30, 10, 12, 28, 38, 2, 4, 36)
데이터프레임에서 특정 열을 선택하면 된다.
dataset <- df$col_name
평균
평균 구하는 함수는 mean()
이다.
example_average <- mean(dataset)
중앙값
중앙값 구하는 함수는 median()
이다.
example_median <- median(dataset)
벡터에 짝수 개의 원소가 있는 경우에는 가운데 2개의 평균 값으로 돌려준다.
최빈값
최빈값을 구하려면 R패키지 DescTools에 포함된 Mode()
함수를 사용한다.
library(DescTools)
example_mode <- Mode(dataset)
최빈값은 당연히 여러개가 나올 수도 있다.
분산
분산 구하는 함수는 var()
example_var <- var(dataset)
그런데 사실 이렇게 var()
로 구한 값은 실제 모분산이 아니라 표본분산이다.
만약 모분산을 실제로 계산해보면 값이 다른 걸 알 수 있을 거다.
분산 구하는 함수를 만들어서 적용해보자.
variance <- function(x) mean((x-mean(x))^2)
example_var <- variance(dataset)
표준편차
표준편차 구하는 함수는 sd()
example_sd <- sd(dataset)
물론 표준편차는 “분산의 제곱근”이기 때문에 이렇게 계산해도 된다.
example_sd <- var(dataset) ^ 0.5
아니면 이렇게
example_sd <- sqrt(var(dataset))
사분위수
사분위수는 quantile()
함수를 쓰면 된다. base R 함수다.
예를 들어 Q₃를 구하고 싶다면 0.75를 써서 이렇게
third_quartile <- quantile(dataset, 0.75)
함수 이름은 quartile이 아닌 quantile임에 주의하자.
quantile은 흔히 얘기하는 백분위수, 100조각으로 데이터 세트를 나누었을 때 몇 번째 위치에 있는 값인지 확인하는 방식이다. 그래서 여기에 0~1 사이의 값을 넣어주면 된다.
quartile(사분위수)도 quantile의 일종이라 보면 되겠다.
그러니 Q₃ − Q₁을 구하고 싶다면 0.25를 넣어주면 된다. 0.5를 넣으면 중앙값(median)을 알 수 있을 것이고.
한 방에 다 구하고 싶으면 이렇게 써줄 수도 있겠다.
quartiles <- quantile(dataset, c(0.25, 0.5, 0.75))
IQR
IQR은 Interquartile range의 약자다. 별 건 아니고 그냥 Q₃ − Q₁ 값이다.
이렇게 구할 수도 있지만
q3 <- quantile(dataset,0.75)
q1 <- quantile(dataset,0.25)
interquartile_range <- q3-q1
그냥 바로 IQR()
함수를 써줘도 된다.
interquartile_range = IQR(dataset)
이 IQR을 굳이 왜 구하냐면
이렇게 전체 데이터 세트 중 가운데 절반은 IQR 안에 들어가 있다고 직관적으로 확인할 수 있기 때문이다. 양극단의 특이값에 영향을 받지 않고 데이터가 얼마나 중심에서 펼쳐져 있는지 한 눈에 볼 수 있는 장점이 있다.
데이터의 분포를 확인하기 위해 흔히 그리는 box plot(상자 수염 그림)에서도 상자가 바로 IQR을 의미한다.
일단 R로 간단한 기술통계 값을 확인하는 방법은 여기까지.