Rでh-index

  • h-indexという研究者評価指標があります(九州大学の説明サイト)
  • どうやって計算しているかというと、簡単に言うと、論文を引用件数の多い順に並べます。そうすると、引用数がだんだん減って来て、第 k 番目に引用件数が多い論文の引用数がkのあたりに来ます。そのとき、このkをh-indexとします
  • 引用件数については、「自分で引用」するのは「ずる」が入り得るのでそれ(Journal Self-Citation)は数えないルールです(https://letterpress.information.jp/science/glossary/hindex/=参考)
  • やってみましょう
n.paper <- 20 # 論文数
n.citation <- sample(1:100,20) # 引用数
n.cite.dec <- sort(n.citation,decreasing=TRUE)
plot(n.cite.dec)

tmp <- n.cite.dec - 1:n.paper # 引用数と論文の順位との差
plot(1:n.paper,tmp)
abline(h=0)
tmp.nonneg <- which(tmp >= 0) # 差が0以上の論文のランク列
this.paper <- length(tmp.nonneg) # この論文のランク・引用数がh-indexを決める
# 当該論文のランクか、その引用数の小さい方
h.index <- min(this.paper,n.cite.dec[this.paper])
abline(v=h.index)
  • 関数化しておきます
my.h.index <- function(v){
	sort.v <- sort(v,decreasing=TRUE)
	tmp <- sort.v - 1:length(sort.v)
	tmp.nonneg <- which(tmp>=0)
	this.paper <- length(tmp.nonneg) # この論文のランク・引用数がh-indexを決める
	# 当該論文のランクか、その引用数の小さい方
	h.index <- min(this.paper,n.cite.dec[this.paper])
	return(h.index)
}
  • RにはGoogle Scholarを参照してh-indexを計算する情報をダウンロードしてくれるパッケージ "scholar"があります
  • そのパッケージには、これから先のh-indexの予測をしてくれる関数もあります
  • 使ってみます
library(scholar)
myid <- 'HOGEhoge' # 自分のGoogle Scholar IDを入れます
pb <- get_publications(myid)
str(pb)
n.citation <- pb$cites
n.paper <- length(n.citation)
n.cite.dec <- sort(n.citation,decreasing=TRUE)
tmp <- pb$cites - 1:n.paper
plot(1:n.paper,tmp)
abline(h=0)
tmp.nonneg <- which(tmp >= 0)
h.index <- tmp.nonneg[length(tmp.nonneg)]
abline(v=h.index)
  • 過去、毎年のh-indexの変化を計算することもできます。出版年情報を使ってh-indexに使用するべきペイパーを選別しながら計算すればよいです
year <- 2005:2018
h.index.year <- rep(0,length(year))
for(i in 1:length(year)){
	n.citation.tmp <- pb$cites[which(pb$year<=year[i])]
	h.index.year[i] <- unlist(my.h.index(n.citation.tmp))

}
plot(h.index.year,ylim=c(0,max(h.index.year)))
  • 予測しましょう(モデル通りにパブリケーションを続けたら、の仮定の下での結果です…)
future <- predict_h_index(myid)
plot(future)
  • 過去と未来を連結することもできます
pastFuture <- c(h.index.year,future$h_index[-1])
plot(pastFuture,ylim = c(0,max(pastFuture)))
abline(v=length(h.index.year))