2018/06/10

【R】ネットワーク分析(igraph)でハブ空港を見つける

igraphは、グラフの可視化や中心性解析などが出来るRのパッケージです。
OpenFlights.orgのデータを使って、世界の空港のネットワークグラフを作成し、igraphを用いて、ハブになる空港を表示してみました。

【実行環境】
macOS 10.13.5
R version 3.4.4

まず、はじめにOpenFlights.orgのデータのairports.datとroutes.datをExcelなどで編集し、Pajek形式にまとめました。このネットワークは、各空港(ノード)とそれぞれを結ぶ直行便(エッジ)で構成されています。


直行便がより多い空港がより重要なハブ空港であると仮定して、page.rank関数を用いてページランクを計算しました。

library(igraph)
g <- read.graph("airports_link.net", format="pajek")
score <- page.rank(g, weights = NA)$vector
sort(score, decreasing=T)[1:10]


上位10位の計算結果は、以下のようになりました。(空港名でなく、空港がある都市名になっています。)
1. Atlanta
2. Chicago
3. Los Angeles
4. Dallas-Fort Worth
5. Paris
6. London
7. Singapore
8. Beijing
9. Denver
10. Frankfurt

雑ですが、可視化も行ってみました。

xy <- cbind(V(g)$y, V(g)$x)
V(g)$size <- 1
V(g)$frame.width <- 0.1
E(g)$width <- 0.02
E(g)$color <- "green"
E(g)$arrow.size <- 0.02
plot(g, layout=xy)

全体的に雑な分析になってしましましたが、Rはパッケージも充実しており可視化も容易なので、今後も使って行こうと思います。