C_qf 函数 - 基础统计包

问题描述 投票:0回答:1

我一直在运行一段使用 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 函数的源代码吗?

非常感谢任何帮助!

r statistics distribution
1个回答
0
投票

功能

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
的值太大。

© www.soinside.com 2019 - 2024. All rights reserved.