'hist'에 해당되는 글 2건

  1. 2015.08.06 R 데이터셋 처리 함수들에 대한 간단한 정리~
  2. 2013.07.29 R 실행을 위한 기본적인 내용들~

R 데이터셋 처리 함수들에 대한 간단한 정리~

|



R을 활용하면 다양한 데이터셋을 data.frame으로 읽어서 많은 작업을 할 수 있다. 

어떤 작업들이 가능한지 R에서 데이터셋을 처리하는 함수를 중심으로 살펴보기로 하자. 


Motor Trend Car Load Test

예제로 사용할 데이터셋은 R에 내장되어 있는 mtcars이다. 

이 데이터는 1974년 Motor Trend US magazine에서 추출한 것으로 1973년, 1974년 모델의 32개 자동차들의 디자인과 성능을 비교한 것이다. 

help 명령어로 데이터 포맷 등을 먼저 살펴보기 바란다. 

> help(mtcars)


데이터셋의 정보 확인 

먼저 mtcars 데이터를 가져와 보자. 

데이터셋을 가져오기 위해서 간략하게 data() 함수를 호출하면 된다. 

> data(mtcars)


32개의 자동차의 성능비교 데이터를 제대로 불러왔는지 다음과 같이 확인한다. 

> mtcars


head()

경우에 따라서는 대량의 데이터셋을 읽어오는 경우가 있다. 

이때는 다음과 같이 head 함수를 사용해서 앞부분의 일부만 읽어올 수 있다.  


str()

str은 자바에서 주로 사용하는 String 관련 함수가 아니라 R 객체의 구조(Structure)를 보여주는 함수이다. 

mtcars는 data.frame이고 11개의 변수에 32개의 데이터가 있다는 것을 보여주고, 

각각의 변수들의 타입과 일부 데이터를 다음과 같이 출력한다. 


summary()

summary는 데이터에 대한 요약 정보를 나타내는데, 

숫자인 경우 최소값, 최대값, 산술평균, 중앙값, 하한 사분위수, 상한 사분위수를 다음과 같이 보여준다. 


중앙값에 대해서는 "평균에 대한 정리(mean, median, mode)"를 참고하고, 사분위수에 대해서는 "변이와 분포" 글을 참고하기 바란다. 


데이터셋의 특정 열 기준으로 작업하기 

데이터셋에서 특정 열을 가져오기 위해서는 $를 사용한다. 

mtcars 데이터에서 첫번째 열인 mpg(mile per gallon)를 가져오려면 다음과 같이 사용한다. 

> mtcars$mpg


 참고로 mpg는 1 갤론당 몇 마일을 갈 수 있는지를 나타내는 지표인데, US Gallon으로 표시되어 있으므로 약 3.8리터당 몇 마일을 가는지를 나타낸다. 

(1 갤론의 경우, 미국에서는 3.8리터에 해당하고, 영국, 캐나다 등 다른 나라에서는 4.5리터에 해당한다고 한다.)



stem()

stem은 "stem-and-Leaf Plots"라고 이야기하는데, 글자 그대로 줄기와 잎으로 재구성하는 방식이라고 할 수 있다. 

실제 분석할 때 유용하게 활용할 수 있는 함수인데 실제 예제를 통해서 이해해 보도록 하자. 


먼저 출력 데이터를 보면 | 가 있는데, 설명에 따르면 소수점(decimal point)을 기준으로 나눈 것을 알 수 있다. 

stem을 해석하려면 | 왼쪽의 데이터를 줄기로 보고, | 오른쪽 데이터를 잎으로 보면 된다. 

그래서 데이터 구성이 10.4, 10,4, 12.3, 14.3, 14.7, 14.0 .... 이런 형태로 되어 있다는 것이다. 


실제 동일한지 확인하기 위해서 mpg 열기준으로 정렬한 데이터를 보자. (정렬은 다음에 다룰 예정이다.)


10.4, 10.4는 일치하지만 13.3이 12.3으로 잘못 표시되어 있다. 15.0도 마찬가지로 14.0으로 해석된다. 

| 왼쪽의 stem 값을 보면 홀수값이 없이 짝수만 나와 있는 것을 알 수 있다. 

그래서 13은 12로 간주하고, 15는 14로 간주해서 보여주고 있다. 


hist()와 boxplot()

도수분포표를 그래프로 나타내는 히스토그램에 대해서 학창시절에 배운 기억이 있을 것이다. 

이 히스토그램을 그리는 함수가 hist이다. 


> hist(mtcars$mpg)


그리고 변이와 분포에서 설명한 "box and whisker diagram"을 boxplot으로 그릴 수 있다. 

> boxplot(mtcars$mpg)


fivenum()과 quantile()

fivenum은 5개의 숫자를 구하는데 사용한다. 최소값, 하한 사분위수, 중앙값, 상한 사분위수, 그리고 최대값을 나타내느데 사용한다. 

보통 Tukey Five-Number Summary라고 한다. 


qunatile도 유사하게 0%, 25%, 50%, 75%, 100%의 값을 나타낸다 


그러나 위 결과를 잘 살펴보면 25%에서 fivenum과 quantile의 값이 다른 것을 알 수 있다. 

fivenum은 우리가 알고 있는 사분위수를 구한 값이고, quantile은 확률적으로 균등하게 자른 개념이기 때문에 이런 차이가 발생할 수 있다. 


"본 글은 카톨릭의대 문건웅 교수님의 R 예제를 기반으로 작성했습니다."


미니의 R 주요 강좌...

데이터 통계 분석을 위한 R 설치와 활용

R 실행을 위한 기본적인 내용들~

R 데이터 구조에 대한 정리

R 패키지 설치하기

R 데이터셋 처리 함수들에 대한 간단한 정리~

R 데이터셋 정렬하기~

R 데이터셋의 일부 데이터 가져오기

R의 lapply, sapply, vapply를 이해하자~

R의 apply, tapply의 활용법을 알아보자~

R의 split 활용

R의 함수 작성 및 활용~

R 시뮬레이션 - 랜덤 변수 샘플링

R 함수에서 캐시 활용하기~

R 디버깅 툴 활용하기~





Trackback 0 And Comment 0

R 실행을 위한 기본적인 내용들~

|



R에 대한 기본 실행 방법부터 간단한 사용법까지 정리해보려고 합니다. 


R 실행

R을 실행하는 방법은 인터렉티브 모드와 배치 모드의 두 가지가 있습니다. 

앞으로의 예제들은 모두 인터렉티브 모드에서 실행하겠지만, 실제 환경에서는 경우에 따라 배치 모드를 활용할 필요도 있으므로 

두 가지 실행 방법을 먼저 정리해 보려고 합니다. 


인터렉티브 모드 

R 설치와 관련해서 "데이터 통계 분석을 위한 R 설치"에서 정리해놨으니 참고하기 바랍니다. 

R이 설치되어 있는 경우, 리눅스/윈도우/맥 어디에서든 터미널에서 R을 입력하면 인터렉티브 모드를 시작할 수 있습니다. 

또는 윈도우나 맥의 경우에는 R 아이콘을 더블클릭해서 실행할 수도 있습니다. 



그럼 인터렉티브 모드에서 간단한 예제를 테스트해보도록 하죠. 



rnorm()은 랜덤하게 임의의 수를 생성하는 함수입니다. 

normal 이라는 표현이 들어가 있으므로 정규분포를 나타내기도 합니다. (평균이 0이고 분산이 1인 정규분포입니다.)

만약 임의의 수에 대한 평균을 구하면 0이 나와야 겠지요.. 하지만 확률이므로 반드시 0이 나오지는 않을 겁니다. 



실제로 0이 나오지 않는군요.. 평균을 mean이라고 하는 것은 "평균에 대한 정리"를 참고하면 좋을 듯 합니다. 

어쨌든 두개의 R 함수를 인터렉티브 모드에서 살펴봤습니다. 


배치 모드

배치 모드는 미리 R 코드를 작성해 두고 CronTab 등으로 주기적으로 실행할 필요가 있을 때 사용할 것입니다. 

다음과 같이 test.R 파일을 텍스트 파일로 만들어 보기 바랍니다. 

pdf("xh.pdf")

hist(rnorm(100))

dev.off()


pdf()는 PDF로 출력할 파일을 지정하는 함수이고, rnorm()은 위에서 설명했습니다. 

hist()는 변수들의 히스토그램을 그리는 함수입니다. 

마지막으로 dev.off()는 열었던 디바이스 장치를 닫으라는 함수입니다. 

위 소스는 임의의 숫자 100개에 대한 히스토그램을 그려서 xh.pdf 파일에 저장하라는 의미가 됩니다. 


터미널에서 다음과 같이 실행하면 위 소스를 배치모드로 실행하게 됩니다. 

$ R CMD BATCH test.R


CMD나 BATCH 명령어는 대소문자를 구분하네요. 

결과는 다음과 같습니다. 



R 기본 사항

이미 몇가지 R 함수들을 살펴봤는데요. 

이외에도 기본적인 사항들을 추가로 좀 더 정리하도록 하겠습니다. 


수학에서는 벡터라는 데이터 셋을 많이 사용합니다. 

R에서도 당연히 벡터에 대한 처리가 많이 발생할텐데요.. 

이러한 벡터를 c()로 나타냅니다. 여기에서 c는 concatenate의 약자입니다. 

다음 예제를 보죠.. 



x라는 변수에 {1,3,5}로 이루어진 벡터를 할당한 것입니다. 

print(x)라고 명시적으로 x를 출력할 수도 있지만, 변수 x만 입력하면 해당 값을 바로 출력하기도 합니다. 



위 예제처럼 x 변수에 다른 벡터를 추가해서 할당할 수도 있습니다. 

이번에는 print() 함수로 값을 출력해봤습니다. 


일반적인 C나 C++와 달리, R에서의 벡터의 인덱스는 0이 아닌 1부터 시작합니다. 

즉, y[2]를 출력하면 3이 나온다는 것이죠.. 



또한 : 을 사용해서 부분집합을 만들 수 있다는 점도 알아두시면 좋습니다. 


이외에도 세부적인 내용은 추후 살펴보기로 하고 주요 명령어를 간단히 정리해 보겠습니다. 

R을 종료할 때는 q() 함수를 사용하는데요. 이때 workspace image를 저장할지 물어봅니다. 

저장하면 사용한 변수들을 다음에도 다시 불러와서 활용할 수 있게 됩니다. 


그리고 도움말은 help() 함수를 사용하면 되구요. 

예제를 살펴보려면 example() 함수를 사용하면 됩니다. 


마지막으로 R에는 내장되어 있는 데이터 셋이 있습니다. 

data() 함수를 통해 확인할 수 있는데요. 100여개 정도의 데이터셋이 있습니다. 

맨 첫번째 나오는 것이 1949년부터 60년까지의 월별 비행기 승객을 나타내는 데이터인데요. 

이 데이터를 통한 평균과 표준편차를 구하는 예제를 넣어봤습니다. 



미니의 R 주요 강좌...

데이터 통계 분석을 위한 R 설치와 활용

R 실행을 위한 기본적인 내용들~

R 데이터 구조에 대한 정리

R 패키지 설치하기

R 데이터셋 처리 함수들에 대한 간단한 정리~

R 데이터셋 정렬하기~

R 데이터셋의 일부 데이터 가져오기

R의 lapply, sapply, vapply를 이해하자~

R의 apply, tapply의 활용법을 알아보자~

R의 split 활용

R의 함수 작성 및 활용~

R 시뮬레이션 - 랜덤 변수 샘플링

R 함수에서 캐시 활용하기~

R 디버깅 툴 활용하기~





Trackback 0 And Comment 0
prev | 1 | next