我在R中运行R2OpenBUGS时遇到了一个具体问题。但它在OpenBUGS中运行得非常好。
我想了解问题所在。
这是我的代码:
模型波动;
const n = 180;
{
#可能性:联合分配ys
for(t in 1:n)
{(yisigma2 [t]< -1 / exp(theta [t]);
y [t] ~dnorm(0,yisigma2 [t]);
}
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);
}
}
R代码:
svm.sim< - bug(data,inits,model.file =" C:/ Documents and Settings / code.txt",
parameters = c(" mu"," phi"," tau"),
n.chains = 1,n.iter = 1000,codaPkg = TRUE,debug = TRUE)
这是从R:
模型在语法上是正确的
数据已加载
模型编译
节点的这个分量不是随机的phi误差pos 25
无法为UpdaterNormal.StdUpdater类型的节点生成初始值
在更新之前必须初始化模型
必须在使用监视器之前初始化模型
必须在使用监视器之前初始化模型
必须在使用监视器之前初始化模型
必须在使用监视器之前初始化模型
必须在监控DIC之前初始化模型
在更新之前必须初始化模型
必须在使用监视器之前初始化模型
未设置DIC监视器
任何帮助将不胜感激
谢谢你们
Dinakar
答案 0 :(得分:0)
我稍微修改了你的代码(见下文),它似乎工作正常。我确实将值n指定为数据,并让OpenBUGS自己生成初始值。这是你指定你的内容的问题吗?
sink("stack_model.txt")
cat("
model{
# likelihood: joint distribution of ys
for (t in 1:n)
{
yisigma2[t] <- 1/exp(theta[t])
y[t] ~ dnorm(0,yisigma2[t])
}
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)
}
}",fill=TRUE)
sink()
win.data<-list(n=180)
svm.sim <- bugs(win.data, inits=NULL, model.file = "stack_model.txt", parameters = c("mu", "phi", "tau"), n.chains = 2, n.iter = 1000, DIC=F, debug=TRUE, codaPkg =TRUE)