0

我在 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]])
    }
}
4

0 回答 0