全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 winbugs及其他软件专版
1708 2
2014-04-10
model{
#observation model
     for(j in 1:J){
      for(t in 1:T){
           y[j,t]~dnorm(mu[j,t],tauy[j])
           mu[j,t]<-beta0[j,t]+beta1[j,t]*I[j,t]+beta2[j,t]*L[j,t]+beta3[j,t]*IL[j,t]
   }
}
#state model
      for(j in 1:J){
        for(t in 2:T){
          beta0[j,t]~dnorm(mu.0[j,t],tau0[j])
          beta1[j,t]~dnorm(mu.1[j,t],tau1[j])
          beta2[j,t]~dnorm(mu.2[j,t],tau2[j])
          beta3[j,t]~dnorm(mu.3[j,t],tau3[j])
    mu.0[j,t]<-beta0[j,t-1]+gam0[j]*E[j,t]+gam4[j]*E[j,t-1]       
    mu.1[j,t]<-beta1[j,t-1]+gam1[j]*E[j,t]+gam5[j]*E[j,t-1]
    mu.2[j,t]<-beta2[j,t-1]+gam2[j]*E[j,t]+gam6[j]*E[j,t-1]       
    mu.3[j,t]<-beta3[j,t-1]+gam3[j]*E[j,t]+gam7[j]*E[j,t-1]
    }
}
#measurement equation model
      for(t in 1:T){
       for(j in 1:J){
        for(i in 1:N){
          x[j,t,i]~dnorm(mu.x[j,t,i],psi[j,i])
         ephat[j,t,i]<-x[j,t,i]-mu.x[j,t,i]
}
    mu.x[j,t,1]<-lamda1[j]*E[j,t]       
    mu.x[j,t,2]<-lamda2[j]*E[j,t]
    mu.x[j,t,3]<-lamda3[j]*E[j,t]
    E[j,t]~dnorm(0,1)
}
}
}
#priors on observation model
  for(j in 1:J){
    beta0[j,1]~dnorm(0.0,1.0)
    beta1[j,1]~dnorm(0.0,1.0)
    beta2[j,1]~dnorm(0.0,1.0)
    beta3[j,1]~dnorm(0.0,1.0)  
    gam0[j]~dnorm(0.0,1.0)
    gam1[j]~dnorm(0.0,1.0)
    gam2[j]~dnorm(0.0,1.0)
    gam3[j]~dnorm(0.0,1.0)
    gam4[j]~dnorm(0.0,1.0)
    gam5[j]~dnorm(0.0,1.0)
    gam6[j]~dnorm(0.0,1.0)
    gam7[j]~dnorm(0.0,1.0)
    lamda1[j]~dnorm(0.0,1.0)
    lamda2[j]~dnorm(0.0,1.0)
    lamda3[j]~dnorm(0.0,1.0)  
    tau.y[j]~dgamma(1.0,1.0)
    tau0[j]~dgamma(1.0,1.0)
    tau1[j]~dgamma(1.0,1.0)
    tau2[j]~dgamma(1.0,1.0)
    tau3[j]~dgamma(1.0,1.0)
}
    for(j in 1:J){
    for(i in 1:N){
    psi[j,i]~dgamma(1.0,1.0)
    sgm[j,i]<-1/psi[j,i]
}
}#end of model

Data
list(T=9,N=3,J=2,
      x=structure(
               .Data=c(0.23,0.65,0.76,0.19,0.59,0.70,0.42,0.68,0.64,0.39,0.79,0.59,
                             0.23,0.65,0.76,0.19,0.59,0.70,0.42,0.68,0.64,0.39,0.79,0.59,
                             0.41,0.81,0.61,0.49,0.80,0.58,0.38,0.74,0.51,0.40,0.79,0.49,
                             0.36,0.83,0.52,0.41,0.81,0.61,0.49,0.80,0.58,0.38,0.74,0.51,
                             0.40,0.79,0.49,0.36,0.83,0.52),
               .Dim=c(9,3,2)),
      y=structyre(
             .Data=c(150,136,143,154,135,148,128,149,146,150,136,143,154,135,148,128,149,146),
             .Dim=c(9,2)),
      I=structure(
             .Data=c(0.38,0.62,0.56,0.39,0.61,0.4,0.53,0.42,0.46,0.38,0.62,0.56,0.39,0.61,0.4,0.53,0.42,0.46),
             .Dim=c(9,2)),
      L=structure(
             .Data=c(85,70,80,88,68,82,63,84,86,85,70,80,88,68,82,63,84,86),
             .Dim=c(9,2)),
      IL=structure(
             .Data=c(32.3,43.4,44.8,34.32,41.48,32.8,33.39,35.28,39.56,32.3,43.4,44.8,34.32,41.48,32.8,33.39,35.28,39.56),
             .Dim=c(9,2))
Data load 时出错,请高手帮忙看看哪里错了,谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2014-4-12 23:23:10
你的程序多处有小错(拼写错误,多个大括号,少个大挂号等等),我尽力改了,现在能运行(当然我没读你的程序,所以不知结果是否符合你的需要)。凡是改过的地方都加了注释,见后面多出有"#"的地方。

model{
#observation model
      for(j in 1:J){
       for(t in 1:T){
            y[j,t]~dnorm(mu[j,t],tauy[j])
            mu[j,t]<-beta0[j,t]+beta1[j,t]*I[j,t]+beta2[j,t]*L[j,t]+beta3[j,t]*IL[j,t]
    }
}
#state model
       for(j in 1:J){
         for(t in 2:T){
           beta0[j,t]~dnorm(mu.0[j,t],tau0[j])
           beta1[j,t]~dnorm(mu.1[j,t],tau1[j])
           beta2[j,t]~dnorm(mu.2[j,t],tau2[j])
           beta3[j,t]~dnorm(mu.3[j,t],tau3[j])
     mu.0[j,t]<-beta0[j,t-1]+gam0[j]*E[j,t]+gam4[j]*E[j,t-1]        
    mu.1[j,t]<-beta1[j,t-1]+gam1[j]*E[j,t]+gam5[j]*E[j,t-1]
     mu.2[j,t]<-beta2[j,t-1]+gam2[j]*E[j,t]+gam6[j]*E[j,t-1]        
    mu.3[j,t]<-beta3[j,t-1]+gam3[j]*E[j,t]+gam7[j]*E[j,t-1]
     }
}
#measurement equation model
       for(t in 1:T){
        for(j in 1:J){
         for(i in 1:N){
           x[j,t,i]~dnorm(mu.x[j,t,i],psi[j,i])
          ephat[j,t,i]<-x[j,t,i]-mu.x[j,t,i]
}
     mu.x[j,t,1]<-lamda1[j]*E[j,t]        
    mu.x[j,t,2]<-lamda2[j]*E[j,t]
     mu.x[j,t,3]<-lamda3[j]*E[j,t]
     E[j,t]~dnorm(0,1)
}
}
# } # delete this one
#priors on observation model
   for(j in 1:J){
     beta0[j,1]~dnorm(0.0,1.0)
     beta1[j,1]~dnorm(0.0,1.0)
     beta2[j,1]~dnorm(0.0,1.0)
     beta3[j,1]~dnorm(0.0,1.0)  
     gam0[j]~dnorm(0.0,1.0)
     gam1[j]~dnorm(0.0,1.0)
     gam2[j]~dnorm(0.0,1.0)
     gam3[j]~dnorm(0.0,1.0)
     gam4[j]~dnorm(0.0,1.0)
     gam5[j]~dnorm(0.0,1.0)
     gam6[j]~dnorm(0.0,1.0)
     gam7[j]~dnorm(0.0,1.0)
     lamda1[j]~dnorm(0.0,1.0)
     lamda2[j]~dnorm(0.0,1.0)
     lamda3[j]~dnorm(0.0,1.0)  
     tauy[j]~dgamma(1.0,1.0) #change fr tau.y to tauy
     tau0[j]~dgamma(1.0,1.0)
     tau1[j]~dgamma(1.0,1.0)
     tau2[j]~dgamma(1.0,1.0)
     tau3[j]~dgamma(1.0,1.0)
}
     for(j in 1:J){
     for(i in 1:N){
     psi[j,i]~dgamma(1.0,1.0)
     sgm[j,i]<-1/psi[j,i]
}
} # add this one
}#end of model

Data
list(T=9,N=3,J=2,
       x=structure(
                .Data=c(0.23,0.65,0.76,0.19,0.59,0.70,0.42,0.68,0.64,0.39,0.79,0.59,
                              0.23,0.65,0.76,0.19,0.59,0.70,0.42,0.68,0.64,0.39,0.79,0.59,
                              0.41,0.81,0.61,0.49,0.80,0.58,0.38,0.74,0.51,0.40,0.79,0.49,
                              0.36,0.83,0.52,0.41,0.81,0.61,0.49,0.80,0.58,0.38,0.74,0.51,
                              0.40,0.79,0.49,0.36,0.83,0.52),
                .Dim=c(2,9,3)),   # change from .Dim=c(9,3,2)
       y=structure( # correct spelling error, i.e. change from structyre(
              .Data=c(150,136,143,154,135,148,128,149,146,150,136,143,154,135,148,128,149,146),
              .Dim=c(2,9)),  # change from .Dim=c(9,2)
       I=structure(
              .Data=c(0.38,0.62,0.56,0.39,0.61,0.4,0.53,0.42,0.46,0.38,0.62,0.56,0.39,0.61,0.4,0.53,0.42,0.46),
              .Dim=c(2,9)),  # change from .Dim=c(9,2)
       L=structure(
             .Data=c(85,70,80,88,68,82,63,84,86,85,70,80,88,68,82,63,84,86),
              .Dim=c(2,9)),  # change from .Dim=c(9,2)
       IL=structure(
              .Data=c(32.3,43.4,44.8,34.32,41.48,32.8,33.39,35.28,39.56,32.3,43.4,44.8,34.32,41.48,32.8,33.39,35.28,39.56),
              .Dim=c(2,9)))  # change from .Dim=c(9,2)
二维码

扫码加我 拉你入群

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

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

2014-4-16 20:06:24
TimeT 发表于 2014-4-12 23:23
你的程序多处有小错(拼写错误,多个大括号,少个大挂号等等),我尽力改了,现在能运行(当然我没读你的程 ...
谢谢老师
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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