【发布时间】:2015-08-06 10:59:39
【问题描述】:
我对 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 的单元格,K32 beta 和 L32 是 N 的单元格。生成的单元格的实现如下:
=EXP(GAMMALN(J32)+GAMMALN(L32+K32)-GAMMALN(J32+K32+L32)-(GAMMALN(J32)+GAMMALN(K32)-GAMMALN(J32+K32)))
所以这似乎给出了正确的答案,因为该函数仅针对大于零的 alpha 和 beta 以及大于或等于零的 n 定义。因此我想知道这里发生了什么?我也尝试使用 Rmpf 包来提高数值精度,但这似乎没有任何作用。
谢谢
【问题讨论】:
-
这个问题没有任何意义。你可能想改写它。
标签: r gamma-function