簡體   English   中英

貝葉斯R編程

[英]Bayesian R Programming

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.95 thr所需的成功次數。 我正在嘗試使用帶if語句的for循環,但是當我運行它時,我沒有得到所需的值。 我知道我的價值應該是59,但似乎無法做到這一點。 我知道代碼看起來確實很亂,但這只是因為我已經玩了幾個小時了。 請任何幫助

這是清理后的代碼:

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,而不是相反。

可能存在優化的潛力,但是我對統計數據的理解不足以真正解決這一問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM