Module Levy¶
This is a package for calculation of Levy stable distributions (probability density function and cumulative density function) and for fitting these distributions to data.
It operates by interpolating values from a table, as direct computation of these distributions requires a lengthy numerical integration. This interpolation scheme allows fast fitting of data by Maximum Likelihood .
Does not support alpha values less than 0.5.
-
levy.change_par(alpha, beta, mu, sigma, par_input, par_output)¶ Returns mu in the parametrization ‘par_output’, from the parametrization ‘par_input”.
- Example:
>>> change_par(1.8, 1, 0, 1, 1, 0) -0.32491969623290645
Parameters: Returns: value of mu in the par_output parametrization
Return type:
-
levy.random(alpha, beta, mu=0.0, sigma=1.0, shape=(), par=0)¶ Generate random values sampled from an alpha-stable distribution. Parametrization can be chosen according to Nolan, par={0,1}.
- Example:
>>> x = random(1.5, 0, shape=100, par=0)
Parameters: Returns: generated random values
Return type:
-
levy.levy(x, alpha, beta, mu=0.0, sigma=1.0, cdf=False, par=0)¶ Levy distribution with the tail replaced by the analytical (power law) approximation.
alpha in (0, 2] is the index of stability, or characteristic exponent. beta in [-1, 1] is the skewness. mu in real and sigma > 0 are the center and scale of the distribution (corresponding to delta and gamma in Nolan’s notation; note that sigma in levy corresponds to sqrt(2) sigma in the normal distribution). cdf is a Boolean that specifies if it returns the cdf instead of the pdf.
Parametrization can be chosen according to Nolan, par={0,1}.
See: http://fs2.american.edu/jpnolan/www/stable/stable.html
- Example:
>>> x = np.array([1, 2, 3]) >>> levy(x, 1.5, 0, cdf=True) array([0.20203811, 0.08453908, 0.03150926])
Parameters: Returns: values of the pdf (or cdf if parameter ‘cdf’ is set to True) at ‘x’
Return type:
-
levy.fit_levy(x, alpha=None, beta=None, mu=None, sigma=None, par=0)¶ Estimate parameters of Levy stable distribution given data x, using Maximum Likelihood estimation.
By default, searches all possible Levy stable distributions. However you may restrict the search by specifying the values of one or more parameters. Parametrization can be chosen according to Nolan, par={0,1}.
- Examples:
>>> np.random.seed(0) >>> x = random(1.5, 0, 0, 1, shape=200) >>> fit_levy(x) # -- Fit a stable distribution to x (1.523332454855073, -0.08374679328809703, 0.05006400708816064, 0.9850660292714712, 402.44279062026806)
>>> fit_levy(x, beta=0.0) # -- Fit a symmetric stable distribution to x (1.5275585459739105, 0.0, 0.028412901208016147, 0.9874304715515858, 402.5204574692911)
>>> fit_levy(x, beta=0.0, mu=0.0) # -- Fit a symmetric distribution centered on zero to x (1.5292748496827586, 0.0, 0.0, 0.98865238323717, 402.55578262026063)
>>> fit_levy(x, alpha=1.0, beta=0.0) # -- Fit a Cauchy distribution to x (1.0, 0.0, 0.10120172254704864, 0.9014243199508114, 416.5364751270402)
Returns a tuple of (alpha, beta, mu, sigma, negative log density)
Parameters: Returns: estimated parameters
Return type: