Monthly Archives: February 2015

R로 평균값(mean), 중간값(median), 최빈값(mode), 범위(range), 분산(variance) 구하기

R로 평균값(mean), 중간값(median), 최빈값(mode), 범위(range), 분산(variance)을 구해보겠습니다. 그러기 위해서는 우선 준비작업으로 값을 넣어보겠습니다.

여기서 입력하고자 하는 값들은 농구선수가 게임당 특점한 값들이라고 가정했습니다. 1번째 줄은 그 자료를 입력하는 것입니다. 2번째 줄은 그것을 R의 데이터 프레임 형식으로 만들어 player라는 변수에 넣는 것입니다. 마지막으로 3번째 줄은 이 값들에 열 이름을 넣는 것입니다. 엑셀 파일에 1줄로 자료를 입력한 후, 맨 앞 칸에 열 이름을 넣는 것이라고 생각하시면 됩니다. 마지막 줄을 입력하면 지금까지 한 것을 확인할 수 있습니다.

## 데이터 입력
temp <- c(3,3,6,7,7,10,10,10,11,13,30)
player <- data.frame(temp)
colnames(player) <- c("score")
player

자 이제 본격적으로 지금까지 입력한 값을 가지고 하고자 하는 일 차례로 해보겠습니다. 여기서 모든 값이 10으로 다 같습니다. 여기서 참고로 마지막 최빈값은 조금 복잡한 방식으로 처리했는데, 이는 R에 최빈값을 구하는 내장함수가 없기 때문입니다. 참고로 입력하는 방법은 “{” 키를 치고 엔터를 치면 “+”가 나타나고 거기에서 또 명령어를 치면 “+”가 나옵니다. 그렇게 하다가 마지막으로 “}”키를 치고 엔터를 누르면 Mode라는 함수 입력이 완료됩니다. 그럼 다음 마지막 줄에서 그 함수를 사용하는 것입니다. 여기 함수에 대한 내용은 나중에 자세히 살펴보도록 하겠습니다.

## 평균값 구하기
mean(player$score)

## 중간값 구하기
median(player$score)

## 최빈값 구하기
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}

Mode(player$score)

이번에는 범위를 구해보겠습니다. 통계학에서 범위라는 것은 데이터 집합에서 상한값에서 하한값을 뺀 것을 말합니다. 그래서 R에서도 max라는 것을 가지고 상한값을 구한 다음, min이라는 것을 가지고 하한값을 구한 다음, 상한값에서 하한값을 빼서 구했습니다.

## 범위 구하기
max(player$score) - min(player$score)

마지막으로 분산을 구해보도록 하겠습니다. R에서도 손쉽게 var()이라는 것으로 구할 수도 있지만, 우리는 정확하게 모집단을 정확하게 다 알고 있기 때문에 통계학 시간에 배운 공식을 가지고 단순하게 구해봤습니다. 앞에서 최빈값을 구한 것과 같이 함수를 이용했습니다. 참고로 이렇게 구한 값은 R에서 var()으로 구한 값과 다릅니다. 자세한 내용은 통계학에서 소위 모집단 분산과 모집단 분산 추정하기의 다르다는 것을 살펴보시면 됩니다.

## 분산 구하기
my.var <- function(x) {
m <- mean(x)
return (sum((x-m)^2)/length(x))
}

my.var(player$score)