Home Articles

Python,通过积分计算高斯区域

Asked
Viewed 1605 times
1

我有一个函数,一个高斯函数,我已经将它与数据文件中的数据相匹配 . 我现在需要集成高斯函数来给出它下面的区域 .

这是我的高斯函数

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))))

1 Answer

  • 0

    你在那里的答案是不确定的积分 . 如果您想要两个x限制之间的数字答案,您可以在两个点评估该函数并获取差异 .

    您的高斯函数是在所有实数(-∞,∞)上定义的,但在实践中,您只对中间部分感兴趣,因为尾部非常接近0.要获得总面积的数值估计,您可以像说:在高斯峰的两侧适当接近0的两个点评估误差函数并取差 .

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

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

Related