본문 바로가기
데이터과학/데이터 분석 실습

Data Analysis (2): Graph Theoretical Analysis in R

by 경성현 2014. 4. 24.
728x90

수학에서의 그래프 이론(Graph Theory)과 물리학에서의 복잡계 네트워크(Complex Network)는 관련 전공자가 아닌 분야의 사람들에게는 비슷하게 느껴집니다. 저 또한 수학자도 아니고 물리학자도 아니기에 그래프 이론과 복잡계 네트워크를 혼용해서 사용합니다. 두 학문 분야의 전문가들이 보시기에는 다른 학문이으로 생각되겠지만, 그래프 이론이나 복잡계 네트워크에서 발견된 연구 결과물을 활용하는 연구자들에게는 '그게 그거 아닌가?' 라는 생각이 들기 마련인 것 같습니다. 저 또한 그래프 이론과 복잡계 네트워크라는 용어를 구분하지 않고 혼용해서 사용합니다.

그래프는 '점'과 '선'의 집합으로 구성되어 있습니다. 그래프에서 노드와 노드가 어떻게 연결되어 있는냐에 따라서 community를 이루기도 하지요. 파이썬이나 매틀랩 등의 스크립트 프로그래밍 툴에서도 그래프를 분석하는 기능을 제공하지만, 본 강좌에서는 R의 igraph library를 이용한 데이터 분석 방법을 소개해 드리고자 합니다. R이 익숙하지 않으신 분들은 실습은 Rstudio에서 연습 하시면 좋을것 같습니다.

우선 igraph라는 라이브러리를 설치해야 합니다.

> install.packages("igraph") # igraph 설치   > library(igraph) # igraph 설치 확인

igraph 라이브러리가 잘 설치를 완료 했으면, 이제 간단한 그래프를 만들어 보겠습니다.

> G <- graph( c(1,2, 1,3, 2,3, 3,5), n=5) > G_und <- as.undirected(G) # 방향성이 없는 그래프 > G_dir <- as.directed(G) # 방향성이 있는 그래프

위에서 생성한 그래프는 5개의 점(node or vertex)이 있고, 점을 있는 선은 총 4개가 있습니다. 정말 그렇게 생성되었는지 확인해 봅시다.

> V(G_und) # 노드가 5개인지 확인.

Vertex sequence:  [1] 1 2 3 4 5

> E(G_und) # 선이 4개 인지 확인. Edge sequence: [1] 1 -> 2 [2] 1 -> 3 [3] 2 -> 3 [4] 3 -> 5

이제 그래프를 그림으로 확인해 보겠습니다. E(G)에서도 확인할 수 있지만, 4번 노드는 연결 선이 하나도 없이 혼자 동떨어져 있습니다. 이것이 그림으로는 어떻게 표현될까요?

> plot(G_dir) # 그래프를 그림으로 확인.

plot(G_und)를 하면, 노드와 노드 사이에 연결된 선의 화살표가 없는채로 방향이 구분되지 않는 형태로 그래프가 그려질 것입니다. 여기까지 따라하셨드면, R을 이용한 그래프 그리기의 기초적인 과정은 끝났습니다.

이제 실제 연구에서 사용되는 네트워크 데이터를 분석에 활용해 보도록 하겠습니다.

** application to brain network analysis will be updated soon **

728x90