R 8

R을 이용한 3차원 PCA plot 그리기

3차원의 scatter plot을 그리기 주성분분석(PCA)에서는 1,2주성분에 대해서 각각 x,y의 2차원상에서 plot을 그려서 보여준다. 그런데 어느 논문에서 각 개체의 1부터 7까지 주성분을 모두([1,2주성분],[3,4주성분],[5,6주성분],[7,8주성분] - 총 4개의 그래프를 죄다 보여주는)보여주는 것을 보고는 저럴 필요가지 있을까라는 생각이 들긴 했지만, 그렇다면 개체의 1,2,3 주성분(x,y,z축으로)을 3차원으로 보여주는 것도 괜찮을 것 같다는 생각이 들었다. 우선 R의 rgl패키지의 plot3d()를 이용할것이므로 rgl 패키지를 설치한다. >library(rgl) >datap1=prcomp(data,scale=TRUE) >p2plot3d(p2[,1:3]) 또는 prcomp() 대..

R 2009.06.25 (2)

PCA(Principal Components Analysis) - Using R

각 라면에 대하여 면발, 라면 그릇의 모양(크기), 국물맛에 대한 점수가 있다고 한다면, 3개의 변수(면, 그릇, 국물)를 가지고 PCA 분석을 해보자. 1. 데이터를 read.table()을 이용해서 로드한다. 2. 이제 각 변수를 표준화하고, 이에 대한 상관행렬을 구한다. 3. EigenValue, EigenVector 값을 구한다. 첫번째 주성분(PC1)의 기여율은 Cumulative Proportion이 0.524 즉, 52%의 기여율을 보인다. 이것은 PC1이 분석대상의 데이터가 가지고 있던 정보가 PC1 주성분에 어느정도 집약 되어 있는지에 대한 대략적인 크기가 된다. 4. 각각에 대한 제1주성분, 제2주성분 점수를 구한다. 5. 제1주성분 점수와 제2주성분 점수를 토대로 그래프 작성 생성된 ..

R 2009.06.23 (9)

대량의 R 코드를 클러스터에 분산하기

수백개의 R 코드를 돌려야 할 일이 있다면, 한대의 컴퓨터에서는 100일이 걸릴일이라면 100대의 컴퓨터라면 100일 + 알파,, 요 알파는 각 컴퓨터에 로그인하고 R 코드를 옮기고, 명령어를 통해서 실행하고, 그결과를 취합하고,,, 여간 알파에 드는 시간이 많이 드는것이 아니다. 그래서 클러스터와 job 매니지먼트가 있다. 여기서는 리눅스 기반의 클러스터에 효율적으로 R 코드를 수백대의 컴퓨터에 실행하고 그 결과를 손쉽게 얻는 방법을 소개한다. 기본적으로 R의 경우에는 Interaction 프로그램으로 사용자와의 대화 형식으로 코드를 작성하게 된다. 명령->응답->명령->응답,,,의 형식 따라서 R 코드를 Bash에서 사용하기 위해서는 --quite, --no-save의 옵션을 통해서 처음 나오는 R에..

blogging 2008.11.06

RRDtool의 데이터를 가져와서 그래프 그리기

클러스터에서 시스템 모니터링을 위해 Ganglia를 사용하고 있는데, ganglia는 RRDtool을 이용해서 시스템의 온갖 정보를 저장하고 그래프로 출력을 해준다. 단점이라고는 할 수 없지만, 내가 원하는 데이터만 내가 원하는 형태로 그래프로 출력하기 위해서는 RRD 데이터를 가져와서(fetch) 그래프로 그리는 수 밖엔 없다. 어제는 클러스터의 6개월간의 시스템 로드 현황을 그래프로 그릴 일이 있었는데, ganglia에서는 시간, 일, 주, 달, 년 단위로 밖에는 그래프로 그려 주지 않기 때문에 6개월간만을 그리기 위해서는 직접 RRD 데이터를 가져와서 그리는 수 밖에는 없다. 여기에서는 RRDtool의 데이터를 가져와서 R을 통해서 그래프를 그리는 과정에 대해서 설명하려고 한다. 어딘가에는 나 같은..

blogging 2008.07.10

DRM을 이용한 대량의 데이터 분석을 손쉽게

본 문서는 Grid Engine의 "Simple-Job-Array-Howto" 문서를 기반으로 만들어졌으며, 이전에 포스팅한 "스케줄러 - 기본으로 돌아가기"와 밀접한 관계가 있습니다. ^^ DRM에서의 Serial 프로그램 실행하기 많은 수의 job들을 실행하기 위해서는 어떻게 해야 할까? 1,000개의 데이터셋이 있고, 이것을 하나의 프로그램이 실행한다고 한다면, 모두 1,000개의 Shell 스크립트를 작성해서 queue에 넣어야 할것이다. 바로 이러한 자잘한? 문제를 해결하기 위해서 Grid Engine에서는 Array job이라는 해결책을 제시해 주고 있다. -i 옵션의 인자를 입력으로 받고, -o 인자의 파일에 program의 수행결과를 쓰는 프로그램을 Grid Engine을 통해 제출한다고 ..

Bioblogs 2008.07.07 (1)

R 그래프 그리기

Bioinformatics Zen의 How to draw simple graphs in R이라는 글을 보면 R을 이용해서 데이터의 특성에 따라서 데이터를 그래프로 표현하는 방법에 대해서 간단하게 소개되어 있다. 여기서 간단하다는 의미는 짧고 명확하게 그리고 데이터를 어떻게 표현할지에 대해서 막막한 사람들도 고개를 끄덕이며 빠져 들 수 있다는 의미이다. 참 그리고 댓글을 읽다보면 Matlab과 Mathematica의 상용 어플리케이션과 R에 대한 논쟁(?)의 글도 있으니 댓글도 확인해 보세요 ^^;; 우선 "하루에 차(커피)를 얼마나 드십니까?" 라는 질문으로 시작하겠습니다. 이 질문에 마음속으로 대답을 하셨다면 이제 R package와 예제 데이터 파일(zip format)을 다운로드하시고 차한잔을 옆에..

howto 2008.01.09 (2)

R 과 Rserve를 이용한 Taverna 프로그래밍

향후 Bioworks의 경우 각종 스크립트 언어를 추가하여 사용자가 워크플로우내에서 프로그래밍을 통하여 필요한 기능을 추가할 수 있도록 할 계획에 있다고 한다. Taverna의 경우는 BeanShell이라는 Java 언어를 통하여 사용자가 워크플로우내에 프로그래밍 로직을 작성할 수 있도록 해주고 있다. 기타 Perl, python, Ruby등의 다른 스크립트 언어에 익숙한 사용자에게는 다소 불편함이 있을 수도 있다. 어쨌든 이러한 프로그램 언어의 사용과 더불어 Taverna에서는 통계 언어인 R(Bioinformatics에 관련된 라이브러리도 상당히 많이 존재하죠 ^ㅇ^)을 사용할 수 있도록 하고 있는데, 바로 RShell을 통해서다. Taverna의 RShell은 R을 TCP/IP 기반으로 원격에서도 ..

R 2007.11.16 (4)