!簡単な社会ネットワーク分析  中心性など #ディレクトリを指定して実行  すでに読み込んである場合には実行不要 load(file="0Mat.rda") dim(Mat) library(sna) attach(Mat) #次数を計算 自分でrowSumsしなくてもsnaパッケージには定義されている in.d<-degree(Mat,cmode="indegree") #入次数 その人が受けたコメントの数 out.d<-degree(Mat,cmode="outdegree") #出次数 その人が発したコメントの数 in.out.d<-degree(Mat,cmode="freeman") #入出次数 その人が受けたコメントの数 in.d #みてみる data.frame(in.d) #としたほうがみやすい names(in.d)<-row.names(Mat) #誰だかわからないので名前idをもとの行列からもってきてつける data.frame(in.d) #としたほうがみやすい data.frame(sort(in.d,decreasing=T)) #わかりずらいので 多い順に並べ替えてみる **練習 もっとも受信数が多いのはだれ? **練習 もっとも発信数が多いのはだれ? **次回までの課題 受発信上位者に注目してログを読む。どのような人、どのようなことがこのコミュニティで生じているのかを考察する。 hist(in.d) hist(out.d) hist(in.out.d) plot(in.d,out.d) #これらをデータセットにまとめて、マトリクスプロット d<-data.frame(in.d,out.d,in.out.d) plot(d) i<-isolates(Mat) #だれともやりとりしていない者 i rownames(Mat)[i] #名前を出力 set.seed=1234 #gplotは確率的に配置するので、再現できるように乱数のもとになるものを指定しておく gplot(mat) #時間がかかる #ごちゃごちゃしているので 発言数上位に限定 mat2<-Mat[in.out.d>300,in.out.d>300] #300回以上やりとりしている者のみに限定 dim(mat2) #[[1] 44 gplot(mat2) gplot(mat2,label=rownames(mat2)) #ラベルをつける #プロットの方法を変更してみる gplot(mat2,mode="spring") gplot(mat2,label=rownames(mat2),mode="circle") # gplot(mat2,label=rownames(mat2),mode="kamadakawai") # gplot(mat2,label=rownames(mat2),mode="mds") # gplot(mat2,label=rownames(mat2),mode="spring") # gplot(mat2,interactive=T,label=rownames(mat2)) ##インタラクティブに変更できる プロットされた ノードを選んで、移動先をクリック *練習 **もっとも入次数の大きい者はどこにいるか? **もっとも出次数の大きい者はどこにいるか? **入次数を出次数で説明する回帰分析を実行してみる。(全員のデータを使って) **もっとも出次数の大きい者がどのような発言をしているか、ログをみてみる?hyper.txtなど *参考 #Mat はメッセージ数をカウントしたもの  単に何人とやりとりしたかをみてみる xMat<-Mat>0 #Matの要素が0より大きいかいなかを判定してxMatに Mat[1:10,1:10] xMat[1:10,1:10] # TRUE =1, FALSE =0と扱われる。 #以下同様に処理可能 gden(Mat) #行列の密度 gden(xMat) grecip(Mat) #互酬性が成立しているペアの割合 grecip(xMat) *可視化専門のソフト  **cytoscape[ここからダウンロード|http://cytoscape.org/] **