0
나는 잼 (Jag)을 사용하고 있으며 두 개의 다른 모델을 정의하여 매개 변수 쎄타를 추정했습니다. 왜이 두 모델은 theta 1과 theta 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
실제로 두 모델은 theta에 대해 다른 샘플을 반환합니다. 모델을 실행하고 이것을 계획하십시오. – Diogo
실제로 두 모델은 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로 네 개의 분포에 대해 세 개의 피크가 나타납니다. 3. 모델이 잘못 지정되었습니다. 두 개의 확률이 전환됩니다 때때로. 이것이 사후 분포가 여러 가지 모드를 갖는 이유입니다. 'theta1