楼主: fangjie-fanglu
4034 9

请教关于WinBUGS软件的model程序问题 [推广有奖]

  • 0关注
  • 1粉丝

已卖:19份资源

本科生

48%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0.0057
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1637 点
帖子
60
精华
0
在线时间
96 小时
注册时间
2009-5-20
最后登录
2022-3-17

楼主
fangjie-fanglu 发表于 2010-11-15 12:53:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以下是一个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
}
二维码

扫码加我 拉你入群

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

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

关键词:Winbugs软件 winbugs WINBUG model mode 请教 程序 软件 model winbugs

本帖被以下文库推荐

沙发
epoh 发表于 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
}

藤椅
fangjie-fanglu 发表于 2010-11-16 11:38:21
WinBUGS软件的model程序问题已经解决,谢谢epoh的热心解答,非常感谢!

板凳
fangjie-fanglu 发表于 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程序呢?多谢!

报纸
fangjie-fanglu 发表于 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软件提示初值设置失败?多谢!

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

7
fangjie-fanglu 发表于 2010-11-16 20:38:55
epoh说的很对,我的model就是参照范例Rats写成的,但是model却无法通过WinBUGS的检验。epoh修改的model可以通过WinBUGS的检验,但是似乎与原模型的层2回归方程不完全符合,还请各位专家帮忙!如何才能既符合原模型,又通过WinBUGS的检验。
范例Rats的模型是:
#specify the first level model: y[i,j]=alpha[i]+beta[i]*(x[j]-xbar)+e1[i,j]
#specify the second level model: beta[i]=beta.c+e2[i]
                                                           alpha[i]=alpha.c+e3[i]

8
epoh 发表于 2010-11-17 09:47:42
没人修改你的模型
底下程序是你自己定义的

#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]

除非你定义beta3[j] ~ dnorm(mean.beta3[j], prec.beta3)
                    beta1[j] ~ dnorm(mean.beta1[j], prec.beta1)
是错的

9
fangjie-fanglu 发表于 2010-11-17 15:42:08
问题已经解决,感谢epoh的耐心解答,再次表示感谢!

10
zhmz5625280 发表于 2014-3-11 09:58:35
您好,我现在描述模型遇到了些问题,想问一下当一个矩阵服从正态分布是,它的均值应该是矩阵,还是一个数啊?因为我看到您的模型中m[j,i] ~ dnorm(beta3[j], prec.m),m应该是二维的,但是beta是一维的,而下两行的y[j,i] ~ dnorm(mean.y[j,i], prec.y)中,y是二维的,它的均值mean.y[j.i]也应该是二维的,所以不明白呢……矩阵服从正态分布时,它的均值应该是几维的呢?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-12 18:57