楼主: peggyalways
10333 17

[问答] winbugs出现trap 66 postcondition violated,问题出在哪里? [推广有奖]

  • 0关注
  • 0粉丝

高中生

2%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
96 点
帖子
4
精华
0
在线时间
37 小时
注册时间
2010-3-14
最后登录
2024-2-27

楼主
peggyalways 发表于 2011-11-30 14:45:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请高手帮忙看看下面程序哪里出现了问题,在运行时出现trap 66 postcondition violated完整的程序见附件,非常感谢!!!模型代码: cod.txt (85.82 KB)
model {
for (i in 1:N) {Y ~ dbern(p)
     logit(p) <- beta0+beta1*x1+beta2*x2+beta3*x3+beta4*x4+beta5*x5+beta6*x6+beta7*x7+beta8*x8+beta9*x9+beta10*x10+beta11*x11+ U +S
     eta <- S+U
     U ~ dnorm(0.0,prec.u)
                   }
S[1:N] ~ car.normal(adj[], weights[], num[], prec.s)
for(k in 1:sumNumNeigh) {weights[k] <- 1 }
#priors for regression
beta0 ~ dflat()
beta1 ~ dnorm(0.0,0.1)
beta2 ~ dnorm(0.0,0.1)
beta3 ~ dnorm(0.0,0.1)
beta4 ~ dnorm(0.0,0.1)
beta5 ~ dnorm(0.0,0.1)
beta6 ~ dnorm(0.0,0.1)
beta7 ~ dnorm(0.0,0.1)
beta8 ~ dnorm(0.0,0.1)
beta9 ~ dnorm(0.0,0.1)
beta10 ~ dnorm(0.0,0.1)
beta11 ~ dnorm(0.0,0.1)
prec.u ~ dgamma(0.02,0.02) #prior unstructured precision
prec.s ~ dgamma(0.02,0.02) #prior spatial precision
}



二维码

扫码加我 拉你入群

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

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

关键词:condition winbugs WINBUG dition BUGS 程序

沙发
peggyalways 发表于 2011-11-30 15:18:21

藤椅
henrykaka 发表于 2011-12-1 14:06:45
我也出现trap66的错误了,哪位高手给看看啊

板凳
epoh 发表于 2011-12-1 19:47:40
change the prior by increasing the prior precision
can solve the problem.(trap 66 postcondition violated)

不理解为何要底下这2句,

  eta <- S+U--没用上

  U ~ dnorm(0.0,prec.u)--为何要用 U,去掉就可执行
#########
model {
for (i in 1:N) {Y ~ dbern(p)

     logit(p) <- beta0+beta1*x1+beta2*x2+beta3*x3+beta4*x4+beta5*x5+beta6*x6+beta7*x7+beta8*x8+beta9*x9+beta10*x10+beta11*x11+ S
        #  eta <- S+U
        #  U ~ dnorm(0.0,prec.u)
                   }
S[1:N] ~ car.normal(adj[], weights[], num[], prec.s)
for(k in 1:sumNumNeigh) {weights[k] <- 1 }
#priors for regression
beta0 ~ dflat()
beta1 ~ dnorm(0.0,1.0E-4)
beta2 ~ dnorm(0.0,1.0E-4)
beta3 ~ dnorm(0.0,1.0E-4)
beta4 ~ dnorm(0.0,1.0E-4)
beta5 ~ dnorm(0.0,1.0E-4)
beta6 ~ dnorm(0.0,1.0E-4)
beta7 ~ dnorm(0.0,1.0E-4)
beta8 ~ dnorm(0.0,1.0E-4)
beta9 ~ dnorm(0.0,1.0E-4)
beta10 ~ dnorm(0.0,1.0E-4)
beta11 ~ dnorm(0.0,1.0E-4)
prec.u ~ dgamma(0.5,0.05) #prior unstructured precision
prec.s ~ dgamma(0.5,0.05) #prior spatial precision
}

报纸
zhangtao 发表于 2011-12-2 09:45:36
epoh 发表于 2011-12-1 19:47
change the prior by increasing the prior precision
can solve the problem.(trap 66 postcondition vio ...
model {
for (i in 1:N) {Y ~ dbern(p)
     logit(p) <- beta0+beta1*x1+beta2*x2+beta3*x3+beta4*x4+beta5*x5+beta6*x6+beta7*x7+beta8*x8+beta9*x9+beta10*x10+beta11*x11+ U +S
     #eta <- S+U
     U ~ dnorm(0.0,prec.u)
                   }
S[1:N] ~ car.normal(adj[], weights[], num[], prec.s)
for(k in 1:sumNumNeigh) {weights[k] <- 1 }
#priors for regression
beta0 ~ dflat()
beta1 ~ dnorm(0.0,0.1)
beta2 ~ dnorm(0.0,0.1)
beta3 ~ dnorm(0.0,0.1)
beta4 ~ dnorm(0.0,0.1)
beta5 ~ dnorm(0.0,0.1)
beta6 ~ dnorm(0.0,0.1)
beta7 ~ dnorm(0.0,0.1)
beta8 ~ dnorm(0.0,0.1)
beta9 ~ dnorm(0.0,0.1)
beta10 ~ dnorm(0.0,0.1)
beta11 ~ dnorm(0.0,0.1)
prec.u ~ dgamma(0.02,0.02) #prior unstructured precision
prec.s ~ dgamma(0.02,0.02) #prior spatial precision
}
epoh老师,您好!
     我觉得这个eta, u and s应该是有用的,没有看到原文章,
不能确定,但是从我看的相关文献来看,这个eta,u and s的设定
应该是必不可少的。
根据您的意见,就是注释了u and s, eta,程序也无法出结果,
结果是no monitor set。
我用多种方法进行修改,还是无法出结果。
TRAP 66  (postcondition violated)

UpdaterRejection.Updater.MCMC   [000005B5H]
        .deriv        REAL        -1.014142135623731
        .e        REAL        0.0
        .f        UpdaterRejection.Factory        [01352A70H]
        .i        INTEGER        0
        .k        INTEGER        0
        .lambdaL        REAL        5.254810133233113E-308
        .lambdaR        REAL        0.9860550753913473
        .left        REAL        1.424162706015637E-306
        .leftStar        REAL        5.257051011885653E-308
        .linear        REAL        0.0
        .logFleft        REAL        0.0
        .logFmode        REAL        -1.540743955509789E-37
        .logFright        REAL        -inf
        .logQ        REAL        0.0
        .mode        REAL        5.551115123125783E-17
        .mu        REAL        0.0
        .oldValue        REAL        1.0
        .overRelax        BOOLEAN        FALSE
        .pL        REAL        5.25983340698144E-308
        .pM        REAL        5.254672730896907E-308
        .pR        REAL        2.077575945862661E+175
        .prec        REAL        -1.0E-4
        .prior        GraphStochastic.Node        [01205880H]
        .rand        REAL        1.602184914048457E-306

数学好就是要天天学

地板
zhangtao 发表于 2011-12-2 09:50:23
Bugs users,

Why might I be getting "trap 66 postcondition violated" in a
random-effects logit? I don't get it until 30K-40K total
iterations (whether one chain at 30K or 35K, or 4 chains at
10K) after about 22 hours on a PII-400 machine running NT.

Might this just be some kind of results storage problem?
The model is generating 7 individual (level 1) coefficients
for each of 4230 cases, so it's quite big.

Thanks for any help

Fred

-----------------------------------------
Fred Cutler

Social Sciences and Humanities Research Council of Canada
Post-Doctoral Fellow
Department of Political Science
University of British Columbia
and
Research Affiliate
Institute for the Humanities
University of Manitoba

(204) 474-9063
[log in to unmask]
home.cc.umanitoba.ca/~cutlerfe
数学好就是要天天学

7
zhangtao 发表于 2011-12-2 09:50:58
数学好就是要天天学

8
epoh 发表于 2011-12-2 15:52:46
zhangtao 发表于 2011-12-2 09:50
https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=ind00&L=BUGS&F=&S=&P=174521
底下是我昨日稍試一下的結果:
example scotland就是加了b,沒加u
  log(mu) <- log(E) + alpha0 + alpha1 * X/10 + b
  # CAR prior distribution for random effects:
    b[1:N] ~ car.normal(adj[], weights[], num[], tau)
如果要加u,可能要自行多試修改prior
#######################
Inference for Bugs model at "car.bug", fit using WinBUGS,
1 chains, each with 1000 iterations (first 500 discarded)
n.sims = 500 iterations saved
            mean     sd    2.5%     25%     50%     75%   97.5%
beta0      1.782  0.191   1.393   1.662   1.804   1.912   2.128
beta1     -0.191  0.070  -0.326  -0.236  -0.189  -0.139  -0.059
beta2      0.248  0.075   0.110   0.194   0.246   0.303   0.403
beta3      0.217  0.089   0.047   0.158   0.214   0.287   0.389
beta4      0.045  0.096  -0.136  -0.021   0.044   0.106   0.233
beta5     -0.287  0.112  -0.512  -0.362  -0.289  -0.215  -0.067
beta6     -0.199  0.126  -0.440  -0.285  -0.197  -0.110   0.025
beta7     -0.050  0.146  -0.336  -0.154  -0.053   0.052   0.224
beta8     -0.073  0.149  -0.362  -0.168  -0.072   0.036   0.213
beta9      0.362  0.165   0.034   0.262   0.359   0.472   0.675
beta10     0.154  0.167  -0.171   0.061   0.153   0.262   0.491
beta11    -0.446  0.191  -0.831  -0.570  -0.446  -0.319  -0.062
prec.s    10.853  8.021   3.519   5.727   7.275  12.262  33.848
deviance 556.036 13.821 529.200 546.900 555.850 566.900 582.205

DIC info (using the rule, pD = Dbar-Dhat)
pD = 55.8 and DIC = 611.8
DIC is an estimate of expected predictive error (lower deviance is better).

9
peggyalways 发表于 2011-12-2 15:56:34
epoh 发表于 2011-12-1 19:47
change the prior by increasing the prior precision
can solve the problem.(trap 66 postcondition vio ...
谢谢您~
我按照您给出的代码还是出错,prec。u是得定义的,因为那个在变量U里面,我改动prec的值能跑到3000次,但是不收敛,
不知道这种情况您知道怎么回事吗?

10
epoh 发表于 2011-12-2 18:42:52
peggyalways 发表于 2011-12-2 15:56
谢谢您~
我按照您给出的代码还是出错,prec。u是得定义的,因为那个在变量U里面,我改动prec的值能跑到 ...
程序已经由不能执行
到能执行3000次
显示prior的设置很重要
接着下来你可能要
花点时间自行分别试试
不同的parameter要有不同的prior
而且是分批完成
不要一次抓足11个parameters

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-24 17:51