楼主: jsjyyjc
2246 2

[问答] 求大神指点,MCMC 出现error:in if (runif(1) < probab) { : [推广有奖]

  • 3关注
  • 0粉丝

高中生

22%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
814 点
帖子
15
精华
0
在线时间
18 小时
注册时间
2016-3-5
最后登录
2017-10-21

楼主
jsjyyjc 发表于 2016-5-31 20:37:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
LZ 是个R新手,做什么都是靠查...作业要求用MCMC 来预测参数的值区间,然后出现了这样的错误:

  1. Error in if (runif(1) < probab) { : missing value where TRUE/FALSE needed
  2. burnIn = 5000
  3. acceptance = 1-mean(duplicated(chain[-(1:burnIn),]))
  4. Error in duplicated(chain[-(1:burnIn), ]) : object 'chain' not found
复制代码
LZ整个的代码是这样子的,
  1. setwd("C:/Users/jsjyyjc/Desktop/")
  2. ut<-read.table("1.txt")
  3. xvec<-ut

  4. fn<-function(theta){sum(xvec/exp(2*(theta[1]+theta[2]*xvec)/(1+theta[2]-theta[3])))}


  5. nlm(fn,theta<-c(0,0,0),hessian=TRUE)


  6. proposalfunction<-function(theta){
  7. + return(rnorm(3,mean=theta,sd=c(0.1,0.5,0.3)))
  8. + }
  9. prior<-function(theta){
  10. + m=theta[1]
  11. + n=theta[2]
  12. + l=theta[3]
  13. + mprior<-dnorm(m)
  14. + nprior<-dnorm(n)
  15. + lprior<-dnorm(l)
  16. + return(mprior+nprior+lprior)
  17. + }


  18. posterior<-function(theta){
  19. + return(fn(theta)+prior(theta))
  20. + }
  21. run_metropolis_MCMC <- function(startvalue, iterations){
  22. +     chain = array(dim = c(iterations+1,3))
  23. +     chain[1,] = startvalue
  24. +     for (i in 1:iterations){
  25. +         proposal = proposalfunction(chain[i,])
  26. +         
  27. +         probab = exp(posterior(proposal) - posterior(chain[i,]))
  28. +         if (runif(1) < probab){
  29. +             chain[i+1,] = proposal
  30. +         }else{
  31. +             chain[i+1,] = chain[i,]
  32. +         }
  33. +     }
  34. +     return(chain)
  35. + }
  36. startvalue=c(4,0,10)
  37. chain = run_metropolis_MCMC(startvalue, 10000)
  38. burnIn = 5000
  39. acceptance = 1-mean(duplicated(chain[-(1:burnIn),]))
复制代码

求各位大神指点问题出现在什么地方!谢谢,拜谢,跪谢!给予帮助的人最帅/最美!
二维码

扫码加我 拉你入群

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

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

关键词:Error mcmc Rob err CMC error

沙发
jsjyyjc 发表于 2016-5-31 22:13:21
现在出现新的问题了!之前的问题在初值的设定上,我把它改成 startvalue=result$estimate 跑了下5000结果还是“Error in if (runif(1) < probab) { : missing value where TRUE/FALSE needed”; 但神奇的是我在连续试了4000,2000等等之后再跑5000他又能跑出来了,求大神指点这个错在哪里了!

藤椅
jsjyyjc 发表于 2016-5-31 22:15:06
这是跑的结果截图...感觉特别神奇的不知道错误在哪里....求大神们指点!

捕获1.PNG (9.7 KB)

捕获1.PNG

捕获.PNG (7.77 KB)

捕获.PNG

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

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