r - 积分:积分可能发散

标签 r integrate

我正在使用 integrate 将一些集成到循环中我想出了一个我无法理解的错误,也无法摆脱。这是我可以提取的 MWE:

u_min = 0.06911363
u_max = 1.011011 
m = 0.06990648
s = 0.001092265
integrate(f = function(v){pnorm(v, mean = m, sd = s, lower.tail =  FALSE)}, u_min, u_max)

这将返回一个错误“积分可能发散”,这显然是错误的。我尝试稍微修改参数并使其正常工作,例如:
u_min <- 0.07
u_max <- 1.1
m <- 0.0699
s <- 0.00109
integrate(f = function(v){pnorm(v, mean = m, sd = s, lower.tail =  FALSE)}, u_min, u_max)

我试图查看 integrate功能与 debug但它是 C 的包装器代码。此外,我不是正交技术的专家。我看到这个 SO post但不能从中得到任何东西。

谢谢

最佳答案

默认公差为 .Machine$double.eps^0.25 (= 0.0001220703) 需要降低。例如,试试这个:

f <- function(v) pnorm(v, mean = m, sd = s, lower.tail =  FALSE)
integrate(f, u_min, u_max, rel.tol = 1e-15)

## 0.0009421867 with absolute error < 1.1e-17

关于r - 积分:积分可能发散,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34177392/

相关文章:

r - 非有限有限差分值,很多数据经过指数后变成inf和NA

r - R中的分数响应回归

javascript - 在同一个 php 文件中使用 js 加载

matlab - 如何实现分段数值积分?

python - 在 scipy 中选择积分变量

r - 将字符串向量连接成一个字符串 - 对于 df 中的每一行

r - 使用 dplyr 根据列值创建组 (group_by)

string - R从半标准字符串中提取时间分量

r - 如何在R中定义积分在一点的函数值?

matlab - 定积分Matlab