解决WinBUGS14 error:cannot bracket slice for node gamma[3]

一、情况说明

这次使用WinBUGS14编写具有四个类别的因变量的有序logit模型,所以需要三个切点,即代码中的gamma1、gamma2、gamma3。

二、错误与解决

如图1所示,这里的错误原因是对gamma2赋了0值,而gamma2应该大于gamma1且小于gamma3,所以在迭代时报错:error:cannot bracket slice for node gamma[3]。

在这里插入图片描述

图1

因此对gamma2赋了跟gamma3一样的分布,如图2所示。

图2

图2

改变了gamma2赋值之后发现问题仍然存在,最后发现对变量赋初值时,gamma2的初值也应该比gamma3小,原来初值都为1所以依旧报错,修改后如图3所示。

在这里插入图片描述

图3

到此问题解决!

以下是完整代码:

# Ordered logit model 

model {

# Likelihood 
for (i in 1:4000) {
  seve[i] ~ dcat(p[i,])
p[i,1] <- max(min(cdf[i,1],1),0)
p[i,2] <- max(min(cdf[i,2] - cdf[i,1], 1), 0)
p[i,3] <- max(min(cdf[i,3] - cdf[i,2], 1), 0)
p[i,4] <- max(min(1 - cdf[i,3], 1), 0)
}

# define linear predictor

for (i in 1:4000) {
  Z[i] <- beta[1]
		   + beta[2]*age_small[i]
		   + beta[3]*age_middle[i]
		
		   + beta[4]*driver_gender[i]
		   + beta[5]*Drunken_driving[i]
     + beta[6]*Responsible_party[i]
     + beta[7]*Safety_equipment[i]
     + beta[8]*auto_age[i]
     + beta[9]*car[i]
     + beta[10]*Van[i]
     + beta[11]*Light_truck[i]

     + beta[12]*low_speed[i]
     + beta[13]*medium_speed[i]

     + beta[14]*not_con[i]
     + beta[15]*around_con[i]

     + beta[16]*Accident_in_the_road[i]
     + beta[17]*Rear_end[i]
     + beta[18]*Frontal[i]



for (j in 1:3) {
  logit(cdf[i,j]) <- gamma[j] - Z[i]  
}} 
		
# Priors for coefficients	
for (k in 1:18) {
beta[k] ~ dnorm(0.0,1.0E-04)}

# Thresholds
gamma[1]<- 0.0
gamma[2]~ dnorm(0,0.001)I(0,)
gamma[3]~ dnorm(0,0.001)I(0,)

}

# Initials
list(beta =c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
gamma=c(NA,0.3,1))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值