小妹现在做毕业论文,根据发病数运用HMM预测疾病的流行状态,大体上就是根据可见的发病数(第i个地区t天的发病数x[t,i])来发现不可见的疾病状态(暴发/未暴发,),以及状态在时间上的排列顺序,达到知道疾病的流行状态。所以需要估计模型的参数如初始时刻在暴发/未暴发状态( z[1,i] =1/0)的概率,以及两个状态之间的转移概率,还有就是分布在两个状态下产生该发病数的概率,然后就model这个程序。是我根据一个winbugs程序改的(去掉了原来的空间信息),data步的数据是我模拟的
model
{ # model for initial time period t=1
for (t in 1:1) {
for (i in 1:Ndist)
{ # Ndist areas
z[1,i] ~ dcat(pInit[1,i,1:K])
# hidden state z in one of K(=2) states,,ȡֵΪ1¡¢2
pInit[1,i,1:K] ~ ddirch(alpha[1:K]) # initial probability of being in state z
x[1,i] ~ dpois(mu[z[1,i]]) # different poisson mean for eachstate
}
}
# model for subsequent periods
for (t in 2:Time) {
for (i in 1:Ndist)
{
z[t,i] ~ dcat(p[z[t-1,i],1:K])
x[t,i] ~ dpois(mu[z[t,i]])
}
}
# priors on Poisson parameters of latent classes
mu[1] ~ dgamma( 40,20)
mu[2] ~ dgamma( 250,50) I(mu[1],)
# prior on transition matrix (gamma equivalent to Dirichlet)
for(k in 1 : K) {
for(l in 1 : K) {
p[k,l] <- px[k,l]/sum(px[k,])
px[k,l] ~ dgamma(alpha[l],1)
}
}
# equilibrium allocation
pi[1] <- p[1,2]/(p[1,2]+p[2,1])
pi[2] <- 1-pi[1]
for(l in 1 : K) { alpha[l]~ dbeta(0.5,0.5) }
}
Data
list(Ndist=5,Time=5, K=2,
x=structure(
.Data=c(0,1,1,2,2,
1,2,1,0,3,
0.1,1,2,2,4,
2,1,2,4,5,
1,2,2,1,3),
.Dim=c(5,5)
))
Inits list(alpha[1] =0.1, alpha[2] =0.1,mu[1]=0,05,mu[2]=0.05)
现在的问题是:
1.在自动产生初值的情况下运行的结果是:Dirichlet35,看不懂了,不晓得是不是因为这个数据是我模拟的原因
2.mu[2] ~ dgamma( 250.50) I(mu[1],) 没看懂这个I(mu[1],)附在mu[2] 的分布后面是什么意思
3.for(k in 1 : K) {
for(l in 1 : K) {
p[k,l] <- px[k,l]/sum(px[k,])
px[k,l] ~ dgamma(alpha[l],1)
}
}
是 for (t in 2:Time) 的p[z[t-1,i],1:K]的分布定义,正文中有提到在t>2的时候gamma分布等同于t=1时的dirchlet分布
然后我自己定义了alpha[l]~ dbeta(0.5,0.5) ,才能compile,不晓得适当不?