R 기술통계 함수 소개

  • R

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로 간단한 기술통계 값을 확인하는 방법은 여기까지.

추천 글

댓글 남기기