【问题标题】:Python, calculating the area inder a gaussian by integrationPython,通过积分计算高斯下的面积
【发布时间】:2013-11-19 14:16:42
【问题描述】:

我有一个函数,一个高斯函数,我已经将它拟合到来自数据文件的数据中。我现在需要整合高斯函数来给出它下面的区域。

这是我的高斯函数

def I(theta,max_x,max_y,sigma):
    return (max_y/(sigma*(math.sqrt(2*pi))))*np.exp(-((theta-max_x)**2)/(2*sigma**2))

与一般公式比较

N(x | mu, sigma, n) := (n/(sigma*sqrt(2*pi))) * exp((-(x-mu)^2)/(2*sigma^2) )

即 n = max_y , MU = max_x , x = theta

这是另一个页面上给出的内容:

如果 Phi(z) = 积分(N(x|0,1,1), -inf, z);也就是说,Phi(z) 是标准正态分布从 >- 无穷大到 z 的积分,那么根据误差函数的定义,它是真的 Phi(z) = 0.5 + 0.5 * erf(z / sqrt(2))。

同样,如果 Phi(z | mu, sigma, n) = 积分( N(x|sigma, mu, n), -inf, z);也就是说,Phi(z | mu, sigma, n) 是给定参数 mu、sigma 和 n 从负无穷向上的正态分布的积分 到z,那么根据误差函数的定义是真的

Phi(z | mu, sigma, n) = (n/2) * (1 + erf((x - mu) / (sigma * sqrt(2))))。

我不确定这有什么帮助??我只想将我的函数整合到曲线下的绘制值上。是不是说这是积分:

Phi(z | mu, sigma, n) = (n/2) * (1 + erf((x - mu) / (sigma * sqrt(2))))

【问题讨论】:

  • 目前还不清楚您要的是什么。如果您想要高斯下的区域(即|R 上的积分),则为Phi(inf)。由于erf(inf) = 1),结果为(n/2) * sqrt(2) / sigma,在一维情况下为1 / (sigma sqrt(2))。要评估不定积分,您可以使用 math 模块中的 erf 实现。
  • 谢谢,仍然不确定要使用的正确代码

标签: python gaussian


【解决方案1】:

你的答案是不定积分。如果您想要两个 x 限制之间的数值答案,您可以在两个点处评估该函数并取差。

您的高斯函数是在所有实数 (−∞, +∞) 上定义的,但实际上,您只对中间部分感兴趣,因为尾部 非常 接近 0。要获得您可以按照您所说的那样对总面积进行数值估计:在高斯峰的每一侧适当接近 0 的两个点处评估误差函数并取差。

如果Phi(z | mu, sigma, n) 返回一个你可以做的函数:

integral = Phi(z | mu, sigma, n)
area = integral(X_HIGH) - integral(X_LOW)

【讨论】:

  • 我可以使用曲线的 2 个最小值吗?即曲线从哪里开始上升,又从哪里回落?我将如何更改上面的代码来合并它?感谢您的回复!
  • 高斯没有最小值。高斯下的面积仅取决于 sigma 和您的前置因子。
  • 也许 minimum 不是正确的术语,我的意思是它在哪里平坦,在它上升之前以及它在它下降之后又回到平坦的地方。会有两个 x 值。
  • @user3009100 它从来都不是真正平坦的,它只是趋于0,越来越平坦。是的,您可以使用这些值。电影人指的是高斯面积有一个确切的值,我不知道在我的头顶!
  • 再次感谢。所以请你给我一个代码示例,我可以用来评估两点之间的函数。
猜你喜欢
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 2014-12-16
  • 2011-08-12
  • 2021-10-24
相关资源
最近更新 更多