全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3328 4
2010-10-15
我用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和初始值的整个模型见附件哈!
麻烦各位了,谢谢!
附件列表

区县时空交互无协变量预测值.rar

大小:16.64 KB

 马上下载

本附件包括:

  • 区县时空交互无协变量预测值.odc

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-10-15 16:45:53
程序OK的
我用了一台内存1G的电脑
完整的程序,很平顺跑了
iterations 10,000
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-10-15 23:29:08
谢谢epoh!
我今天又试了一下,在不模拟参数或只模拟少数参数的情况下,确实能运行10000次甚至20000次以上,但如果模拟的参数多了,就会在一定次数停止运算,模拟的参数越多,则运行的次数越少。
如果用更大内存的电脑运行一下可能就知道是不是内存的原因了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-10-15 23:32:15
由于现有计算机内存的限制,我决定只模拟必需要的参数,应该就可以解决这个问题了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-24 23:58:20
我现在也遇到与你同样的问题。请问,最后你的问题是如何解决的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群