【问题标题】:WinBUGS "array index is greater than upper bound for muc"WinBUGS“数组索引大于 muc 的上限”
【发布时间】:2016-08-24 18:12:04
【问题描述】:

我有一个简单的贝叶斯分层模型(sir 模型),应该很容易运行。问题是在成功加载模型和数据后,我尝试编译模型时出现以下错误,“数组索引大于 muc 的数组上限”。看起来这应该很容易解决,但我反复检查了索引和数据,但找不到问题。

任何建议将不胜感激!

#model
model{
for (i in 1:M){
rem[i,1]<-0
susc[i,1]<-susint[i]
muc[i,1]<-susc[i,1]
cpos[i,1]~dpois(muc[i,1])
}

for (i in 1:M){
for (j in 2: T){

rem[i,j]<-betaR*cpos[i,j]
susc[i,j]<-susc[i,j-1]-cpos[i,j-1]-rem[i,j-1]
cpos[i,j]~dpois(muc[i,j])
log(muc[i,j])<-bet0+log(susc[i,j]+0.001)+log(cpos[i,j-1]+0.001)+b1[i]
}

muct1[i]<-muc[i,1]
remt1[i]<-rem[i,1]
sust1[i]<-susc[i,1]
}
for (j in 1:T){

mucrich[j]<-muc[40,j]
mucchar[j]<-muc[10,j]
muchor[j]<-muc[26,j]
mucbea[j]<-muc[7,j]}

b1[1:14] ~ car.normal(adj[], weights[], num[], tau.b1)
for(k in 1:sumNumNeigh) {
  weights[k] <- 1 }

bet0~dflat()
tau.b1~dgamma(0.01,0.01)
#betaR~dgamma(0.01,1.0)
betaR<-0.001
}

#data

list( M=14,T=1,cpos=structure(.Data= c(
129, 843, 933, 1160, 1387, 2374, 506, 337, 1700, 779, 730, 1354, 3443, 1821),    
.Dim=c(14,1)),susint = c(
236200, 1958100, 1546800, 2351300, 1695900, 5004600, 995600, 753500, 3312400, 1513100, 1094300, 1595000, 3219200,2452800),
num = c(
1, 3, 2, 5, 1, 4, 4,2, 3, 6, 2, 3, 1, 1),  
adj = c(
2,          
4, 3, 1,    
4, 2,       
8, 7, 5, 3, 2, 
8,       
4, 7, 10, 9, 
11, 12, 8, 7,  
12, 10,     
11, 10, 7,  
6, 5, 4, 8, 10, 12, 
7, 5,   
7, 6, 4,    
13, 
15),

sumNumNeigh=38,     #sumNumNeigh=total of neighbors

)

inits

list(bet0=0.01,tau.b1=0.1,b1=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0)
list(bet0=0.03,tau.b1=0.2,b1=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0)

【问题讨论】:

    标签: winbugs


    【解决方案1】:

    您的数据指定 M=14 和 T=1,这意味着 muc 有 14 行和 1 列。然后,您尝试使用 mucrich[j]

    我猜这个错误确实出在数据上 - 特别是我怀疑你的意思是 T=1(否则你的模型中有很多不必要的代码!)。

    【讨论】:

    • 没问题。如果这回答了您的问题,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2020-02-04
    • 2014-12-07
    • 1970-01-01
    • 2020-11-14
    • 2016-05-07
    • 2011-12-13
    相关资源
    最近更新 更多