有志のための統計学メニュー考、管理編(改)

# 入力ファイルは、各行の第1列に気になる用語、
# 第2列以降、任意の列数で、第1列と関連する用語を記載
# タブ区切り

my.knowledge.graph <- function(file,from=NULL,to=NULL,target.date=NULL,target.node=NULL,max.edge=NULL,alpha=1){	library(igraph)
	tmp <- as.matrix(read.table(file,sep="\t",fill=TRUE))
	dates <- as.numeric(tmp[,1])
	if(is.null(from))from<-min(dates)
	if(is.null(to))to<-max(dates)
	targets <- which(dates >= from & dates <= to)
	d <- tmp[targets,-1]
	# ノードとしてのユニークを取る
	u.d <- unique(c(d))
	# 入力データをユニークノードIDで表す
	d.id <- d
	null.id <- which(u.d=="")
	v.label <- c()
	for(i in 1:length(u.d)){
		d.id[which(d==u.d[i])] <- i
		v.label[i] <- u.d[i]
	}
	# エッジリストを表す行列を作る
	e <- matrix(0,0,2)
	for(i in 1:length(d[,1])){
		if(length(d[i,]) > 1){
			for(j in 2:length(d[i,])){
				if(length(null.id)>0){
					if(d[i,j]==""){
					}else{
						e <- rbind(e,c(d[i,1],d[i,j]))
					}
				}
				
			}
			
		}
	}

	# 入力ファイルはひたすら思いつくままに書くので、エッジ重複が出る
	# それを省く
	e.uniq <- unique(e)
	e.weight <- rep(0,length(e.uniq[,1]))
	
	for(i in 1:length(e.uniq[,1])){
		e.weight[i] <- length(which(e[,1]==e.uniq[i,1] & e[,2]==e.uniq[i,2]))
	}
	selected.e <- 1:length(e.weight)
	if(is.null(max.edge)){
		selected.e <- which(e.weight >= quantile(e.weight,1-alpha))
	}else{
		sort.w <- sort(e.weight,decreasing=TRUE)
		tmp.max.edge <- min(max.edge,length(e.weight))
		tmp.w <- sort.w[tmp.max.edge]
		#print(tmp.w)
		selected.e <- which(e.weight >= tmp.w)
		#print(selected.e)
	}
#print(e.uniq[selected.e,])
	library(igraph)
	# 無向グラフオブジェクトにする
	g <- graph.edgelist(e.uniq[selected.e,],directed=FALSE)
	E(g)$weight <- e.weight
	v <- V(g)$name
	
	# ノードの色を付ける
	col <- rep(rgb(0.3,0.3,0.3,alpha=0.3) ,length(v))
	if(!is.null(target.date)){
		# ターゲットノードの文字列を指定して、そのノードの色を変える
		tmp.v <- which(dates[targets]==target.date)
		col[which(v %in% d[tmp.v,1])] <- rgb(1,0.3,0.3,alpha=0.5) 
		#print(dates)
		#print(dim(d))
		#print(tmp.v)
	}
	if(!is.null(target.node)){
		col[which(v %in% target.node)] <- rgb(1,0.3,0.3,alpha=0.5) 

	}

	e.w <- E(g)$weight
	#e.w.2 <- e.w
	#g2 <- g
	#E(g2)$weight <- e.w-1
	#e.w.3 <- as.numeric(e.w.2 > 0)
	plot(g,vertex.color=col,edge.width = e.w)
}

#my.knowledge.graph("test.txt")
my.knowledge.graph("統計基礎勉強会.txt",target.node="サポートベクターマシン")
my.knowledge.graph("統計基礎勉強会.txt",from=-1,to=20140501,target.date=20140402)
my.knowledge.graph("統計基礎勉強会.txt",from=-1,to=20131201,target.date=20140402)


my.knowledge.graph("統計基礎勉強会.txt",from=-1,to=20131113,target.date=dd.u[i],max.edge=20)

dd <- c(20131113,20131113,20131127,20131204,20131211,20131218,20131225,20131225,20131225,20131225,20140108,20140108,20140108,20140115,20140122,20140122,20140122,20140129,20140212,20140226,20140305,20140319,20140326,20140326,20140402,20140409,20140416,20140423,20140514,20140521,20140528)
dd.u <- unique(dd)

for(i in 1:length(dd.u)){
	jpeg(paste(dd.u[i],"s.jpeg"))
	my.knowledge.graph("統計基礎勉強会.txt",from=-1,to=dd.u[i],target.date=dd.u[i],max.edge=20)
dev.off()
}

for(i in 1:length(dd.u)){
	jpeg(paste(dd.u[i],"k.jpeg"))
	my.knowledge.graph("統計基礎勉強会.txt",from=-1,to=dd.u[i],target.date=dd.u[i])
dev.off()
}
  • 入力ファイル
20131113	ヒストグラム	分布	最適化							
20131113	カーネル密度推定	カーネル	ヒストグラム	推定	近似	平滑化				
20131127	楕円	回転	回転行列	固有値分解						
20131204	固有値分解	逆行列	楕円							
20131211	リサンプリング	クロスバリデーション	ギッブスサンプリング	パーミュテーション法	ジャックナイフ法	推定				
20131218	ニュートン法	最適化	微分							
20131225	二項分布	ベータ分布	分布							
20131225	共役事前分布	ベータ分布								
20131225	二項分布	離散								
20131225	ベータ分布	連続								
20140108	ワイブル分布	故障	最弱リンクモデル	形状パラメタ	尺度パラメタ					
20140108	分布	パラメタ								
20140108	最弱リンクモデル	確率モデル	モデル							
20140115	連検定	離散	組み合わせ	順列						
20140122	尤度関数	最尤推定	微分	極値	尤度					
20140122	尤度	確率	事前確率	事後確率	ベイズ					
20140122	尤度関数	ワイブル分布								
20140129	TeX	数学	表記							
20140212	アルゴリズム	線形計画法	動的計画法	貪欲法	分割統治法	数え上げ	ヒューリスティック	遺伝的アルゴリズム	モンテカルロ法	計算量
20140226	疑似乱数列	乱数	分布	シード	ギッブスサンプリング		線形合同法	メルセンヌ・ツイスター	素数	
20140305	MCMC	状態推移	状態推移行列	行列	モンテカルロ	乱数				
20140319	p値	検定								
20140326	LAPACK	線形代数	パッケージ							
20140326	線形代数	行列								
20140402	統計学	用語	定義							
20140409	統計学	記法								
20140416	データマイニング	データベース	データウェアハウス	分類	クラスタリング					
20140423	スプライン曲線	近似	微分	平滑化	推定					
20140514	オッカムの剃刀	ゲーム理論	ランダム	モデル	自由度					
20140521	自己相関	カーネル関数	周期性	畳みこみ	内積					
20140528	サポートベクターマシン	カーネル関数	内積	内積空間	分類	回帰