我用680个区域的发病数据做贝叶斯时空模型,采用improper CAR空间相关先验分布,模型中不含协变量,但每年的空间效应不同(时空交互),这个程序运行至4000次就停止运算了,过了很久会出现一个对话框,提示“undefined real results”;如果删掉
“yc.pred[i,t] ~dpois(muc[i,t])
resc[i,t] <-yc.pred[i,t] -yc[i,t]
PPLc[i,t] <- pow(resc[i,t],2)
PPLc2[i,t]<- abs(resc[i,t])
yc.pred[i,t] ~dpois(muc[i,t])
mapec <- mean(PPLc2[,])
mspec <- mean(PPLc[,])”
这部分(是用于计算预测值yc.pred、残差resc、平均绝对误差mapec和均方误差mspec的),则模型可以运行至7000次才停止。
另一个模型只有70个区域,程序基本相同,却不会出现这个提示。请教一下是什么原因?(内存不够?初始值不对?还是其它原因?我用的电脑是1G的内存)
模型如下:
model
model
{
for( i in 1:Nc)
{
for (t in 1 : T)
{
yc[i,t]~dpois(muc[i,t])
log(muc[i,t])<-log(Ec[i, t])+log(RRc[i,t])
# Relative Risk
RRc[i,t]<-exp(alphac+uc[i,t]+vc[i,t])
SIRc[i,t]<-(yc[i,t]+epsc2)/(Ec[i, t]+epsc2)
PPc[i,t]<-step(RRc[i,t]-1+epsc)
yc.pred[i,t] ~dpois(muc[i,t])
resc[i,t] <-yc.pred[i,t] -yc[i,t]
PPLc[i,t] <- pow(resc[i,t],2)
PPLc2[i,t]<- abs(resc[i,t])
}
}
mapec <- mean(PPLc2[,])
mspec <- mean(PPLc[,])
# CAR prior distribution for spatial correlated heterogeneity
uc1[1:Nc] ~ car.normal(adjc[],weightc[],numc[],tau.uc[1])
uc2[1:Nc]~ car.normal(adjc[],weightc[],numc[],tau.uc[2])
uc3[1:Nc] ~ car.normal(adjc[],weightc[],numc[],tau.uc[3])
uc4[1:Nc] ~ car.normal(adjc[],weightc[],numc[],tau.uc[4])
for(i in 1:Nc)
{
uc[i,1]<-uc1[i]
uc[i,2]<-uc2[i]
uc[i,3]<-uc3[i]
uc[i,4]<-uc4[i]
}
for(kc in 1:sumNumNeighc)
{
weightc[kc]<-1
}
# Prior distributions for the Uncorrelated Heterogeneity
for(i in 1:Nc)
{
vc1[i]~dnorm(0,tau.vc[1])
vc2[i]~dnorm(0,tau.vc[2])
vc3[i]~dnorm(0,tau.vc[3])
vc4[i]~dnorm(0,tau.vc[4])
}
for (i in 1:Nc)
{
vc[i,1]<-vc1[i]
vc[i,2]<-vc2[i]
vc[i,3]<-vc3[i]
vc[i,4]<-vc4[i]
}
for(t in 1 : T)
{
tau.uc[t]<-1/pow(sigma.uc[t],2)
sigma.uc[t]~ dunif(0,10)
tau.vc[t]<-1/pow(sigma.vc[t],2)
sigma.vc[t]~ dunif(0,10)
var.uc[t]<-pow( sigma.uc[t],2)
var.vc[t]<-pow(sigma.vc[t],2)
sumvarc[t]<- var.uc[t]+var.vc[t]
PVCc[t]<-var.uc[t]/sumvarc[t]
}
#other prior
alphac ~ dflat()
epsc<-1.0E-6
epsc2~dnorm(0,1000)
}
含data和初始值的整个模型见附件哈!
麻烦各位了,谢谢!


雷达卡


京公网安备 11010802022788号







