2016-03-10 7 views
0

У меня возникли проблемы в инициализации следующую модель в OpenBUGSOpenBUGS: Инициализация модели

model 
{ 
#likelihood 
for (t in 1:n) { yisigma2[t] <- 1/exp(theta[t]); 
y[t] ~ dnorm(0,yisigma2[t]); 
} 
#Priors 
mu ~ dnorm(0,0.1); 
phistar ~ dbeta(20,1.5); 
itau2 ~ dgamma(2.5,0.025); 
beta <- exp(mu/2); 
phi <- 2*phistar-1; 
tau <- sqrt(1/itau2); 
theta0~dnorm(mu, itau2) 
thmean[1] <- mu + phi*(theta0-mu); 
theta[1] ~ dnorm(thmean[1],itau2); 
for (t in 2:n) { thmean[t] <- mu + phi*(theta[t-1]-mu); 
theta[t] ~ dnorm(thmean[t],itau2); 
} 
} 

Это мои данные

list(y=c(-0.0383 , 0.0019 ,......-0.0094),n=945) 

И это список моих инициалов

list(phistar= 0.98, mu=0, itau2=50) 

Проверка модели, загрузка данных и шаги компиляции в порядке. При загрузке инициалов OpenBUGS говорит, что загружаются начальные значения, но цепочка содержит неинициализированные переменные. Затем я попытался инициализировать theta0, но проблема не устранена. Может кто-нибудь, пожалуйста, помогите мне в этом? Спасибо Khalid

ответ

0

Я новичок в OpenBugs, но разве вы не должны указывать дистрибутив для inits, а не одно значение точки? что-то вроде? inits < - function() {list (alpha = rnorm (1), beta = rnorm (1), sigma = rlnorm (1))}

+0

Я также новичок в OpenBUGS. Но я думаю, что распределение для inits требуется, когда нужно запускать несколько цепей. Я использую единственную цепочку, используемую в этой статье «ОШИБКИ для байесовских стохастических моделей волатильности» Мейера и Ю. Кроме того, я нашел решение. Это связано с тем, что все скрытые переменные в модели (в байесовской структуре) также считаются параметрами, и поэтому скрытые переменные каждого человека также нуждаются в стартовых значениях. Таким образом, «gen inits» из OpenBUGS также можно использовать после загрузки inits. –

 Смежные вопросы

  • Нет связанных вопросов^_^