首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >贝叶斯R规划

贝叶斯R规划
EN

Stack Overflow用户
提问于 2013-06-25 20:03:48
回答 1查看 117关注 0票数 0
代码语言:javascript
运行
复制
binomial <- function(nmax = 100,        
   thr = 0.95,                               
   alpha = 1,
   beta = 1,
   p_true = 0.5,
   p_0 = 0.5){

   for(j in seq.int(nmax, 0)){
      if(pbeta(q = p_0, shape1 = alpha + j, shape2 = beta + nmax - j, lower.tail = FALSE) < thr){
         targetatnmax <- j + 1
    } else {
    print(

         break
      }
   }
result <- list(Success = Success, targeratnmax = targetatnmax)
return(result)
}
res = binomial(nmax,thr,alpha,beta,p_true,p_0)
res

在我的程序中,我试图找到超过0.95thr所需的成功次数。我尝试在if else语句中使用for循环,但是当我运行它时,我得不到所需的值。我知道我的价值应该是59,但我似乎不能得到这个。我知道代码看起来真的很混乱,但这只是因为我已经玩了几个小时了。请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2013-06-25 20:18:51

以下是清理后的代码:

代码语言:javascript
运行
复制
binomial <- function(nmax = 100,        
                     thr = 0.95,                               
                     alpha = 1,
                     beta = 1,
                     p_true = 0.5,
                     p_0 = 0.5){
  targetatnmax <- 0

  for(j in seq.int(0,nmax)){
    if(pbeta(q = p_0, shape1 = alpha + j, shape2 = beta + nmax - j, lower.tail = FALSE) < thr){
      targetatnmax <- j + 1
    } else {      
        break
    }
  }
  result <- list(targeratnmax = targetatnmax)
  return(result)
}
res = binomial()
res

#$targeratnmax
#[1] 59

主要问题(除了语法错误和不存在的对象)是您的循环从nmax运行到0,而不是从另一个方向运行。

可能有优化的潜力,但我对统计数据的理解还不够好,无法真正解决这个问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17296840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档