Facebookの友達ネットワークを測定してR + igraphで描写する

今回は、NameGenWebというアプリケーションを使ったFacebookの友達ネットワークの解析について紹介します。

NameGenWebのプライバシーポリシーを記します。

Privacy Policy
NameGenWeb is a research application developed at the Oxford Internet Institute, University of Oxford by Joshua R. Melville and Bernie Hogan based on earlier code from Bernie Hogan and Arber Ceni. This application is designed principally as a research and teaching utility for accessing a particular social network, classically referred to as the 'personal network'. The principal motivation is to help individuals make sense of the connections within their own network, and to familiarize themselves with network analysis as an analytical technique.

要するに、オックスフォードの研究グループの個人ネットワークの研究のアプリケーションだそうです。アカデミアがベースになっているのは安心感があります。

今回は、NameGenDevで自分の友達ネットワークを解析し、解析結果をGraphML形式で取得。最後に、R + igraph環境で可視化をします。


# Step  0
Facebookの検索窓で"NameGenDev"を検索します。


# Step1
開発者からのコンタクトを希望するならば、下のチェックを入れます。


# Step 3
適当に属性を入れます。今回はデフォルトのFull Name & Facebook User IDだけを使用します。



# Step 3
ファイルをダウンロードします。
 # step 4
ダウンロードのファイル形式を選択します。今回は、GraphMLを選択します。また、プライバシーの観点からAnonymise Networkにチェックを入れました。

ダウンロードしたファイルをカレントディレクトリに移動させて(今回はmygraph.graphmlとする)、Rによる可視化作業に移行します。


##############以下 Rのスクリプト###############
#Rの起動
$ R

#igraphのロード
library(igraph)

#ダウンロードしたgraphmlファイルをロードしてgというオブジェクトにする
g <- read.graph("./mygraph.graphml", format=c("graphml"))

#vertexの大きさを1に統一
V(g)$size <- 1

#グラフを描写
png("mygraph.png")
plot(g, main = "My Facebook Friends Network")
dev.off()

大きなクラスターが3つと、小さなクラスターが4つ存在することがわかります。これは私の所属大学や出身高校のクラスターを反映しています。

次数分布も求めてみます。
ただし、ここで描写されるのは"私の友達ネットワーク"における次数分布であることに注意しなくてはなりません。このネットワーク内で多くの次数を持っている方(vertex)は、私の人生の様々なところで関わってくださった方と言えるかもしれません。

###########Rのソースコード : 次数分布を求める#############


#g次数分布の配列を計算
#握手問題を考慮して1/2倍している。
degree <- degree(g)/2

#次数分布を描写
png("degree-dsit.png")
hist(degree, xlab = "degree", ylab="Frequency")