【发布时间】:2015-12-09 11:13:37
【问题描述】:
我正在使用 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)
我试图用debug查看integrate函数,但它是Ccode的包装。我也不是正交技术的专家。我看到了这个SO post,但无法从中得到任何东西。
谢谢
【问题讨论】:
-
来自
?integrate:Like all numerical integration routines, these evaluate the function on a finite set of points. If the function is approximately constant (in particular, zero) over nearly all its range it is possible that the result and error estimate may be seriously wrong。你的函数基本上总是0。 -
@nicola 那么怎么做才能不返回错误呢?我该如何解决这个问题?
-
@Plinth 您必须缩小函数不为零的值周围的区间,请参阅下面 nicola 的回答