2

我无法信任 R 进行数值积分的能力。以下代码:

integrand = function(xval) {dnorm(x=xval,mean=0,sd=1)}
integrate(integrand,-Inf,Inf)

正确产生 1 的输出,绝对误差 < 9.4e-05。

但是,如果我只是将分布移动一个常数,

integrand2 = function(xval) {dnorm(x=xval,mean=370,sd=1)}
integrate(integrand2,-Inf,Inf)

它没有成功整合概率分布(即积分应该是一)。我得到 4.360019e-15 的答案,绝对误差 < 7.1e-15。

我知道数值积分程序很难找到分布的驼峰,但是我如何判断 R 的输出是否可靠?

4

1 回答 1

1

谢谢你的问题,亚当。在阅读此页面之前,我不知道这个问题。我会对这个问题提出一个建议,尽管它不是一个完美的答案。集成函数实际上返回一个列表,第 3 项 $subdivisions 可用于衡量可靠性。

> integrate(integrand,-Inf,Inf)$subdivisions
[1] 3
> integrate(integrand2,-Inf,Inf)$subdivisions
[1] 1

我说“不完美”,因为值 3 也很小。因此,这种方法高估了不可靠性。也许,它可以用来显示一些警告。详细信息可在我的博客上找到。

于 2013-04-23T13:55:33.147 回答