r - JAGS 中可能的定向循环
问题描述
我正在尝试拟合空间状态模型,但收到以下错误消息:
Error in jags.model(file = model.file, data = data, inits = inits, n.chains = n.chains, :
RUNTIME ERROR:
Possible directed cycle involving some or all
of the following nodes:
t[2]
t[3]
t[4]
t[5]
t[6]
t[7]
t[8]
t[9]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
v[9]
我在这里发现了JAGS 错误 - 可能涉及以下部分或全部节点的定向循环,这可能是由于t[i]
等式两边的术语,但我之前在其他空间状态模型中做过这个,我没有有这个问题,知道什么可能导致这个问题吗???这是模型:
o<-c(22.77619, 19.07782, 22.08817, 16.32168, 32.57081, 10.48027, 15.93440, 27.54557, 33.39933)
cat(file="pop.din","
model {
t[1] <- n0
o[1] ~ dlnorm(log(t[1]),tau.obs)
for (i in 2:9) {
v[i] <- lambda*t[i] #valor esperado
t[i] ~ dpois(v[i]) #t valor verdadero
o[i] ~ dlnorm(log(t[i]),tau.obs)
}
lambda ~ dunif(0.1,0.00001)
tau.obs ~ dgamma(1,10)
n0 ~ dlnorm(1,0.0001)
}")
pop.din.data<-c("o")
#initial values for the parameters stored as a list
inits<-function()list(lambda=runif(0.01,1),tau.obs=rlnorm(1,1,1),n0=rlnorm(1,1,1))
params<- c("lambda","n0","tau.obs")
ni <- 10000
nt <- 1
nb <- 5000
nc <- 3
library(jagsUI)
j.model <- jags (model.file = "pop.din", data = pop.din.data,parameters.to.save = params,
inits=inits, n.burnin=nb,n.chains = nc,n.iter = ni)
print(j.model)
问候
解决方案
这是我的问题的解决方案:空间状态模型将变量的值与其前一次的值相关联,在这种情况下,应该编写过程模型:
cat(file="pop.din","
model{
#### Data Model
for(i in 1:n){
o[i] ~ dlnorm(x[i],tau_obs)
}
#### Process Model
for(i in 2:n){
v[i]<-lambda*x[i-1] ###not x[i]
x[i]~dpois(v[i])
}
#### Priors
x[1] ~ dlnorm(x_ic,tau_ic)
lambda ~dunif(mu,tau_lambda)
tau_obs ~ dgamma(1,1)
}")
问候
推荐阅读
- android - 在android中的Textview上使用多读和少读功能实现时丢失HTML格式
- git - 无法运行 Git:IntelliJ IDEA、macOS
- android - 如何在edittext中显示日期并使用BindingAdapter和android Mvvm通过datepicker更新它
- deep-learning - 关于在 NER 中使用 Vocab 文件的说明
- javascript - 如何从网址拍摄网页快照?
- azure-devops - 应用服务部署问题
- javascript - 图例 chropleth 地图传单未显示 getColor 值
- visual-c++ - 如何在 cpp-winrt idl 文件和普通/标准 cpp 类中使用相同的命名空间名称?
- .htaccess - 如何在我的网站上隐藏 .txt 文件
- oracle - H2中的Oracle同义词替代品?