![]() |
1
32
好吧,你似乎对一些事情很困惑。让我们从一开始:您提到了一个“多维函数”,然后继续讨论通常的单变量高斯曲线。这是 不 多维函数:当你整合它时,你只整合一个变量(x)。区别很重要,因为 是 一个被称为“多元高斯分布”的怪物,它是一个真正的多维函数,如果被整合,需要整合两个或更多的变量(它使用了我前面提到的昂贵的蒙特卡罗技术)。但是你似乎只是在谈论规则的单变量高斯,它更容易处理、整合和所有这些。
一变量高斯分布有两个参数,
(读作“正态分布
现在,对于一个数学事实:可以证明,所有的高斯曲线都有相同的形状,只是稍微移动了一点。所以我们可以合作
如果
同样,如果
看一看 the Wikipedia article on the normal CDF 如果你想要更多的细节或者这个事实的证据。
好吧,这应该是足够的背景解释。回到你的(编辑过的)帖子。你说“scipy.special中的erf(z)需要我精确定义t最初是什么”。我不知道你说的这个是什么意思;在哪里?
您的python代码还可以,但我更喜欢闭包而不是lambda:
使用闭包可以预计算常量
我从来没有使用过常量pi和e的麻木版本;我一直坚持使用简单的旧数学模块的版本。我不知道你为什么会喜欢这两个。
我不知道你要干什么
希望这已经解开了一些困惑,并解释了为什么错误函数是解决问题的正确答案,以及如果你好奇的话如何自己去做。如果我的解释不清楚,我建议你先快速浏览一下维基百科;如果你还有问题,不要犹豫。 |
![]() |
2
12
scipy附带“误差函数”,即高斯积分:
|
![]() |
3
3
我假设你在处理多变量高斯函数;如果是这样,那么scipy已经有了你想要的函数:它被称为mvndist(“多变量正态分布”)。scipy文档和以前一样糟糕,所以我甚至找不到函数的隐藏位置,但是 it's in there somewhere . 文档很容易是scipy最糟糕的部分,让我在过去一直感到沮丧。 单变量Gaussian只使用好的旧错误函数,其中有许多实现可用。 对于一般的攻击问题,是的,正如詹姆斯·汤普森所提到的,您只需要编写自己的高斯分布函数并将其馈送给Quad()。如果你能避免广义积分,那么这样做是一个好主意——特定函数的专门积分技术(如mvndist使用)将比标准的蒙特卡洛多维积分快得多,这对于高精度来说非常慢。 |
![]() |
4
3
高斯分布也称为正态分布。scipy norm模块中的cdf函数执行您想要的操作。
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html#scipy.stats.norm |
![]() |
5
2
为什么不总是把你的积分从-无穷大到+无穷大,这样你就总能知道答案?(开玩笑!) 我的猜测是,scipy中还没有一个封闭的高斯函数的唯一原因是它是一个微不足道的函数。关于编写自己的函数并将其传递给Quad以集成声音的建议非常好。它使用公认的scipy工具来完成这项工作,这对您来说是最简单的代码工作,而且它对于其他人来说是非常可读的,即使他们从未见过scipy。 你所说的固定宽度积分器是什么意思?你的意思是使用不同于Quadpack使用的算法吗? 编辑:为了完整性,下面是我将尝试的高斯函数,其平均值为0,标准差为1,从0到+无穷大:
这有点难看,因为高斯函数有点长,但写起来仍然很简单。 |
![]() |
azal · 条件分布的均值和协方差 7 年前 |
|
Jose Cortés · 用Python绘制垂直正态分布 7 年前 |
|
Kike · 用曲线拟合限制高斯拟合 7 年前 |
![]() |
DottedGlass · 图像直方图的高斯混合模型 7 年前 |
![]() |
KansaiRobot · 高斯滤波器实现 8 年前 |