load(file="0MGPdat.rda") names(MGPdat) #これは人のデータ 下記の変数 # id id # n_down その人が開発したソフト/uploadしたファイルがダウンロードされた回数 # n_file その人が開発したソフト/uploadしたファイル数 # first_dev その人がはじめてソフト/ファイルを公開した日 #n_post メッセージ投稿数 #n_res0 メッセージ受信数 # first_post その人がはじめてメッセージを投稿した日 # handle2 ハンドル名 # id2 上のidとハンドル名をつけたもの summary(MGPdat) #含まれる変数の記述統計 library(chron) #日付けデータに変換 MGPdat$first_dev<-chron(MGPdat$first_dev) MGPdat$first_post<-chron(MGPdat$first_post) summary(MGPdat) #含まれる変数の記述統計 hist(n_post) #だとエラー hist(MGPdat$n_post) #データセットに含まれる変数を使いたいときは このように $でつなぐ hist(MGPdat$first_post) #このプロットは何を意味するか? attach(MGPdat) #とすると データセットを指定せず 変数名のみの指定でok hist(n_post) #データセットに含まれる変数を使いたいときは このように $でつなぐ hist(first_post) #
plot(n_post,n_res0) #散布図 text(n_post,n_res0,id2,pos=4) #ラベルをつける max(n_post) #最大 1373 MGPdat[n_post==1373,] #投稿数最大の人のレコードをみる
attach(MGPdat) plot(n_post, n_res0) #*回帰分析 res<-lm(n_post~ n_res0) summary(res) #結果 #Call: #lm(formula = n_post ~ n_res0) #Residuals: # Min 1Q Median 3Q Max #-331.864 -3.698 0.532 2.072 325.671 #Coefficients: # Estimate Std. Error t value Pr(>|t|) #(Intercept) 0.1578 0.9106 0.17 0.86 #n_res0 2.7699 0.0228 121.26 <2e-16 *** #--- #Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #Residual standard error: 28.6 on 1065 degrees of freedom #Multiple R-squared: 0.932, Adjusted R-squared: 0.932 #F-statistic: 1.47e+04 on 1 and 1065 DF, p-value: <2e-16
#いつもの発言行列 library(sna) load(file="0Mat.rda") dim(Mat) #[1] 1067 1067 と出力されたはず 1067人×1067人の行列 #グラフに描く&座標をデータセットxyに入れる xy<-gplot(Mat) rownames(xy)<-rownames(Mat)#行の名前をMatからコピー xy #各点の座標 dim(xy) #当然人数分 plot(xy) # すでに座標は求めてあるので、gplotではなくplotでok
#もっとも発言している人はid2=BXA01140-VIC番目なので、その座標に赤い点をプロット plot(xy) points(xy[rownames(xy)=="BXA01140-VIC"],col="red",pch=19)
#出力するとわかるように座標 xyと 人のデータMGPdatのならび順は同じではない data.frame(rownames(xy),xy,MGPdat) #いろいろ不便なので、同じ人のデータが対応するように、マージする。 xy2<-data.frame(rownames(xy),xy) #座標データで人の名前もデータとしてひっつける。 names(xy2)<-c("id2","x","y")#変数名を指定する xy2[1:20,] #二つのデータセットをマージして新しくMGPdat2を作成 MGPdat2<-merge(MGPdat,xy2,by.x="id2",by.y="id2",all=T) MGPdat2[1:20,] summary(MGPdat2) dim(MGPdat2) attach(MGPdat2) #これを使って最も発言している id2=BXA01140-VIC を赤い点でプロット plot(x,y) #まずはplot すでに座標は求めてあるので、gplotではなくplotでok #該当者の座標を取り出す xy2<-MGPdat2[id2=="BXA01140-VIC",c("x","y")] #色はcol="red"のように指定 pch=19 とすると塗りつぶし円 points(xy2,col="red",pch=19) #20回以上発言している人を黄色に 5回未満の人を青に xy2<-MGPdat2[n_post>20,c("x","y")] xy3<-MGPdat2[n_post<5,c("x","y")] plot(x,y) points(xy2,col="yellow",pch=19) points(xy3,col="blue",pch=19)
#グレイスケールにすることもできる 投稿数が多いほど濃い色に
grey関数では0-1の間で濃さを指定する max(n_post) #1373 plot(x,y,col=grey(1-n_post/1373)) #数字が多いほど白くなるので 1から引いて逆転 #色の付け方の変更 hist(n_post)#このように0に集中しているので対数をとってみる hist(log(n_post+1))
cl<-1-log(n_post+1)/log(1373+1)#それを使って色の濃さをコントロール plot(x,y,col=grey(cl))
# id id # n_down その人が開発したソフト/uploadしたファイルがダウンロードされた回数 # n_file その人が開発したソフト/uploadしたファイル数 # first_dev その人がはじめてソフト/ファイルを公開した日 #n_post メッセージ投稿数 #n_res0 メッセージ受信数 # first_post その人がはじめてメッセージを投稿した日 # handle2 ハンドル名 # id2 上のidとハンドル名をつけたもの