トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Sna_components

  • 社会ネットワークの一部をみる
library(sna)
load(file="0Mat.rda") 
dim(Mat)
#[1] 1067 1067 と出力されたはず 1067人×1067人の行列
m<- Mat[1:30,1:30] #全体だと大きいので練習のため一部のみとりだす
m
gden(m)  #行列の密度  行列の要素のうち1より大きいもの(メッセージがやりとりされた)ものの占める割合
grecip(m)  #互酬性が成り立っているものの割合

(res<-triad.census(m>0))  #3人の組み合わせのパターン分類
#3桁の数字は双方向、一方向、結ばれていない タイの数
#003  A,B,C, the empty graph.
#012  A->B, C, the graph with a single directed edge.
#102  A<->B, C, the graph with a mutual connection between two vertices.
#021D  A<-B->C, the out-star.  D:出て行く矢印
#021U  A->B<-C, the in-star.   U:入ってくる矢印
#021C  A->B->C, directed line. C:サイクル 
#111D  A<->B<-C.
#111U  A<->B->C.
#030T  A->B<-C, A->C.
#030C  A<-B<-C, A->C.
#201  A<->B<->C.
#120D  A<-B->C, A<->C.
#120U  A->B<-C, A<->C.
#120C  A->B->C, A<->C.
#210  A->B<->C, A<->C.
#300  A<->B<->C, A<->C, the complete graph.
gplot(m,label=rownames(m))  #一部のみを社会ネットワークとして描画
#インタラクティブにしてだれが中心かを確認
gplot(m,label=rownames(m),interactive=T) 
 
#そのうち相互につながっている部分を
(res<-component.dist(m,connected="weak"))
names(res)
res$csize #それぞれのcomponentの大きさ(含まれる人の数
res$membership  #各個人がどのcomponentsに属しているか
data.frame( res$membership,rownames(m)) #ラベルと並べてみる
gplot(m,label=rownames(m),vertex.col=res$membership)  #membership番号で色づけ
#ここでの最大のcomponent = 1に含まれる部分のみを取り出す
m2<-m[res$membership==1,res$membership==1 ]
m2
gplot(m2,label=rownames(m))  #社会ネットワークとして描画
  • 練習 全ネットワークを含めて同じことをしてみる。