igraphでシンデレラガールズのアイドル紹介相関図

アイドルマスターシンデレラガールズ第6回総選挙が終わりましたね。楓さんおめでとうございます。

さて、今回の総選挙では、登場アイドルがお題に沿って他のアイドルを紹介する特設ページ開設され、話題になった。

www.nicovideo.jp

全アイドルを網羅する内容の丁寧さもさることながら、自分としては『おっ、これはいい有向重みなしグラフ…』と思ったので、Rのigraphパッケージ*1を使って相関図を作成してみた。

まずは、以下のように1列目に紹介する側、2列めに紹介される側のアイドルをタブ区切りで記入したファイルを作成し、エッジリストを作成。

卯月 まゆ
卯月 加蓮
卯月 美嘉
卯月 みく
卯月 雅
有香 亜季
有香 拓海
有香 早苗
有香 アヤ
有香 あやめ
ゆかり 星花
ゆかり 久美子

(以下略)

これをigraphに取り込んで、以下のスクリプトで相関図が描ける。

library(igraph)#igraphパッケージの呼び出し
cg <- read.table(file="cg_idol_edgelist.txt", header=FALSE)#エッジリストを読み込み
g <- graph.data.frame(cg[1:2], directed=T)#グラフオブジェクトに渡す
V(g)$color <- "pink"#ノードの色をcute仕様に
V(g)$size <- 6#ノードサイズの決定
V(g)$color[63:125] <- "cornflowerblue"#ノードの色をcool仕様に
V(g)$color[126:183] <- "yellow"#ノードの色をpassion仕様に
V(g)$label.cex <- 1.2#文字サイズ変更
png("cg_idol.png",width=2000,height=2000)pngで保存する準備
plot(g,layout=layout.kamada.kawai)#グラフをプロット
dev.off()#デバイスを閉じる

f:id:Fujinitaka:20170524023745j:plain

…いやー非常にごちゃごちゃしていて分かりにくい。

ただ、クラスタを形成しているように見えないことから、少なくとも全アイドルまんべんなく紹介されていることが示唆されている。また、よく見ると、左の方にアヤさん、渚さん、櫂くん、洋子さんが配置されていて、スポーツ系が集まっていることや、右端には蘭子、飛鳥くん、聖ちゃん、音羽さん、詩織さん、小梅ちゃんが位置してるのは、魂の共鳴を感じるCool不思議組のクラスタっぽいかな-とは思える。

全体的な傾向を見ると、例えば平均アイドル紹介数は以下で求まる。

gsize(g)/gorder(g)#エッジ数/ノード数
[1] 4.945355

任意のノード間の平均パス数を求めてみると、

mean_distance(g, directed = TRUE)

[1] 3.344262

となる。つまり、ランダムに1組のペアを選んだとき、一方のアイドルからもう一方のアイドルまでは平均約3.3回のクリックでたどり着ける計算になる。おもったより短くて済むという印象。

他のアイドルへの距離(最低必要クリック数)を求めて、テキストに一覧を出力するには、

dis <- distances(g, mode="out")#outでノードから出ていくエッジを数える
write.table(dis,"cg_dis_table.txt",append=T,quote=F,col.names=T)

とすればよい。

 

次に、マイ担当アイドルである「白菊ほたる」に注目して、周囲の関係性を調べてみた。まず、ほたるが紹介する・ほたるを紹介するアイドルを求める。

incident_edges(g,58,mode="all")
$ほたる
+ 9/905 edges (vertex names):
[1] ほたる->ネネ ほたる->朋 ほたる->晴 ほたる->海
[5] ほたる->巴 加奈 ->ほたる 裕美 ->ほたる 惠 ->ほたる
[9] 智香 ->ほたる

これで、ほたるの周囲の関係性は把握できた。惠さんと智香から矢印出てるのは意外な気がする。

つづいて、ほたるが所属するユニットであるGBNS(ガールズビーネクストステップ)のメンバーには、どのように到達できるか調べてみた。

shortest_paths(g,"ほたる","千鶴",mode="out")
$vpath
$vpath[[1]
+ 5/183 vertices, named:
[1] ほたる 海 晶葉 亜子 千鶴

shortest_paths(g,"ほたる","裕美",mode="out")
$vpath
$vpath[[1]
+ 5/183 vertices, named:
[1] ほたる 巴 夏樹 涼 裕美

shortest_paths(g,"ほたる","泰葉",mode="out")
$vpath
$vpath[[1]
+ 4/183 vertices, named:
[1] ほたる ネネ 薫 泰葉

という感じで、最短ルートを出すこともできる。こう見ると、アイドル全員ちゃんと繋がってるんだな…という温かみのようなものを感じる。

 

このグラフ、更に掘り下げて次数中心性など調べてみると面白そうだけど、今は時間と知識がちょっと足りないので別の機会に。とはいえこのエッジリストがあれば、誰でも同様の解析できるので、どこかのサイトにアップしようかと思う(果たして需要はあるのか?)。

 

8/19追記:

Dropboxにてエッジリストを公開しました。

Dropbox - cg_idol_edgelist.txt

 

参考サイト様:

第6回シンデレラガール総選挙のアイドル紹介をjson化 · isaisstillalive/imas_cg_hash@384e2a2 · GitHub

注:メアリーと美世さんだけ抜けている

igraph R manual pages

農薬の散布間隔図をRのigraphパッケージでプロットしてみた - もうカツ丼でいいよな

R seminar on igraph

先行文献:

【モバマス】第六回シンデレラガールズ総選挙「アイドル紹介」 アイドル毎に選ばれた人数まとめ:もばます!