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)
>data<-read.table("point2.dat",header=TRUE)
>p1=prcomp(data,scale=TRUE)
>p2<-predict(p1)
>plot3d(p2[,1:3])

또는 prcomp() 대신 princomp()를 이용할 경우에는

>p3<-princomp(data,scale=TRUE)
>plot3d(p3$scores[,1:3])

이렇게 그려진 plot은 다음과 같이 OpenGL을 이용하여 그려지게 되고, 마우스 줌과 회전이 가능해진다. 마우스로 적당한 포즈?를 취한 후에는 snapshot()을 이용해서 그림 파일로 저장이 가능하다.

>rgl.snapshot("3dplot.png")

rgl plot3d

그림 파일이 아닌 동영상(움직이는 gif)로 저장하고 싶다면 ImageMagick을 설치한 후 movie3d()를 실행하면 지정된 tmp 폴더에 movie.gif 라는 움직이는 동영상이 저장된다.

>movie3d(spin3d(),duration=20,convert=TRUE)


이건 신모박사님의 데이터를 잠깐 빌려서 그려본 3D PCA plot  ^^;;
Picture 4

Posted by hongiiv

2009/06/25 15:58 2009/06/25 15:58
,
Response
No Trackback , No Comment
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/594

구글 fusion tables - 대용량의 서막

R과 엑셀이 결합해서 수백만 로우의 데이터를 한방에 로드하고 이를 엑셀에서 확인한 후 R을 돌려서 그 결과를 깔끔하게 엑셀의 표나 그래프 형식으로 볼 수 있다면... 이라는 생각을 줄곧 했었는데...

그런데 구글이 이것을 fusion tables라는 이름으로 만들어 버렸다. 지금은 테이블당 100MB로(이것도 무진장 큰 데이터이건만...그래도 모자라 보이는건...-.-;;) 한정되어 있지만 향후 다룰 수 있는 데이터가 점점 커진다면 ^^;;

조만간 생물학 데이터들도 google의 fusion tables을 통해서 전세계 연구자이 협업을 통해 데이터를 완성해 나가고 결국은 이렇게 만들어진 데이터를 가지고 갖가지 분석을 해버리는 날이 오게 될것만 같다...

Google Fusion Tables
해당 셀에 대해서 협업자들끼리 의견을 교환

Google Fusion Tables
지역에 대한 정보가 있는 셀은 이렇게 구글어스 아이콘이 나오고 이를 클릭하면 아래와 같이 해당 지역을 구글맵을 통해서 확인할 수 있다.

Google Fusion Tables

Google Fusion Tables
각 컬럼에 대해서 간단한 계산(sum, min, max값 등등)을 수행하고 그 결과를 지도에 표시해서 보여주기도 한다.

Posted by hongiiv

2009/06/23 21:10 2009/06/23 21:10
,
Response
No Trackback , 2 Comments
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/593

PCA(Principal Components Analysis) - Using R

각 라면에 대하여 면발, 라면 그릇의 모양(크기), 국물맛에 대한 점수가 있다고 한다면, 3개의 변수(면, 그릇, 국물)를 가지고 PCA 분석을 해보자.

Picture 2

1. 데이터를 read.table()을 이용해서 로드한다.

Picture 3

2. 이제 각 변수를 표준화하고, 이에 대한 상관행렬을 구한다.

Picture 5

3. EigenValue, EigenVector 값을 구한다. 첫번째 주성분(PC1)의 기여율은 Cumulative Proportion이 0.524 즉, 52%의 기여율을 보인다. 이것은 PC1이 분석대상의 데이터가 가지고 있던 정보가 PC1 주성분에 어느정도 집약 되어 있는지에 대한 대략적인 크기가 된다.

Picture 6

4. 각각에 대한 제1주성분, 제2주성분 점수를 구한다.

Picture 7

5. 제1주성분 점수와 제2주성분 점수를 토대로 그래프 작성

Picture 8

생성된 pdf 파일은 다음과 같다. 결론은 짬뽕, 김치, 쇠고기가 좋은 것으로 묶이고 국물이 역시 좋아야 한다는 결론,, -.-;;

R PCA

Posted by hongiiv

2009/06/23 17:48 2009/06/23 17:48
,
Response
No Trackback , No Comment
RSS :
http://socmaster.homelinux.org/~hongiiv/rss/response/592

« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : ... 181 : Next »


야후 블로그 벳지


Site Stats

Total hits:
291953
Today:
123
Yesterday:
234