R - 평균, 중앙값, 최 빈도 값
안녕하세요, R 프로그래밍에 도전하는 여러분! 오늘 우리는 R을 사용하여 기술 통계의 세계로 뛰어들어 보겠습니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 평균, 중앙값, 최 빈도 값의 개념을 안내해 드리겠습니다. 코드를 한 줄도 작성해 본 적이 없더라도 걱정하지 마세요 - 우리는 가장 기초적인 것부터 함께 차근차근 올라갈 테니까요.
평균
먼저 평균에 대해 이야기해 보겠습니다. 평균은 가장 흔한 중앙 경향 측도입니다. 단순히 말하자면, 우리가 흔히 '평균'이라고 부르는 것입니다.
기본 평균 계산
R에서 평균을 계산하려면 mean()
함수를 사용합니다. 간단한 예제를 보겠습니다:
numbers <- c(10, 20, 30, 40, 50)
result <- mean(numbers)
print(result)
이 출력은: 30
이를 간단히 설명하자면:
-
c()
함수를 사용하여numbers
벡터를 생성합니다. -
mean()
함수를 사용하여 이 숫자들의 평균을 계산합니다. - 결과를
result
변수에 저장합니다. - 마지막으로 결과를 출력합니다.
NA 값 포함한 평균
그런데 NA 값(결측치)이 포함된 데이터는 어떻게 될까요? 그것을 보겠습니다:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_with_na <- mean(numbers_with_na)
print(result_with_na)
이 출력은: NA
아이고! R은 결측치를 어떻게 처리할지 몰라서 NA를 반환합니다. 하지만 걱정 마세요, 우리는 해결책이 있습니다!
NA 옵션 적용
NA 값을 무시하도록 R에 지시할 수 있는 na.rm
옵션을 사용할 수 있습니다:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_na_removed <- mean(numbers_with_na, na.rm = TRUE)
print(result_na_removed)
이 출력은: 30
좋아졌습니다! na.rm = TRUE
을 설정하여 NA 값을 계산 전에 제거하도록 지시했습니다.
Trim 옵션 적용
때로는 극단적인 값을 평균 계산에서 제외하고 싶을 수 있습니다. 이때 유용한 trim
옵션을 사용할 수 있습니다. trim
옵션은 데이터의 양쪽에서 특정 퍼센트의 값을 제거한 후 평균을 계산합니다.
numbers <- c(1, 2, 3, 4, 5, 100) # 이 이상치 100을 주목하세요
result_trimmed <- mean(numbers, trim = 0.1)
print(result_trimmed)
이 출력은 3.5
에 가깝습니다.
trim = 0.1
을 설정하여 데이터의 양쪽에서 10%를 제거한 후 평균을 계산합니다. 이는 이상치의 영향을 줄이는 데 도움이 됩니다.
중앙값
중앙값은 데이터셋이 가장 작은 값에서 가장 큰 값으로 정렬될 때 중간 값입니다. 평균보다 이상치에 의해 덜 영향을 받습니다.
numbers <- c(1, 3, 5, 7, 9, 11, 13)
result_median <- median(numbers)
print(result_median)
이 출력은: 7
median()
함수는 mean()
함수와 유사하게 작동하며, NA 값을 처리하기 위한 na.rm
옵션도 있습니다:
numbers_with_na <- c(1, 3, NA, 7, 9, 11, 13)
result_median_na <- median(numbers_with_na, na.rm = TRUE)
print(result_median_na)
이 출력은: 8
최 빈도 값
흥미롭게도, R은 최 빈도 값(가장 빈도가 높은 값)을 위한 내장 함수를 제공하지 않습니다. 하지만 걱정 마세요! 우리는 우리 자신의 함수를 만들 수 있습니다:
get_mode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
numbers <- c(1, 2, 2, 3, 3, 3, 4, 4, 5)
result_mode <- get_mode(numbers)
print(result_mode)
이 출력은: 3
이 커스텀 함수를 간단히 설명하자면:
-
unique(v)
는 벡터의 고유한 값을 가져옵니다. -
match(v, uniqv)
는 일치하는 위치를 찾습니다. -
tabulate()
는 발생 횟수를 계산합니다. -
which.max()
는 가장 큰 값을 찾습니다. - 해당 위치의 값을 반환합니다.
함수 요약
여기서 배운 함수를 요약한 표를 제공합니다:
측도 | 함수 | 옵션 |
---|---|---|
평균 | mean() | na.rm, trim |
중앙값 | median() | na.rm |
최 빈도 값 | Custom function | N/A |
기억하세요, 연습이 완성입니다! 다른 데이터셋으로 이 함수들을 시도하고, 옵션을 변경하여 결과가 어떻게 달라지는지 탐구해 보세요.
마무리하며, 초창기 R 학습 시절의 이야기를 떠올립니다. 나는 한때 데이터셋의 평균을 계산하는 데 몇 시간을 소비했지만, NA 값을 제거하는 것을 잊어버린 적이 있었습니다. 나처럼 되지 마세요 - 항상 데이터를 확인하고 필요 시 na.rm = TRUE
을 사용하세요!
기쁜 코딩을 기원하며, R에서의 통계적 모험들이 통찰과 아하 순간으로 가득 차기를 바랍니다!
Credits: Image by storyset