我在 OpenBUGS 中实现了一个 HMM 模型。但是,当我转向 HSMM 时,我不知道如何处理持续时间变量。谁能指导我,或者给我一些例子?
下面是HMM模型的代码,其中d[]是为HSMM模型提前准备的,在这个HMM模型中不起任何作用。
model
{
#prior
pi.alpha[1] <- 1
pi.alpha[2] <- 1
pi.alpha[3] <- 1
a1.alpha[1] <- 0
a1.alpha[2] <- 0.5
a1.alpha[3] <- 0.5
a2.alpha[1] <- 0.5
a2.alpha[2] <- 0
a2.alpha[3] <- 0.5
a3.alpha[1] <- 0.5
a3.alpha[2] <- 0.5
a3.alpha[3] <- 0
pi[1:3] ~ ddirich(pi.alpha[])
a[1,1:3] ~ ddirich(a1.alpha[])
a[2,1:3] ~ ddirich(a2.alpha[])
a[3,1:3] ~ ddirich(a3.alpha[])
d.alpha[1] <- 1
d.alpha[2] <- 1
d.alpha[3] <- 1
d.alpha[4] <- 1
d.alpha[5] <- 1
d.alpha[6] <- 1
d.alpha[7] <- 1
d.alpha[8] <- 1
d.alpha[9] <- 1
d.alpha[10] <- 1
d.alpha[11] <- 1
d.alpha[12] <- 1
p.d[1,1:12] ~ ddirich(d.alpha[])
p.d[2,1:12] ~ ddirich(d.alpha[])
p.d[3,1:12] ~ ddirich(d.alpha[])
mu[1] ~ dunif(-100,100)
mu[2] ~ dunif(-100,100)
mu[3] ~ dunif(-100,100)
tau[1] ~ dnorm(0, 0.00001)
tau[2] ~ dnorm(0, 0.00001)
tau[3] ~ dnorm(0, 0.00001)
#likelihood
s[1] ~ dcat(pi[])
d[1] ~ dcat(p.d[s[1],])
y[1] ~ dnorm(mu[s[1]], tau[s[1]])
for (t in 2:T)
{
s[t] ~ dcat(a[s[t-1],1:3])
d[t] ~ dcat(p.d[s[t],])
y[t] ~ dnorm(mu[s[t]], tau[s[t]])
}
}