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

SetupAnalysis3

簡単な社会ネットワーク分析  中心性など

#ディレクトリを指定して実行  すでに読み込んである場合には実行不要
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)