手計算でチェックしたかったので過程をメモ。
以下の二つの関数を畳み込み積分した場合、


Exponentially modified Gaussian distribution
にあるようにex-Gaussian distributionと呼ばれる分布が出来る。

ここでerfcはガウスの相補誤差関数(complementary error function)で以下のように定義されている。erfはガウスの誤差関数。

Convolution of the normal and exponential probability density functions
以下計算、
![\displaystyle f(x)\ast g(x) = \int^{+\infty}_{-\infty} dx'f(x')g(x-x')\\[1.0ex] =\int^{+\infty}_{0} dx' \lambda \exp(-\lambda x') \frac{1}{\sqrt{2\pi}\sigma}\exp\left\{-\frac{(x-x'-\mu)^2}{2\sigma^2}\right\}\\[1.0ex] = \frac{\lambda}{\sqrt{2\pi}\sigma} \int^{+\infty}_{0} dx' \exp\left[-\frac{1}{2\sigma^2} \left\{x'^2+2x'(\mu-x+\lambda \sigma^2)+(x-\mu)^2 \right\} \right]\\[1.0ex] = \frac{\lambda}{\sqrt{2\pi}\sigma} \int^{+\infty}_{0} dx'\exp\left\{-\frac{1}{2\sigma^2}(x'-x+\mu+\lambda \sigma^2)^2 + \frac{1}{2}\lambda^2 \sigma^2 -\lambda x + \lambda \mu \right\}\\[1.0ex] = \frac{\lambda}{\sqrt{2\pi}\sigma} e^{\lambda \mu + \frac{1}{2}\lambda^2\sigma^2}e^{-\lambda x}\int^{+\infty}_{0} dx'\exp\left\{-\frac{1}{2\sigma^2}(x'-x+\mu+\lambda \sigma^2)^2 \right\} \displaystyle f(x)\ast g(x) = \int^{+\infty}_{-\infty} dx'f(x')g(x-x')\\[1.0ex] =\int^{+\infty}_{0} dx' \lambda \exp(-\lambda x') \frac{1}{\sqrt{2\pi}\sigma}\exp\left\{-\frac{(x-x'-\mu)^2}{2\sigma^2}\right\}\\[1.0ex] = \frac{\lambda}{\sqrt{2\pi}\sigma} \int^{+\infty}_{0} dx' \exp\left[-\frac{1}{2\sigma^2} \left\{x'^2+2x'(\mu-x+\lambda \sigma^2)+(x-\mu)^2 \right\} \right]\\[1.0ex] = \frac{\lambda}{\sqrt{2\pi}\sigma} \int^{+\infty}_{0} dx'\exp\left\{-\frac{1}{2\sigma^2}(x'-x+\mu+\lambda \sigma^2)^2 + \frac{1}{2}\lambda^2 \sigma^2 -\lambda x + \lambda \mu \right\}\\[1.0ex] = \frac{\lambda}{\sqrt{2\pi}\sigma} e^{\lambda \mu + \frac{1}{2}\lambda^2\sigma^2}e^{-\lambda x}\int^{+\infty}_{0} dx'\exp\left\{-\frac{1}{2\sigma^2}(x'-x+\mu+\lambda \sigma^2)^2 \right\}](http://s0.wp.com/latex.php?latex=++%5Cdisplaystyle+f%28x%29%5Cast+g%28x%29+%3D+%5Cint%5E%7B%2B%5Cinfty%7D_%7B-%5Cinfty%7D+dx%27f%28x%27%29g%28x-x%27%29%5C%5C%5B1.0ex%5D++%3D%5Cint%5E%7B%2B%5Cinfty%7D_%7B0%7D+dx%27+%5Clambda+%5Cexp%28-%5Clambda+x%27%29+%5Cfrac%7B1%7D%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%5Cexp%5Cleft%5C%7B-%5Cfrac%7B%28x-x%27-%5Cmu%29%5E2%7D%7B2%5Csigma%5E2%7D%5Cright%5C%7D%5C%5C%5B1.0ex%5D++%3D+%5Cfrac%7B%5Clambda%7D%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D+%5Cint%5E%7B%2B%5Cinfty%7D_%7B0%7D+dx%27+%5Cexp%5Cleft%5B-%5Cfrac%7B1%7D%7B2%5Csigma%5E2%7D+%5Cleft%5C%7Bx%27%5E2%2B2x%27%28%5Cmu-x%2B%5Clambda+%5Csigma%5E2%29%2B%28x-%5Cmu%29%5E2+%5Cright%5C%7D+%5Cright%5D%5C%5C%5B1.0ex%5D++%3D+%5Cfrac%7B%5Clambda%7D%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D+%5Cint%5E%7B%2B%5Cinfty%7D_%7B0%7D+dx%27%5Cexp%5Cleft%5C%7B-%5Cfrac%7B1%7D%7B2%5Csigma%5E2%7D%28x%27-x%2B%5Cmu%2B%5Clambda+%5Csigma%5E2%29%5E2+%2B+%5Cfrac%7B1%7D%7B2%7D%5Clambda%5E2+%5Csigma%5E2+-%5Clambda+x+%2B+%5Clambda+%5Cmu+%5Cright%5C%7D%5C%5C%5B1.0ex%5D++%3D+%5Cfrac%7B%5Clambda%7D%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D+e%5E%7B%5Clambda+%5Cmu+%2B+%5Cfrac%7B1%7D%7B2%7D%5Clambda%5E2%5Csigma%5E2%7De%5E%7B-%5Clambda+x%7D%5Cint%5E%7B%2B%5Cinfty%7D_%7B0%7D+dx%27%5Cexp%5Cleft%5C%7B-%5Cfrac%7B1%7D%7B2%5Csigma%5E2%7D%28x%27-x%2B%5Cmu%2B%5Clambda+%5Csigma%5E2%29%5E2+%5Cright%5C%7D++&bg=f1f1f1&fg=000000&s=1)
ここで、変数変換

とガウスの相補誤差関数の定義を使えば、
![\displaystyle f(x)\ast g(x) = \frac{\lambda}{\sqrt{\pi}} e^{\lambda \mu + \frac{1}{2}\lambda^2\sigma^2}e^{-\lambda x}\int^{+\infty}_{\frac{\mu+\lambda \sigma^2-x}{\sqrt{2}\sigma}} dz e^{-z^2}\\[1.0ex] = \frac{\lambda}{2}e^{\lambda \mu + \frac{1}{2}\lambda^2\sigma^2}e^{-\lambda x}\mbox{erfc}\left(\frac{\mu+\lambda \sigma^2 -x}{\sqrt{2}\sigma}\right)\\ \displaystyle f(x)\ast g(x) = \frac{\lambda}{\sqrt{\pi}} e^{\lambda \mu + \frac{1}{2}\lambda^2\sigma^2}e^{-\lambda x}\int^{+\infty}_{\frac{\mu+\lambda \sigma^2-x}{\sqrt{2}\sigma}} dz e^{-z^2}\\[1.0ex] = \frac{\lambda}{2}e^{\lambda \mu + \frac{1}{2}\lambda^2\sigma^2}e^{-\lambda x}\mbox{erfc}\left(\frac{\mu+\lambda \sigma^2 -x}{\sqrt{2}\sigma}\right)\\](http://s0.wp.com/latex.php?latex=++%5Cdisplaystyle+f%28x%29%5Cast+g%28x%29+%3D+%5Cfrac%7B%5Clambda%7D%7B%5Csqrt%7B%5Cpi%7D%7D+e%5E%7B%5Clambda+%5Cmu+%2B+%5Cfrac%7B1%7D%7B2%7D%5Clambda%5E2%5Csigma%5E2%7De%5E%7B-%5Clambda+x%7D%5Cint%5E%7B%2B%5Cinfty%7D_%7B%5Cfrac%7B%5Cmu%2B%5Clambda+%5Csigma%5E2-x%7D%7B%5Csqrt%7B2%7D%5Csigma%7D%7D+dz+e%5E%7B-z%5E2%7D%5C%5C%5B1.0ex%5D++%3D+%5Cfrac%7B%5Clambda%7D%7B2%7De%5E%7B%5Clambda+%5Cmu+%2B+%5Cfrac%7B1%7D%7B2%7D%5Clambda%5E2%5Csigma%5E2%7De%5E%7B-%5Clambda+x%7D%5Cmbox%7Berfc%7D%5Cleft%28%5Cfrac%7B%5Cmu%2B%5Clambda+%5Csigma%5E2+-x%7D%7B%5Csqrt%7B2%7D%5Csigma%7D%5Cright%29%5C%5C++&bg=f1f1f1&fg=000000&s=1)
が得られる。
Python code
Pythonに用意されてるモジュールについてはnumpy.convolveも参照
結果はこんな感じ。
