我正在使用循环进行一些集成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)
Run Code Online (Sandbox Code Playgroud)
这会返回一个错误“积分可能发散”,这显然是错误的。我尝试稍微修改一下参数并使其正常工作,例如:
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)
Run Code Online (Sandbox Code Playgroud)
我试图查看该integrate函数,debug但它是代码的包装C。而且我也不是正交技术的专家。我看到了这篇帖子,但无法从中得到任何东西。
谢谢
.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
Run Code Online (Sandbox Code Playgroud)