[R] mean 함수의 trim 옵션 사용하기

how-to-use-the-trim-in-function-mean

해당 포스트는 R에서 평균 계산(mean)시 사용할 수 있는 trim 옵션에 대해 소개합니다.

INTRO

R에서는 평균을 구해주는 내장함수 mean()이 있습니다. 기본 함수로도 부족함없이 사용할 수 있으나 mean() 함수에서 제공되는 na.rmtrim 같은 효율성을 높여주는 옵션을 알아두시는 것이 좋습니다. 아래에서는 간단한 mean() 함수 설명과 옵션 사용법에 대해 예시와 함께 설명합니다.


how-to-use-the-trim-option-in-mean-funtion
[출처] 네이버 지식인

mean() 함수

1. 기본 사용법

mean() 함수는 R에서 평균 계산을 위해 제공되는 기본(base) 함수이며, 사용법은 아래와 같습니다.

mean(x, trim = 0, na.rm = FALSE, ...)

  • x : 평균 계산이 필요한 입력 데이터
  • trim : 양극단(상한/하한) 데이터에서 일정 비율 제거
  • na.rm = FALSE : 값이 TRUE일 경우, 결측치(NA)를 제외하고 평균 계산 (기본값 = FALSE)

2. 질문 풀이

네이버 지식인에서 질문 받은 데이터는 총 10개의 값을 가지는 숫자 벡터로 결측치가 없는 깔끔한 형태라 옵션 사용없이 평균을 구하여도 문제가 없습니다. 다만, trim 옵션을 통해 출력된 결과에 대한 해석이 필요한 상황이었고 이에 답변한 내용은 아래와 같습니다.

데이터 생성

aval <-  c(5,4,7,6,8,10,11,0,7,18)

평균 계산

mean(aval)
[1] 7.6

trim을 사용한 평균 계산

mean(aval, trim=0.10)
[1] 7.25

위 출력 결과를 보면 trim 옵션을 적용하면서 평균이 7.6에서 7.25로 감소한 것을 볼 수 있습니다. trim 옵션은 지정된 비율만큼 상하한 값을 제거하기 때문에 위에서는 trim=0.10로 인해 10개 데이터 중 1개(10%)씩 상하한에서 제거하고 평균이 계산됩니다.

3. 처리 과정 이해하기

위에서 설명한 trim 옵션 적용 결과에 대해 실제 데이터로 보여드리겠습니다.

데이터 정렬

sort(aval)
[1]  0  4  5  6  7  7  8 10 11 18

먼저 데이터를 정렬해 보면 위와 같이 첫번째 벡터 0, 마지막 벡터 18인 10개의 숫자 벡터임을 확인할 수 있습니다. 여기서 trim=0.1 옵션을 적용하게 되면 '전체 10개의 숫자 벡터 중 10%인 1개를 상하한에서 제거'하고 계산됩니다. 위 데이터에서는 상한값인 18, 하한값인 0을 제외한 나머지 숫자 벡터들의 평균이 계산된다고 생각하시면 되며, 코드로 확인한 결과는 아래와 같습니다.

trim=0.1으로 계산한 평균

mean(aval, trim=0.1)
[1] 7.25

0과 18을 제외한 평균

mean(c(5,4,7,6,8,10,11,7))
[1] 7.25


이어서 trim=0.2를 적용해 본다면 상하한의 20% = 2개의 데이터를 제외한 평균을 계산할 수 있습니다.

trim=0.2으로 계산한 평균

mean(aval, trim=0.2)
[1] 7.166667
  • 0과 4, 11과 18 을 제외한 평균
mean(c(5,7,6,8,10,7))
[1] 7.166667

마무리

이번 포스트에서는 R 내장 함수 중 평균을 계산해주는 mean()에 대하여 설명하였습니다. 간단한 함수이지만 제공되는 옵션까지 알고 쓰신다면 필요한 곳에 효과적으로 사용하실 수 있을거라 생각합니다.


관련 링크

[1] [R] 성별로 키에 대한 평균, 분산, 표준편차 계산
[2] [R] 표본 평균, 중앙값, 표본 분산, 표본 표준편차
[3] [R] NA가 포함된 벡터의 평균 계산하기, NA를 평균값으로 대체하기
[4] [R] 새로운 컬럼에 행 평균값 계산하여 넣기