我一直在运行一段使用 gamlss
qEGB2()
函数的代码。但是,它一直在产生以下警告消息:
In qf(p, 2 * nu, 2 * tau) : full precision may not have been achieved in 'qbeta'
当单步进入qf函数时(qEGB2函数内),源码如下:
function (p, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)
{
if (missing(ncp))
.Call(C_qf, p, df1, df2, lower.tail, log.p)
else .Call(C_qnf, p, df1, df2, ncp, lower.tail, log.p)
}
我想查看 qf 函数的源代码,以了解 qbeta 的使用方式以及为什么它没有达到完全精度。如果这是由于多次迭代造成的,我正在考虑手动复制代码,看看增加迭代是否可以实现收敛。
当尝试进入 C_qf 函数时,我得到以下输出:
list("qf", <pointer: 0x0000024bef45d710>, list("stats", "C:/Program Files/R/R-4.0.5/library/stats/libs/x64/stats.dll",
FALSE, <pointer: 0x0000000071100000>, <pointer: 0x0000024bef4041e0>),
5L)
我按照文件路径打开(但未编辑).dll 文件,但这只会生成一个充满符号的文档,我认为这些符号不适合人眼!
还有其他方法可以访问 C_qf 函数的源代码吗?
非常感谢任何帮助!
功能
qf
和qbeta
的关系如下:
qf(0.8, df1 = 3, df2 = 5)
# 2.253017
u <- qbeta(0.8, shape1 = 3/2, shape2 = 5/2)
5/3 * u / (1 - u)
# 2.253017
您收到的警告是由于
df1
或 df2
的值太大。