重要なノードとエッジを可視化する
麻疹データセットの問題点の一つは、誰から感染したかの情報が不明な個体が3人いることです。そのうちの1人(頂点184)は、直接感染させた人数は多くないものの、最終的には多くの個体へ感染を広げるきっかけとなったように見えます。しかし、頂点184にはネットワーク内で入次数のエッジがないため、媒介中心性(betweenness)は低く見えてしまいます。この頂点の重要性を調べる一つの方法は、この個体から外向きに広がる接続の測地距離(geodesic distance)を可視化することです。本演習では、この「患者ゼロ」からの距離をプロットとして作成します。
この演習はコースの一部です
Rで学ぶネットワーク分析
演習の手順
make_ego_graph()を使って、頂点184に接続している頂点からなるネットワークの部分グラフを作成します。第1引数は元のグラフgです。第2引数は、関心のある頂点に到達するために必要な接続の最大数です。今回はネットワーク内の最長経路長を返すdiameter()を使えます。第3引数は関心のある頂点で、184に設定します。最後の引数は mode です。ここでは方向に関係なくすべての接続を含めてかまいません。- 頂点184から各頂点までの測地距離を含むオブジェクト
distsを作成します。これにはdistances()関数を使って計算します。 - 各頂点に属性
colorを割り当てます。色は測地距離に基づいて選びます。カラーパレットcolorsは、最大測地距離に1を加えた長さになっています。これは、同じ距離の頂点を同じ色で描画し、かつ患者ゼロにも専用の色を割り当てるためです。 plot()を使ってネットワークg184を可視化します。頂点ラベルには測地距離distsを指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Make an ego graph
g184 <- ___(g, ___(g), nodes = '184', mode = c("all"))[[1]]
# Get a vector of geodesic distances of all vertices from vertex 184
dists <- ___(g184, "184")
# Create a color palette of length equal to the maximal geodesic distance plus one.
colors <- c("black", "red", "orange", "blue", "dodgerblue", "cyan")
# Set color attribute to vertices of network g184.
V(___)$color <- colors[dists+1]
# Visualize the network based on geodesic distance from vertex 184 (patient zero).
___(___,
vertex.label = ___,
vertex.label.color = "white",
vertex.label.cex = .6,
edge.color = 'black',
vertex.size = 7,
edge.arrow.size = .05,
main = "Geodesic Distances from Patient Zero"
)