R / C如何计算二项式分布?

时间:2019-06-06 03:55:35

标签: c++ r

R中,通过称为C_pbinom的基础C / C ++函数来调用二项式分布的累积分布函数。我正在尝试找到该算法的基础代码,以便找出该函数用于计算累积分布函数的算法。不幸的是,我没有成功找到底层代码,也没有找到有关所使用算法的任何信息。

我的问题:如何找到函数C_pbinom的基础C / C ++代码。另外,是否有可用的信息源显示此功能使用的算法?


我到目前为止所做的事情:在pbinom中调用R提供了以下详细信息:

function (q, size, prob, lower.tail = TRUE, log.p = FALSE) 
.Call(C_pbinom, q, size, prob, lower.tail, log.p)
<bytecode: 0x000000000948c5a0>
<environment: namespace:stats>

我已经在NAMESPACE库中找到并打开了基础stats文件。该文件列出了各种功能,包括pbinom函数,但没有提供C_pbinom函数的代码,也没有提供指向该函数的任何指针。我还阅读了R中有关查找源代码的related answer和有关“编译源代码”的文章here,但都没有足够的帮助来查找代码。此时,我已经死了。

1 个答案:

答案 0 :(得分:4)

我转到Github镜像获取R源代码searched for pbinom,然后过滤到C:这使我here。函数的作用很简单

pbeta(p, x + 1, n - x, !lower_tail, log_p)

这正在调用不完整的beta函数(= Beta发行版的CDF):这意味着您需要依次look up the pbeta function in the codehere,它表示代码是“ TOMS708的包装器” ,它在src/nmath/toms708.c中,并进行了更详细的描述here(谷歌“ TOMS 708”)……原始代码here

完整参考文献为here:Didonato和Morris,Jr., 《 ACM数学软件交易(TOMS)》,第18卷第3期,1992年9月,第360-373页。