全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
3999 9
2010-11-15
以下是一个WinBUGS软件的model程序,当WinBUGS软件在进行模型检测的时候,总是出现"expected a comma"的错误信息,请各位专家帮忙看看model程序的问题在哪里?导致出现"expected a comma"的错误信息,多谢!
model{
#specify the multilevel model, z and d are the number of first-level units and second-level units, respectively.
for(j in 1:z){
for(i in 1:d){
#specify the first level model: m[j,i]=beta3[j]+e2[j,i]
m[j,i] ~ dnorm(beta3[j], prec.m)
#specify the first level model: y[j,i]=beta1[j]+beta2*m_1[j,i]+e1[j,i]  
y[j,i] ~ dnorm(mean.y[j,i], prec.y)
mean.y[j,i]<- beta1[j]+beta2*m_1[j,i]
}

#specify the second level model: beta3[j]=beta3+alpha*x[j]+e4[j]
beta3[j] ~ dnorm(mean.beta3[j], prec.beta3)
mean.beta3[j]<-beta3+alpha*x[j]
#specify the second level model: beta1[j]=beta1+tau.p*x[j]+beta*m_2[j]+e5[j]
beta1[j] ~ dnorm(mean.beta1[j], prec.beta1)
mean.beta1[j]<-beta1+tau.p*x[j]+beta*m_2[j]
}
#prior distribution of parameters.
beta2 ~ dnorm(0,1.0E-6)
beta1 ~ dnorm(0,1.0E-6)
tau.p ~ dnorm(0,1.0E-6)
beta ~ dnorm(0,1.0E-6)
beta3 ~ dnorm(0,1.0E-6)
alpha ~ dnorm(0,1.0E-6)
prec.y ~ dgamma(0.001,0.001)
prec.m ~ dgamma(0.001,0.001)
prec.beta1 ~ dgamma(0.001,0.001)
prec.beta3 ~ dgamma(0.001,0.001)
#define the effects as function of parameters
theta <- alpha*beta
}
二维码

扫码加我 拉你入群

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

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

全部回复
2010-11-15 13:34:11
model{
#specify the multilevel model, z and d are the number of first-level units and second-level units, respectively.
for(j in 1:z){
beta3[j] ~ dnorm(0,1.0E-6)
beta1[j] ~ dnorm(0,1.0E-6)
for(i in 1:d){
#specify the first level model: m[j,i]=beta3[j]+e2[j,i]
m[j,i] ~ dnorm(beta3[j], prec.m)
#specify the first level model: y[j,i]=beta1[j]+beta2*m_1[j,i]+e1[j,i]  
y[j,i] ~ dnorm(mean.y[j,i], prec.y)
mean.y[j,i]<- beta1[j]+beta2*m_1[j,i]
}

#specify the second level model: beta3[j]=beta3+alpha*x[j]+e4[j]
beta3[j] ~ dnorm(mean.beta3[j], prec.beta3)
#mean.beta3[j]<-beta3+alpha*x[j]
mean.beta3[j]<-beta3[j]+alpha*x[j]
#specify the second level model: beta1[j]=beta1+tau.p*x[j]+beta*m_2[j]+e5[j]
beta1[j] ~ dnorm(mean.beta1[j], prec.beta1)
#mean.beta1[j]<-beta1+tau.p*x[j]+beta*m_2[j]
mean.beta1[j]<-beta1[j]+tau.p*x[j]+beta*m_2[j]
}
#prior distribution of parameters.
beta2 ~ dnorm(0,1.0E-6)
#beta1 ~ dnorm(0,1.0E-6)
tau.p ~ dnorm(0,1.0E-6)
beta ~ dnorm(0,1.0E-6)
#beta3 ~ dnorm(0,1.0E-6)
alpha ~ dnorm(0,1.0E-6)
prec.y ~ dgamma(0.001,0.001)
prec.m ~ dgamma(0.001,0.001)
prec.beta1 ~ dgamma(0.001,0.001)
prec.beta3 ~ dgamma(0.001,0.001)
#define the effects as function of parameters
theta <- alpha*beta
}
二维码

扫码加我 拉你入群

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

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

2010-11-16 11:38:21
WinBUGS软件的model程序问题已经解决,谢谢epoh的热心解答,非常感谢!
二维码

扫码加我 拉你入群

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

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

2010-11-16 12:22:25
仔细阅读Epoh的修改,主要修改有两处:
#specify the second level model: beta3[j]=beta3+alpha*x[j]+e4[j]
#mean.beta3[j]<-beta3+alpha*x[j]
mean.beta3[j]<-beta3[j]+alpha*x[j]

#specify the second level model: beta1[j]=beta1+tau.p*x[j]+beta*m_2[j]+e5[j]
#mean.beta1[j]<-beta1+tau.p*x[j]+beta*m_2[j]
mean.beta1[j]<-beta1[j]+tau.p*x[j]+beta*m_2[j]

即将beta3改为beta3[j],beta1改为beta1[j],模型通过了WinBUGS的检验,呵呵。非常感谢!
但是我还有个疑问:例如,在两层线性模型(Hierarchical Linear Modeling)中,层2的回归模型是beta1[j]=beta1+tau.p*x[j]+beta*m_2[j]+e5[j],其中,beta1是回归方程的截距,是一个值,如果换成beta1[j],就变成了有Z个beta1(因为j in 1:Z),这样是否不符合原模型了呢?
同理,层2 的另一个回归模型beta3[j]=beta3+alpha*x[j]+e4[j],其中,beta3是回归方程的截距,是一个值,如果换成beta3[j],就变成了有Z个beta3(因为j in 1:Z),这样是否不符合原模型了呢?

如果将beta3改为beta3[j],beta1改为beta1[j],改变了原模型,请问又应该如何修改model程序呢?多谢!
二维码

扫码加我 拉你入群

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

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

2010-11-16 12:30:53
如果将beta3改为beta3[j],beta1改为beta1[j],模型没有变化,符合原模型,那就perfect!
model检验通过后,随着而来的是初值(inits)的设定,如果只有一条马尔科夫链,为什么初值设定为list(beta1=rnorm(z),beta3=rnorm(z),beta2=0,pre.y=1,taup=0,beta=0,prec.beta1=1,prec.m=1,prec.beta3=1,alpha=0)时,WinBUGS软件提示初值设置失败?多谢!
二维码

扫码加我 拉你入群

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

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

2010-11-16 18:59:53
你的程序跟范例Rats很像
Rats: a normal hierarchical model
内有code,data,init1,init2,and Results
C:\Program Files\WinBUGS14\Examples
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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