Social Network Analysis module of Python
STATA 2010. 4. 21. 20:54많은 양의 Network data를 다뤄야 하는 경우, UCINET같은 기존의 패키지를 사용하는 것이 시간이 걸리는 때가 있다. 이런 경우 뭔가 프로그래밍을 통해서 작업을 자동화하고 싶은 마음이 들기 마련이다.
나는 최근 보나치치 파워를 STATA (ver.9 이상)에서 제공하는 matrix 연산 전문 프로그램인 mata를 통해서 계산하였다. 보나치치 파워 메저의 경우 다행히 비교적 간단한 행렬연산으로 산출이 가능하기 때문에 mata 언어로 구현이 가능했다.
그런데, Freeman이 제시한 Betweenness centrality 의 경우 algorithm 을 통해서 연산할 수 밖에 없고 이는 기존의 연구자들이 제시한 좋은 알고리즘이 있기는 하지만, 그것을 이해해서 프로그래밍 언어로 구현하는 것은 무엇보다도 시간이 들기 마련이다. 처음부터 모두 직접 다시 만드는 노력을 한다는 것은 찾아보면 이미 누군가 사용할 수 있는 프로그램들을 제시하고 있는 경우가 많은 요즘에 적절한 일은 아니라 하겠다.
그래서 나도 혹시 내가 사용할 수 있는 비교적 간편한 프로그램 코드가 없을까를 살펴보았고, 아래와 같은 것을 발견하였다.
Python. 약간만 검색해보면 최근 Python이 얼마나 다양한 분야에서 사용하고 있는 프로그래밍 언어인지 알 수 있다. Python의 가장 큰 강점 중의 하나는 엄청나게 많은 "이미 만들어진 모듈"들이 인터넷 위에 완전 무료로 존재한다는 것이다. 그 언어 자체의 간편, 명료한 것에 덤으로 세상에 널려 있는 다양한 모듈들은 python을 떠오르는 프로그래밍 언어로 만들어 주고 있다.
그런 모듈들 중에 Social Network Analysis를 전문으로 하는 것들도 있고, 그 중 한 가지를 발견하였다.
Networkx (http://networkx.lanl.gov/)가 바로 그 중 하나이다.
지금 이 모듈을 이용하여 약간 기초적인 것으로 내가 원하는 네트워크 연산을 실시해보았는데, 괜찮아 보였다.
Networkx를 설치하려고 하니, python egg라는 파일로 설치해야 하는데, 이 놈은
networkx의 그림 그리기 기능을 사용하기 위해서는,
http://matplotlib.sourceforge.net/users/installing.html 도 함께 설치해주어야 한다.
그리고 matplotlib이 실행되기 위해서는 numpy http://numpy.scipy.org/ 도 설치되어야 한다.
이렇게 따로 따로 다 설치해줘야 하다보니 적응하기 전까지는 분명히 복잡하다.
Python도 최근 3.x 버전으로 업그레이드하면서 2.x 버전과의 호환성을 단절했기 때문에 2.6이하의 python을 설치해야지만 networkx를 사용할 수 있다. networkx는 아직 3.x 버전을 지원하지 않기 때문이다.
'STATA' 카테고리의 다른 글
마이크로 엑셀 2003 매크로 작성에 관한 정보 (0) | 2010.04.27 |
---|---|
Emacs as a text editor for STATA (0) | 2010.04.26 |
엑셀로 차트 그리기에 관한 좋은 자료 (0) | 2010.03.15 |
유용한 사이트 (0) | 2010.03.13 |
이 블로그에서 하려는 일 (0) | 2010.03.11 |