Monthly Archives: March 2014

R로 사분위도(Quatile)를 계산해보자.

R은 기본적으로 사분위도(Quatile)를 다루기 위해서 “ quartile(x, p) ”이라는 명령어를 사용합니다.  이 명령어의 사용법은 R 메뉴얼을 보면 다음과 같습니다.

## Default S3 method:
quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,
names = TRUE, type = 7, ...)

여기서 제일 중요한 ‘x’에 들어갈 것은 우리가 조사하고자 하는 자료입니다. 그리고 두 번째로 중요한 것은 ‘probs = seq(0, 1, 0.25)’입니다. 이 명령어의 의미는 0%~100%까지 까지 25%씩 나눠서 계산하라고 명령하는 것입니다. 따라서 위와 같이 입력한다면, “0%  25%  50%  75% 100% “에 해당하는 값을 출력하게 됩니다.그리고 나머지 값은 조금 전문적이 그냥 아래와 같이 사용해도 되고 제거해도 무방합니다. 결국 다음과 같은 정도로 명령어를 사용하면 됩니다.

 ## 간략한 사분위도 명령어:
quantile(x, probs = seq(0, 1, 0.25), na.rm = TRUE, type = 7)

그러면 이 명령어를 예제를 통해서 알아보겠습니다.

  1. 이 명령어를 사용하기 위하여 우선 R에서 다음과 같이 입력하여 연습용 자료를 R에 입력합니다. 이것은 인터넷 상에 있는 자료를 R에 입력하는 명령어입니다. 이 명령어를 인터넷에 있는 자료 대신에 직접 입력하시려면 아래 2번을 보고 입력하시면 됩니다.
  2. player <- read.csv("http://dl.dropboxusercontent.com/u/17387789/chepter_4_ex_2.csv")
    
  3. 위의 것은 인터넷에 있는 자료를 다운 받아 입력한 것이지만, 아래 명령어들은 그것을 직접 입력하는 것입니다. 첫번째 명령어는 우선 자료를 입력하는 것이고, 두 번째 명령은 이를 위와 같은 자료형(정확하게는 데이터 프레임 형식)으로 만드는 것이며, 마지막으로 세 번째 명령어는 그 자료에 열 이름을 넣는 명령어 입니다.
  4. temp <- c(3,3,6,7,7,10,10,10,11,13,30)
    player <- data.frame(temp)
    colnames(player) <- c("score")
    
  5. 위의 1,2번과 같이 자료를 입력하였으면, 이 자료가 잘 들어갔는지 확인해 봅시다. 아래 명령어를 치면 우리가 넣은 자료가 즉, score = {3,3,6,7,7,10,10,10,11,13,30}가 나올 것입니다.
  6. player
    
  7. 다음으로 이 자료에 대한 여러가지 자료를 알기위해 다음과 같이 입력하면, 최소값(Min.): 3.0 일사분위수(1st Qu.): 6.5, 중앙값(Median):10.0, 평균값(Mean):10.0, 삼사분위수(3rd Qu.):10.5, 최대값(Max.):30이 표시됩니다.
  8. summary(player)
    
  9. 마지막으로 사분위도를 계산하기 위하여 다음과 같이 입력해봅시다. 위에서 실행한 값과 거의 같은 값들이 나오게 됩니다. 여기서 나오는 값들은 위의 자료를 값이 증가하는 방향으로 나열하고, 그 자료의 구역을 4등분(예를 들어 20명 성적을 낮은 점수에서 높은 점수로 배열한 후, 가장 꼴지 즉 20등 점수, 25%에 있는 점수 다시 말해 15등 점수, 50% 중간인 10등 점수, 75%에 있는 5등 점수, 그리고 마지막으로 1등 점수를 보여주게 됩니다. 물론 여기서 “0.25”를 “0.1”로 한다면, 20등, 18등, 16등, 14등, … 6등, 4등, 2등, 1등 점수가 나오게 됩니다. 물론 여기에는 조금 복잡한 이론이 있습니다. 예를 들어 어떤 자료는 정확하게 그 등수, 더 자세하게 말하면, 중간 등수가 없는 경우가 있죠. 이럴 때에 어떻게 처리하는지에 대한 문제가 있습니다. 이런 문제 때문에 위의 명령어에 “type = 7″과 같은 옵션이 있는 것입니다. 이런 문제는 통계학책을 참고하길 바랍니다. ^^;
  10. quantile(player, probs = seq(0, 1, 0.25), na.rm = TRUE, type = 7)
    
  11. 부록으로 다음과 같이 입력하시면, R이 사분위도 값을 이용하여 멋진 그래프를 만들어 줍니다.
  12. boxplot(player$score)
    

좀 더 깊은 내용은 아래 링크를 참고하세요.

http://tolstoy.newcastle.edu.au/R/e17/help/att-1067/Quartiles_in_R.pdf