0
私はジャグを使用しています。パラメータθを推定するために2つの異なるモデルを定義しました。なぜこの2つのモデルはシータ1とシータ2の異なるサンプルを返しますか?誰かが私を助けることができましたか?このモデルが異なるサンプルを返す理由
#MODEL 1
model {
for (i in 1:nFlip) {
y[i] ~ dbern (theta[ mdlI ])
}
theta[1] <- 1/(1+exp(-nu))
theta[2] <- exp(-eta)
nu ~ dnorm(0,.1) # 0,.1 vs 1,1
eta ~ dgamma(.1,.1) # .1,.1 vs 1,1
# Prob dos modelos
mdlI ~ dcat (mdlProb[])
mdlProb[1] <- .5
mdlProb[2] <- .5
}
#MODEL 2
model {
for (i in 1:nFlip) {
# Likelihood:
y[i] ~ dbern(theta)
}
# Prior
theta <- ((2-mdlIdx) * 1/(1+exp(-nu)) # theta from model index 1
+ (mdlIdx-1) * exp(-eta)) # theta from model index 2
nu ~ dnorm(0,.1) # 0,.1 vs 1,1
eta ~ dgamma(.1,.1) # .1,.1 vs 1,1
# Hyperprior on model index:
mdlIdx ~ dcat(modelProb[])
modelProb[1] <- .5
modelProb[2] <- .5
}
ご協力いただきありがとうございます。 Diogo Ferrari
実際には、2つのモデルはthetaの異なるサンプルを返します。モデルを実行し、これをプロットしますか? – Diogo
実際には、2つのモデルはthetaの異なるサンプルを返します。モデルを実行し、これをプロットしますか?m1 < - jags.model(textConnection(m1)、n.chains = 2) s1 < - coda.samples(m1、c( "theta"、 'mdlI')、n.iter = 1e4、thin = 10)m2 < - jags.model(textConnection(m2)、n.chains = 2) s2 < - coda.samples(m2、c( "theta"、 "mdlIdx")、n.iter = 1e4、thin = 10) mcmcChain1 < - as.matrix(S1) mcmcChain2 < - as.matrix(S2) HIST(mcmcChain1 [2]) HIST(mcmcChain1 [3]) インデックス< - mcmcChain2 [1] == 1 hist(mcmcChain2 [index、2]) hist(mcmcChain2 [!index、2]) – Diogo
ここにいくつかの問題があります。 1. 'mcmcChain2'にはあなたの考えが含まれていません(次元を確認してください - 実際に何が入っているのか分かりません)。 2.チェーンが収束していない可能性があります。それらをさらに動かすと、0、.7、および1の4つの分布すべてに3つのピークが表示されます。 3.モデルが誤って指定されている:2つの確率が切り替わります時々から。そのため、事後分布にはいくつかのモードがあります。 'theta1