gpt4 book ai didi

r - 集成()给出了完全错误的数字

转载 作者:行者123 更新时间:2023-12-03 14:46:10 28 4
gpt4 key购买 nike

集成()给出了非常错误的答案:

integrate(function (x) dnorm(x, -5, 0.07), -Inf, Inf, subdivisions = 10000L)
# 2.127372e-23 with absolute error < 3.8e-23

返回值显然应该是 1(正常分布集成为 1),但是集成()返回的数字小得离谱,错误报告,并且没有警告......

有任何想法吗?

这似乎是默认的 integrate()是可怕的 buggy ......我只是偶然发现了这个!有没有 可靠 R包来计算数值积分?

编辑:我试过包 pracma我看到了同样的问题! :
require(pracma)
integral(function (x) dnorm(x, -5, 0.07), -Inf, Inf)
# For infinite domains Gauss integration is applied!
# [1] 0

编辑:嗯...深入挖掘,似乎他很难找到数值 > 0 的函数的非常窄的域。当我将限制设置为某些(非常接近 0, 1)分位数时,它开始工作:
integral(function (x) dnorm(x, -5, 0.07), qnorm(1e-10, -5, 0.07), qnorm(1 - 1e-10, -5, 0.07))

但无论如何,这是非常可怕的问题……想知道是否有任何补救措施。

最佳答案

来自在线文档:“像所有数值积分程序一样,这些程序在有限的点集上评估函数。如果函数在其几乎所有范围内都近似恒定(特别是零),则结果和误差估计可能会大错特错。”

我认为这意味着“警告清空者”。我注意到在您的示例中,绝对误差大于积分值。鉴于您知道所有 x 的 f(x) > 0,至少它让您有机会发现某些地方出了问题。捕获机会取决于你。

integrate( function(x) dnorm(x, -5, 0.07), -20, 10, subdivisions=1000L) 


1 with absolute error < 9.8e-07

在线文档中的警告对我说,鉴于您对错误的明显定义,您的问题的答案是“不,没有可靠的数值积分方法。不是在 R 或任何其他语言中”。不应盲目使用数值积分技术。用户需要检查他们的输入是否合理,输出是否合理。仅仅因为计算机给了你答案而相信答案是不好的。

另见 this post .

关于r - 集成()给出了完全错误的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62122505/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com