私は、ベイズは人口規模推定達成するためのモデル持っていると検出の確率のみ観測されたオブジェクトの観測された数に基づいて、二項分布での:
このモデルをで推定するrstan
と、事後のグリッド近似から得られた結果とは異なります。理由を突き止めようとしています。(興味を持った読者は、この質問は、後続の私の答えにあることを見つけるかもしれないここに。)
rstan
近似
参考までに、これはrstanコードです。
raftery.model <- "
data{
int I;
int y[I];
}
parameters{
real<lower=max(y)> N;
simplex[2] theta;
}
transformed parameters{
}
model{
vector[I] Pr_y;
for(i in 1:I){
Pr_y[i] <- binomial_coefficient_log(N, y[i])
+multiply_log(y[i], theta[1])
+multiply_log((N-y[i]), theta[2]);
}
increment_log_prob(sum(Pr_y));
increment_log_prob(-log(N));
}
"
raft.data <- list(y=c(53,57,66,67,72), I=5)
system.time(fit.test <- stan(model_code=raftery.model, data=raft.data,iter=10))
system.time(fit <- stan(fit=fit.test, data=raft.data,iter=10000,chains=5))
theta
2シンプレックスとしてキャストすることに注意してください。これは単純化のためです。関心のある量はtheta[1]
、明らかtheta[2]
に余分な情報です。
さらに、は実数値(勾配法であるため実数値パラメーターのみを受け入れます)なので、実数値の二項分布を作成しました。rstan
Rstanの結果
mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat
N 1078.75 256.72 15159.79 94.44 148.28 230.61 461.63 4575.49 3487 1
theta[1] 0.29 0.00 0.19 0.01 0.14 0.27 0.42 0.67 2519 1
theta[2] 0.71 0.00 0.19 0.33 0.58 0.73 0.86 0.99 2519 1
lp__ -19.88 0.02 1.11 -22.89 -20.31 -19.54 -19.09 -18.82 3339 1
グリッド近似
グリッド近似は以下のように作成されました。メモリの制約により、ノートパソコンでグリッドを細かくすることができません。
theta <- seq(0+1e-10,1-1e-10, len=1e3)
N <- round(seq(72, 5000, len=1e3)); N[2]-N[1]
grid <- expand.grid(N,theta)
y <- c(53,57,66,67,72)
raftery.prob <- function(x, z=y){
N <- x[1]
theta <- x[2]
exp(sum(dbinom(z, size=N, prob=theta, log=T)))/N
}
post <- matrix(apply(grid, 1, raftery.prob), nrow=length(N), ncol=length(theta),byrow=F)
post.norm <- post/sum(post)
グリッド近似を使用して、事後密度のこの表示を生成しました。後部がバナナ型であることがわかります。この種の後部は、ユークリッドメトリックHMCにとって問題となる可能性があります。(バナナの形の重大度は、が対数スケールであるため、実際にはここでは抑制されています。)バナナの形を1分間考えると、線上にある必要があることがわかります。。(さらに、このグラフに表示されるグリッド近似は、明確にするために正規化されていません。それ以外の場合、バナナは少し狭すぎて明確に理解できません。)ˉ Y = θ N
グリッド近似結果
do.call(cbind, lapply(c(0.025, .25, .5, .75, .975), function(quantile){
approx(y=N, x=cumsum(rowSums(post.norm))/sum(post.norm), xout=quantile)
}))
[,1] [,2] [,3] [,4] [,5]
x 0.025 0.25 0.5 0.75 0.975
y 92.55068 144.7091 226.7845 443.6359 2475.398
討論
の97.5%の分位数は、グリッド近似の場合よりも私のモデルではるかに大きくなっていますが、その分位点はそれ以外はグリッド近似に似ています。私はこれを、2つの方法が概ね一致していることを示していると解釈します。97.5%の分位数の不一致を解釈する方法はわかりません。rstan
グリッド近似とrstan
HMC-NUTSサンプリングの結果の相違を説明できる可能性のある説明をいくつか作成しましたが、どちらか一方または両方の説明が正しいかどうかを理解する方法がわかりません。
- Rstanは間違っており、グリッドは正しいです。
rstan
特にがに向かってドリフトする ため、バナナの形の密度はに問題があるため、これらのテールの量は信頼できません。グリッドの後方のプロットから、値大きいと尾が非常に鋭いことがわかります。+ ∞ N - Rstanは正しく、グリッドは間違っています。グリッドは、結果を損なう可能性のある2つの近似を行います。まず、グリッドは事後部分空間上の点の有限セットにすぎないため、おおよその概算です。次に、これは有限の部分空間であるため、最大グリッド値より大きい値に対して事後確率が0であると誤って宣言しています。同様に、グリッドのテールに入るのに優れているので、テールの四分位点は正しいです。N
rstan
Juhoの答えからポイントを明確にするために、さらにスペースが必要でした。私が正しく理解していれば、後部からを積分してベータ二項分布を取得できます: P (Y | N 、α 、β )= ( N
この例では、事前のユニフォームがあるため、およびです。後部はとなると思います。ここで、です。しかし、これはJuhoの回答とは大きく異なるようです。どこが間違っているのですか?β = 1