Надеюсь, кто-нибудь сможет мне помочь с этим, потому что я действительно застрял и не нашел свою ошибку кодирования!
Я подбираю нулевые пуассоновские / отрицательные биномиальные GLM (без случайных эффектов) в JAGS (с R2Jags), и все в порядке с оценками параметров, априорными значениями, начальными значениями и сходимостью цепочек. Все результаты полностью соответствуют, например, оценкам из пакета pscl, включая мой расчет остатков Пирсона в модели ...
Единственное, что я не могу заставить работать, - это отобрать из модели новую выборку, чтобы получить байесовское значение p для оценки соответствия модели. «Нормальные» пуассоновские и отрицательные биномиальные модели, которые я использовал до того, как все дали ожидаемые реплицированные образцы, и никаких проблем не возникло.
Вот мой код, но важная часть - "#New Samples":
model{
# 1. Priors
beta ~ dmnorm(b0[], B0[,])
aB ~ dnorm(0.001, 1)
#2. Likelihood function
for (i in 1:N){
# Logistic part
W[i] ~ dbern(psi.min1[i])
psi.min1[i] <- 1 - psi[i]
eta.psi[i] <- aB
logit(psi[i]) <- eta.psi[i]
# Poisson part
Y[i] ~ dpois(mu.eff[i])
mu.eff[i] <- W[i] * mu[i]
log(mu[i]) <- max(-20, min(20, eta.mu[i]))
eta.mu[i] <- inprod(beta[], X[i,])
# Discrepancy measures:
ExpY[i] <- mu [i] * (1 - psi[i])
VarY[i] <- (1- psi[i]) * (mu[i] + psi[i] * pow(mu[i], 2))
PRes[i] <- (Y[i] - ExpY[i]) / sqrt(VarY[i])
D[i] <- pow(PRes[i], 2)
# New Samples:
YNew[i] ~ dpois(mu.eff[i])
PResNew[i] <- (YNew[i] - ExpY[i]) / sqrt(VarY[i])
DNew[i] <- pow(PResNew[i], 2)
}
Fit <- sum(D[1:N])
FitNew <- sum(DNew[1:N])
}
Большая проблема в том, что я действительно перепробовал все комбинации и изменения, которые, по моему мнению, могли / должны работать, но когда я смотрю на смоделированные образцы, я получаю вот это:
> all.equal( Jags1$BUGSoutput$sims.list$YNew, Jags1$BUGSoutput$sims.list$Y )
[1] TRUE
И, что действительно странно, при использовании средств Fit и FitNew:
> Jags1$BUGSoutput$mean$Fit
[1] 109.7883
> Jags1$BUGSoutput$mean$FitNew
[1] 119.2111
Кто-нибудь знает, что я делаю не так? Любая помощь будет принята с благодарностью!
С уважением, Ульф
Jags1$BUGSoutput$sims.list$Y
, но это не имеет смысла, поскольку Y - это данные, а не выходной параметр, поэтому не должно быть никакого моделирования. - person Tomas   schedule 15.03.2015