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