Python 如何从scipy库中卷积两个分布

Python 如何从scipy库中卷积两个分布,python,statistics,scipy,Python,Statistics,Scipy,我已经看到(通过研究)通过numpy进行卷积,但是如果我希望卷积scipy库中现成的两个标准分布(特别是带均匀分布的正态分布),有没有一种直接的方法,而不是通过numpy和卷积创建两个数组?一般来说,计算分布的卷积需要求解积分。作为我论文[1]工作的一部分,我研究了这个问题,并编写了一些Java(相当独特)来执行这些操作。基本上,我的方法是制作一个有已知结果的分布目录,如果没有已知结果,则采用数值方法(通过离散化和FFT进行卷积) 对于高斯分布和均匀分布的组合,当均匀分布足够宽时,结果就像一个高

我已经看到(通过研究)通过numpy进行卷积,但是如果我希望卷积scipy库中现成的两个标准分布(特别是带均匀分布的正态分布),有没有一种直接的方法,而不是通过numpy和卷积创建两个数组?

一般来说,计算分布的卷积需要求解积分。作为我论文[1]工作的一部分,我研究了这个问题,并编写了一些Java(相当独特)来执行这些操作。基本上,我的方法是制作一个有已知结果的分布目录,如果没有已知结果,则采用数值方法(通过离散化和FFT进行卷积)

对于高斯分布和均匀分布的组合,当均匀分布足够宽时,结果就像一个高斯凹凸分成两部分并粘贴到均匀分布的两端,否则它看起来就像一个凹凸。如果你感兴趣的话,我可以试着找到这个公式

您可以尝试通过符号计算系统(如Maxima)来计算积分。[2] 例如,Maxima说单位高斯与单位均匀的卷积是:

-(erf((sqrt(2)*s-sqrt(2))/2)-erf(s/sqrt(2)))/2
[1] (特别是第C.3.17节)


[2]

对于一般的均匀分布(密度在a和b之间等于1/(b-a),b>a,否则为0),Maxima说单位高斯的卷积是:
-(erf((sqrt(2)*x-sqrt(2)*b)/2)-erf((x-a)/sqrt(2))/(2*b-2*a)
绘制这样的曲线很有趣,正如人们所料,它看起来像一辆柔软的棚车。