統合によって定義される分布の尤度関数を作成しようとしています。integrate() 関数を使用していますが、関数の残りの部分でこれを使用しようとすると、エラーが発生します。
「B(alpha + i, beta + 6 - i)/B(alpha, beta) のエラー: 二項演算子への非数値引数」
積分の値は、たとえば、「絶対誤差 < 0.00078 で 9.501501」です。trunc() を使用しようとしましたが、これも役に立ちません。私はRに比較的慣れていないので、これに対する既知の解決策はありますか? どんな助けでも大歓迎です!
B <- function(a,b){
integrand <- function(t){(t^(a-1))*((1-t)^(b-1))}
integrate(integrand,lower=0,upper=1)
}
betalik <- function(alpha,beta){
likelihood <- 0 Z <- c(37,22,25,29,34,49)
for(i in 1:6)
likelihood <- likelihood +
Z[i]*log((B(alpha+i,beta+6-i))/B(alpha,beta))
return(likelihood)
}
ドリアン、