MENU

【無料プレゼント付き】学会発表・論文投稿に必要な統計を最短で学ぶことができる無料メルマガ

Rのigraphで始める!ネットワーク分析入門:データの準備から可視化のコツまで


SNSのつながり、仕事の人間関係、単語の結びつきなど、複雑な関係性を目に見える形にしたいと考えたことはないだろうか。

そんな時、R言語で最も頼りになるのがigraphパッケージである。この記事では、Rを使い始めたばかりの読者に向けて、igraphの基本から、少し高度な「グループ分け」や「重要度の可視化」までをステップバイステップで解説する。


>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

目次

igraphとは?

igraphは、ネットワーク(グラフ)を扱うための世界的に有名なライブラリである。RだけでなくPythonやC言語でも利用されており、以下のような特徴を持つ。

  • 高速: 数万件のデータも一瞬で処理が可能。
  • 多機能: 単なる描画にとどまらず、統計的な分析メニューが極めて豊富。
  • 標準的: ネットワーク分析の論文やビジネスレポートで最も広く使われているツールの一つである。

ネットワーク図の基本:点(ノード)と線(エッジ)

ネットワーク図は、主に2つの要素で構成される。

  • ノード(Node / Vertex): 分析したい対象(人、モノ、場所など)。
  • エッジ(Edge): 対象同士のつながり(友人関係、取引、リンクなど)。

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

データの準備:どんな形にすればいい?

igraphで図を描くには、「誰と誰がつながっているか」という2列のリスト(エッジリスト)を用意するのが最も効率的である。

# パッケージの読み込み
if (!require(igraph)) install.packages("igraph")
library(igraph)

# 例:AさんとBさんがつながっている、というリスト
edges <- data.frame(
  from = c("A", "A", "B", "C", "D", "E", "F"),
  to   = c("B", "C", "C", "D", "E", "A", "A")
)

基本の描画:まずは描いてみる

用意したデータを、igraph専用のオブジェクト形式に変換してプロットする。

# 1. データフレームをグラフ形式に変換
g <- graph_from_data_frame(edges, directed = FALSE)

# 2. 描画
plot(g)

これだけでも図は出力されるが、デフォルトのままでは視覚的な情報が乏しい。ここからが分析の醍醐味である。


【応用】グループ(コミュニティ)を見分ける

ネットワークの中には、「仲良しグループ」のようなまとまりが存在することがある。これを自動で見つける手法をコミュニティ検出と呼ぶ。

グループはどうやって決まる?

アルゴリズムが、「内側のつながりが濃く、外側へのつながりが薄い」部分を特定する。これにより、膨大なデータの中から、現実のサークルや部署に相当する集団を浮き彫りにできる。

# コミュニティ検出(Walktrap法)を実行
community <- cluster_walktrap(g)

# グループごとに色を割り当て
V(g)$color <- community$membership

plot(g, main = "グループごとに色分けした図")

【応用】重要人物(ハブ)を大きくする

ネットワーク内で「影響力が強いノード」を特定することも重要である。これには中心性(Centrality)という指標を用いる。

  • 次数中心性: どれだけ多くの線が集まっているか(=顔が広いか)を示す指標。
# つながりの数(次数中心性)を計算
centrality <- degree(g)

# つながりが多いほどノードを大きくして描画
plot(g, vertex.size = centrality * 10, main = "重要度でサイズを変更した図")

igraphの利点・限界・使い所

項目特徴
利点処理が非常に高速。コミュニティ検出や中心性計算のアルゴリズムが充実している。
限界標準の図は「静止画」である。マウス操作で動かせる図を作りたい場合はnetworkD3などが適している。
使い所データの構造を学術的・論理的に分析したい時や、出版・報告用の高品質な図を作成したい時。

まとめ

Rのigraphを使えば、一見バラバラに見えるデータから「隠れたグループ」や「キーマン」を可視化することが可能である。

  1. エッジリスト(ペアの表)を作成する
  2. graph_from_data_frameでオブジェクトに変換する
  3. コミュニティ検出や中心性を用いて見た目を整える

この3ステップをマスターするだけで、ネットワーク分析の第一歩を踏み出せる。まずは身近なデータから試してみてほしい。

おすすめ書籍

誰も教えてくれなかった 医療統計の使い分け〜迷いやすい解析手法の選び方が,Rで実感しながらわかる!


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

コメント

コメントする

目次