Metropolis Hastings サンプリングする

# 値の台
xx <- seq(from=-5,to=20,length=1000)

# 適当な(密度関数)
dd <- dnorm(xx) + dnorm(xx,1,2) + dnorm(xx,10,2)

# 確率密度関数っぽい形
plot(xx,dd)

# 
library(mcmc)

# 確率密度に比例したあたいの対数を返す関数を書く
h <- function(x){
	log(dnorm(x) + dnorm(x,1,2) + dnorm(x,10,2))
}
# サンプリングする
# 2番目の引数は、始めに試す乱数の値
# 
out <- metrop(h, 0, 10000)
out$accept

# out[[2]]には試した値が格納される
# out$accept.batchには、0/1が格納され、採択されたものには1が立つのでそれを選ぶ

hist(out[[2]][which(out$accept.batch==1)])