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)) #社会ネットワークとして描画