私のメトロポリス - ヘイスティングス問題は固定の二項分布を持ち、すべての提案分布q(i、j)は0.5です。プロットとヒストグラムを参照して、アルゴリズムを0.5付近に集中させると、二項分布からの確率は?RのMetropolis-Hastingsアルゴリズム:正しい結果はありますか?
pi <- function(x, n, p){
# returning value from binomial distribution
result <- (factorial(n)/(factorial(x) * factorial(n - x))) *
p^x * (1 - p)^(n - x)
return(result)
}
metropolisAlgorithm <- function(n, p, T){
# implementation of the algorithm
# @n,p binomial parameters
# @T number of time steps
X <- rep(runif(1),T)
for (t in 2:T) {
Y <- runif(1)
alpha <- pi(X[t - 1], n, p)/pi(Y, n, p)
if (runif(1) < alpha) X[t] <- Y
else X[t] < X[t - 1]
}
return(X)
}
# calling M-H algorithm and plotting result
test <- metropolisAlgorithm(40,0.5,5000)
par(mfrow=c(2,1))
plot(test, type = "l")
hist(test, breaks = 40)
それは良い質問ですが、私はネイティブ関数を探すことを考慮しませんでした:/チップのおかげで! –
あなたのコードを繰り返し実行すると、私はあなたが主張しているものが見当たりません。生成された最初の乱数の近くに集中しているようなものが見られます。これはしばしば0.5からかなり離れています。したがって、実装には問題があります。あなたの提案の配布は奇妙に見えます。 –
'' X''は '[0,1]'の値ではなく整数値を取るべきですか? –