Normal Inverse Gaussian Distribution#

The probability density function is given by:

f(x;a,b)=aexp(a2b2+bx)π1+x2K1(a1+x2),

where x is a real number, the parameter a is the tail heaviness and b is the asymmetry parameter satisfying a>0 and |b|a. K1 is the modified Bessel function of second kind (scipy.special.k1).

A normal inverse Gaussian random variable with parameters a and b can be expressed as X=bV+(V)X where X is norm(0,1) and V is invgauss(mu=1/sqrt(a**2 - b**2)). Hence, the normal inverse Gaussian distribution is a special case of normal variance-mean mixtures.

Another common parametrization of the distribution is given by the following expression of the pdf:

g(x,α,β,δ,μ)=αδK1(αδ2+(xμ)2)πδ2+(xμ)2eδα2β2+β(xμ)

In SciPy, this corresponds to a=αδ,b=βδ,loc=μ,scale=δ.

Implementation: scipy.stats.norminvgauss