我对 R 中的以下函数有疑问:
test <- function(alpha, beta, n){
result <- exp(lgamma(alpha) + lgamma(n + beta) - lgamma(alpha + beta + n) - (lgamma(alpha) + lgamma(beta) - lgamma(alpha + beta)))
return(result)
}
现在,如果您插入以下值:
betabinom(-0.03292708, -0.3336882, 10)
它应该失败并导致NaN
. 那是因为如果我们在 Excel 中实现精确的函数,我们会得到一个不是数字的结果。Excel 中的实现很简单,因为 J32 是alpha
、K32beta
和 L32的单元格N
。生成的单元格的实现如下所示:
=EXP(GAMMALN(J32)+GAMMALN(L32+K32)-GAMMALN(J32+K32+L32)-(GAMMALN(J32)+GAMMALN(K32)-GAMMALN(J32+K32)))
所以这似乎给出了正确的答案,因为该函数仅针对大于零的 alpha 和 beta 以及大于或等于零的 n 定义。因此我想知道这里发生了什么?我还尝试了 Rmpf 包来提高数值精度,但这似乎没有任何作用。
谢谢