ネットワーク分析チュートリ アル
Neco&Sprng 2001/12/13
ネットワークの定義
何らかの関係があり、その関係に一定 のパターンがあるもの
「関係」のパターン=ネットワーク構 造
放送網、通信網…
学閥、ボランティア組織、企業集団…
パソコン通信、 Internet…
ネットワーク分析って何?
ネットワーク分析とは何か
分析対象の例
ネットワーク分析 (Network
Analysis)
社会における様々な「関係」のパター ンをネットワークとしてとらえる
ネットワークの構造を記述・分析する
紐帯
最終的な目的
組織や個人の行動を何から説明するか?
組織・個人の性質?
組織・個人の周囲のネットワークの構造?
分析対象の例
パソコン通信のネットワーク 就職情報とネットワーク
夫婦のネットワーク コミュニティ
産業間ネットワークと市場成果 日米市場構造の比較と変化
世界システム論 など
今回は
KG間のネットワークを分析して
みる
例題
rg 内の各 ML の参加者をもとに、
各 kg ごとのつながりを調べよ
http://www.sfc.wide.ad.jp/~masa/rg/
2001f/tutorial/reidai.html
使う素材のリストアップ
ML に所属する人のリスト
元データは shonan から取ってきました
例: neco の ML 参加者
egichan
yuuki
・・・
ami-ta
素材データの変換
ML に所属する人のリスト
ある人が所属する ML のリスト 例: ami-ta の場合
neco
sprng
soi
マトリクス表を作る
二つの kg に所属している人
例: haruhito さん ( 参加 ML : insat, sprng) 所属 ML リスト
haruhito | INSAT haruhito | sprng INSAT - sprng +1
INSAT
sprng +1
マトリクス表を作る
三つの
kgに所属している人
例: ami-ta( 参加 ML : neco, sprng, soi)
所属 ML リスト Ami-ta | neco Ami-ta | sprng Ami-ta | soi
neco sprng Soi
neco +1 +1
Sprng +1 +1
Soi +1 +1
Soi sprng
neco
+1
+1 +1
マトリクス表が示すもの
・・・ SING STREAM ・ ・
・
・ ・ ・
STREAM 12
Comcom 1 2
educe 2 11
・ ・ ・
行列 (matrix)
大きなネットワーク
複雑なネットワーク を表すのに用い る
A B C D A 0 1 1 1 B 1 0 0 0 C 1 0 0 1 D 1 0 1 0
紐帯図
グラフの基礎 (1)
ネットワークの関係構造を点と線で表 す
ソシオグラム (sociogram) ともいう
無向グラフ
ネットワークの構造を示すもの
有向グラフ
関係の方向性も表すもの
グラフの基礎 (2)
無向グラフ 有向グラフ
グラフの基礎 (3)
点 (point) =頂点 (vertex) 、ノード (node)
線 (line) =辺 (edge) 、弦 (arc) 紐帯 (tie)
社会ネットワーク分析において線の代わり に使う
グラフの基礎 (4)
点 (point) =頂点 (vertex) 、 ノード (node)
紐帯 (tie) と呼ばれる 線 (line) =辺
(edge) 、弦 (arc)
孤立点・中心性
孤立点 中心
グラフを描く際の注意点
点の大きさや線の長さに注意
できるだけ等しくする
特定の部分に意識を集中させない
点の配置
ネットワークの構造がわかりやすいよう に
全く同じ構造の
紐帯の力
行為者間の関係の強さ
何らかの指標をたて、それから推測する
例 : 企業間の関係の強さ
企業間の取引額
役員派遣数
相互の株式保有数
交際頻度 etc...
紐帯の力の具体例
ある一定期間内に三者間で交わされた メール数からそれぞれの関係の強さを 推測
A と B の間のメール数を 1 とする
1 0.8
1.3
紐帯図
例題のまとめ (1)
紐帯図をみると、 SING, STREAM, I-car と いう三角形と、 STREAM, SOI, educe とい う三角形、さらには、 neco, sprng, SOI と いう三角形が存在します。
この三角形は互いに結びつきが強く、、これ らの kg 同士、結びつきが強いといえます。
また全般的に見て、村井研のその他の各 kg
間にも結びつきが多く存在していることから、
村井研の人々は複数の kg にまたがって活動 している傾向があるといえます。
例題のまとめ (2)
課題
11 月に [email protected] に流れた メールから、 rg 内の kg 間のつながり をネットワーク分析の手法を用いて、
分析・考察してください
終了条件は、分析・考察結果を出席用
紙に記入することです
課題を解くために ・・・
分析するためのデータは、以下のとこ ろにあります
http://www.sfc.wide.ad.jp/~treasure/
kadaidata.txt
このデータは、 11 月分のメールから
元の発言 kg と発言者の Message-Id
をリストアップしたものです
課題を解くために ・・・ (2)
凡例 ( 一行あたりのデータ ) educe
: KG 名<[email protected] ide.ad.jp.sfc.wide.ad.jp>
: メッセー ジ ID<20010515193801.5FEA.SIROKU [email protected]>
: リプライ先の IDこれらが並んで一つの行になっています
課題を解くために ・・・ (3)
1. データを読む
2. Perl スクリプトを書く
3. 有効なデータに変換する
4. データをマトリクスに書き込む
5. 紐帯図を書く
6. マトリクスと紐帯図を見て考察をま
とめる
Perl 講座
すぐ使えるテキスト処理
http://www.sfc.wide.ad.jp/
~masa/rg/2001f/tutorial/
textproc.html
目的
目的:
課題の分析スクリプトがかけるようになる。
今日の登場人物
パイプとリダイレクト
textutils (grep, sort, uniq, comm, wc)
Perl
こつ
可能な限り手を抜く。
車輪の再発明はしない。
man と友達になる。
one-liner への第一歩
コマンドラインだけでも結構遊べる。
例 1: 自分が出したメールの数
% cat mbox | egrep -c ‘^From: .*[email protected]’
例 2: メーリングリスト参加者の重複
% cat neco | sort > neco.sorted
% cat sprng | sort > sprng.sorted
% comm –1 –2 neco.sorted sprng.sorted
パイプとリダイレクト
パイプ(|であらわす)
プログラムの出力を別のプログラムにつ なぐ
例 : % ls –la | less
リダイレクト(<と>であらわす)
プログラムの入出力をファイルにする。
例 ( 入力 ): % less < readme.txt
例 ( 出力 ): % ls –la > filelist.txt
grep/egrep
grep: ある文字列を含む行を抜き出す
例 : masa のユーザ情報を見る
% grep masa: /etc/passwd
egrep: 正規表現でもうちょっと賢い 検索
例 : rg-99 っぽい人を探す
% egrep ‘[st]99‘ /etc/passwd
例 : “From: “ で始まる行を抜き出す。
% egrep ‘^From: ‘ mbox
sort/uniq
sort: 行を整列
sort –n とすると、最初の数字の順番。
sort –r で逆順になる。
uniq: 重複を弾く、重複を数える
同じ内容の連続行を1行にまとめる。
連続している必要があるので、事前に sort しな いといけない。
uniq –c とすると、重複している行を数える。
→ ある内容を含む行の数を求められる。
組み合わせる
パイプでつないでいく。
例 : メーリングリストの発言集計
% egrep ‘^From: .*’ < rg | sort | uniq –c | sort -n
Perl
ちょっと凝ったことがしたくなったら Perl 。
多くの部分は C や Java と類似。
配列の扱いや正規表現による検索・置換
頑張ればなんでも。
簡単に集計ができます。
簡単に表が作れます。
やろうと思えば図も。
Perl の基本事項 - 変数
ふつうの値(スカラー値)
$var 、 $subject…
配列
@LIST 、 $LIST[0] 、 $LIST[1]…
ハッシュ
%HASH 、 $HASH{“From”} 、
$HASH{“To”}
注意:接頭語 ($@%) で種類を区別する。
Perl の基本事項 – 省略形
見えない変数「 $_ 」
デフォルトの操作対象
print ( 表示 )
chomp ( 最後の改行を取り除く )
split / 区切り文字 /
( 区切り文字で分割、リストで返 す。 )
Perl の基本事項 – 構文
while( 条件 ){…}
条件が真の場合 while 内を繰り返す。
while(<>) とすると標準入力から $_ に 一行ずつ代入して、 {…} の内容が繰り返さ れる。
if ( / 正規表現・文字列 / ) {…}
$_ に正規表現や文字列が見つかれば {…}
の中が実行される。
Perl の基本パターン
タブ区切りされたデータを一行ずつ処理
while (<>) { # 1 行ごとに $_ に入れる。
chomp; # 最後の改行を取り除く。
@data = split /\t/; # タブで区切り配列 @data に入れ る。
… いろいろな処理…
print; # 結果を表示
} # while からここまでを繰り返す。
今回のヒント
1. まず
splitで分割して、変数に代入。
( $kg, $msgid, $replyto ) = split /\t/;
2. ハッシュに発言者の
KG($kg)と
Message-Id($msgid)を入れる。
$DATA{$msgid} = $kg;
3. リプライ先の
KGをハッシュから探す。
$replykg = $DATA{$replyto};
今回のヒント (cont.)
4. 発言者の
KGとリプライ先の
KGを表示
print “$kg -> $replykg\n”;
5. 1~4の出力を、
uniqと
sortでカウン ト。
sort | uniq –c と sort –n を使う。
これで、一覧がでるはずです。
回答例
マトリクス参考図
以下にアクセスしてみましょう。
http://www.sfc.wide.ad.jp/~masa/
rg/2001f/tutorial/rg-2001nov.txt
紐帯図例
紐帯図: 9 月分
紐帯図: 10 月分
紐帯図: 11 月分
考察例
SING, STREAM, I-car の三角形は 9, 10, 11 月と月別に見ていっても特に変化がなく、結 びつきが強いことが読み取れた。
SoI, sprng, neco, educe は ML から人の結 びつきは強そうに見えたが、 rg 宛のメール から見ると全然繋がっていないことが示され た。これらの kg はオフラインで繋がってる ことが多いか、メールのやりとりはしない人 たちだと言えるかもしれない。
考察例 (2)
9, 10, 11 月の紐帯図を見比べて…
9 月は sprng 周辺が濃い
10 月は薄くなってる
11 月にまた濃くなっている
9月には sprng が新人研修の担当だっため、 rg 宛のメールが増えたことが結果として関係を強く していると思われる。そして、 11 月には卒論中 間発表があり、その際に中心的な働きをしていた masa(sprng) の存在が結果に影響を与えている可 能性が大きい。
---- 終了 ----
______________
∧_∧ /
( ・∀・)< 終わりだ YO!( ・ ・ )∀
( ) \______________
| | |
(_ _ )_)
終わりだ YO!( ・
∀ ・ )