Welcome to autolik’s documentation!

Indices and tables

autodiff

Common user interface for the gradient computation and gradient function construction

autolik.autodiff.F(f: Callable)

Construct a function for Dual-type function computation

autolik.autodiff.grad(f: Callable)

Construct a gradient function

construct a gradient function with respect to x

Example:

>>> from autolik import grad
>>> f = lambda x,y: -x**3 - 2 * x**y + x.exp() + (y ** 2).exp()
>>> g = grad(f)
>>> at = [[1,1],[2,2],[3,3]]
>>> Grad = [grad(f)(x) for x in at]
autolik.autodiff.gradient(f: Callable, at)

Compute the gradient of a provided function at specific points

Common interface for gradient computation

Example:

>>> from autolik import grad
>>> f = lambda x,y: -x**3 - 2 * x**y + x.exp() + (y ** 2).exp()
>>> at = [[1,1],[2,2],[3,3]]
>>> Grad = gradient(f,at)

distributions and likelihood

Built in distibutions and their likelihood functions API

For probability density function usage, use autolik.pdf attribute; For log-likelihood function usage, use autolik.ll attribute;

class autolik.distributions.univariate.pdf

Univariate distributions probability density functions library

Ggamma(alpha, beta, gam)

Generalized Gamma distribution \(X \sim \text{generalized gamma}(\alpha,\beta,\gamma)\)

\[f(x) = \dfrac{\gamma x^{\gamma \beta-1} e^{-(x/ \alpha)^{\gamma}}}{\alpha^{\gamma \beta} \Gamma{\beta}} , x > 0\]

with positive scale parameter \(\alpha > 0\) and positive shape parameter \(\beta > 0\) and \(\gamma > 0\)

Gpareto(delta, kappa, gam)

Generalized Pareto distribution \(X \sim \text{generalized pareto}(\delta,\kappa,\gamma)\)

\[f(x) = (\gamma + \dfrac{\kappa}{x+\delta})(1+\dfrac{x}{\delta})^{-\kappa} e^{-\gamma x} , x > 0\]

with shape parameters \(\delta > 0\), \(\kappa \ge -\delta \gamma\) and \(\gamma \ge 0\)

Tdist(n)

Student t distribution \(X \sim t(n)\)

\[f(x) = \dfrac{\Gamma(\frac{n+1}{2}) (1+\frac{x^2}{n})^{-\frac{n+1}{2}}}{\sqrt{n\pi} \Gamma{\frac{n}{2}}}, -\infty < x < \infty\]

with \(n\) degrees of freedom

beta(beta, gam)

Beta distribution \(X \sim beta(\beta,\gamma)\)

\[f(x) = \dfrac{\Gamma(\beta+\gamma)x^{\beta-1}(1-x)^{\gamma-1}}{\Gamma{\beta}\Gamma{\gamma}} , 0<x<1\]

with positive shape parameters \(\beta > 0\), \(\gamma > 0\)

cauchy(a, alpha)

Cauchy distribution \(X \sim Cauchy(a,\alpha)\)

\[f(x) = \dfrac{1}{\alpha \pi (1+((x-a)/\alpha)^2)} , -\infty<x<\infty\]

with location parameter \(a \in (-\infty,\infty)\), and positive scale parameter \(\alpha > 0\)

chi(n)

Chi distribution \(X \sim \chi(n)\)

\[f(x) = \dfrac{1}{2^{\frac{n}{2}-1} \Gamma(\frac{n}{2})}x^{n-1}e^{-\frac{x^2}{2}} , x > 0\]

with \(n\) degrees of freedom

chisqr(n)

Chi-square distribution \(X \sim \chi^2(n)\)

\[f(x) = \dfrac{x^{\frac{n}{2}}e^{-\frac{x}{2}}}{2^{\frac{n}{2}} \Gamma(\frac{n}{2})} , x > 0\]

with \(n\) degrees of freedom

exponential(lam)

Exponential distribution \(X \sim exponential(\alpha)\)

\[f(x) = \lambda e^{-\lambda x} , x > 0\]

with rate \(\lambda\)

gamma(alpha, beta)

Gamma distribution \(X \sim gamma(\alpha,\beta)\)

\[f(x) = \dfrac{x^{\beta-1} e^{-\frac{x}{\alpha}}}{\alpha^{\beta} \Gamma{\beta}} , x > 0\]

with positive scale parameter \(\alpha > 0\) and positive shape parameter \(\beta > 0\)

invgamma(alpha, beta)

Inverted Gamma distribution \(X \sim \text{inverted gamma}(\alpha,\beta)\)

\[f(x) = \dfrac{x^{-(\alpha+1) e^{-\frac{1}{\beta x}}}}{\Gamma(\alpha)\beta^{\alpha}} , x > 0\]

with positive shape parameter \(\alpha > 0\) and positive scale parameter \(\beta > 0\)

invgaussian(lam, mu)

Inverse Gaussian distribution \(X \sim \text{inverse Gaussian}(\lambda, \mu)\)

\[f(x) = \sqrt{\dfrac{\lambda}{2\pi x^3}} e^{-\dfrac{\lambda(x-\mu)^2}{2x\mu^2}} , x > 0\]

with parameters \(\lambda > 0\) and \(\mu > 0\)

laplace(alpha1, alpha2)

Laplace distribution \(X \sim Laplace(\alpha_1,\alpha_2)\)

\[\begin{split}f(x) = \begin{cases} (1/(\alpha_1 + \alpha_2))e^{\frac{x}{\alpha_1}}, x < 0 \\ (1/(\alpha_1 + \alpha_2))e^{-\frac{x}{\alpha_2}}, x \ge 0 \end{cases}\end{split}\]

with positive scale parameters \(\alpha_1 > 0\) and \(\alpha_2 > 0\)

loggamma(alpha, beta)

Log-Gamma distribution \(X \sim log-gamma(\alpha,\beta)\)

\[f(x) = \dfrac{e^{\beta x} e^{-\frac{e^x}{\alpha}}}{\alpha^{\beta} \Gamma(\beta)}, -\infty < x < \infty\]

with positive scale parameter \(\alpha > 0\) and positive shape parameter \(\beta > 0\)

logistic(lam, kappa)

Logistic distribution \(X \sim logistic(\lambda,\kappa)\)

\[f(x) = \dfrac{\lambda^{\kappa}\kappa e^{\kappa x}}{(1+(\lambda e^x)^{\kappa})^2}, -\infty < x < \infty\]

with positive scale parameter \(\lambda > 0\) and positive shape parameter \(\kappa > 0\)

logistic_exp(alpha, beta)

Logistic-Exponential distribution \(X \sim log-exponential(\alpha,\beta)\)

\[f(x) = \dfrac{\alpha \beta (e^{\alpha x} - 1)^{\beta-1} e^{\alpha x}}{(1+(e^{\alpha x} - 1)^{\beta})^2}, x > 0\]

with positive scale parameter \(\alpha > 0\) and positive shape parameter \(\bata > 0\)

loglogistic(lam, kappa)

Log-Logistic distribution \(X \sim loglogistic(\lambda,\kappa)\)

\[f(x) = \dfrac{\lambda \kappa (\lambda x)^{\kappa-1}}{(1+(\lambda x)^{\kappa})^2}, x > 0\]

with positive scale parameter \(\lambda > 0\) and positive shape parameter \(\kappa > 0\)

lognormal(alpha, beta)

Log-normal distribution \(X \sim log-normal(\alpha,\beta)\)

\[f(x) = \dfrac{1}{x\beta \sqrt{2\pi}} e^{-\frac{1}{2}(ln(x/ \alpha)/ \beta)^2}, x > 0\]

with positive parameters \(\alpha > 0\), \(\beta > 0\)

lomax(lam, kappa)

Lomax distribution \(X \sim lomax(\lambda,\kappa)\)

\[f(x) = \dfrac{\lambda \kappa}{(1+\lambda x)^{\kappa + 1}}, x > 0\]

with positive scale parameter \(\lambda > 0\) and positive shape parameter \(\kappa > 0\)

makeham(delta, kappa, gam)

Makeham distribution \(X \sim Makeham(\delta,\kappa,\gamma)\)

\[f(x) = (\gamma + \delta \kappa^x) e^{-\gamma x -\delta(\kappa^x -1)/ln(\kappa)}, x > 0\]

with positive parameters \(\delta > 0\) \(\kappa > 0\) \(\gamma > 0\)

minimax(beta, gam)

Minimax distribution \(X \sim minimax(\beta,\gamma)\)

\[f(x) = \beta \gamma x^{\beta-1} (1-x^{\beta})^{\gamma-1} , 0 < x < 1\]

with positive shape parameters \(\beta > 0\) and \(\gamma > 0\)

muth(kappa)

Muth distribution \(X \sim muth(\kappa)\)

\[f(x) = (e^{\kappa x} - \kappa) e^{-\frac{e^{\kappa x}}{\kappa} + \kappa x + \frac{1}{\kappa}}, x > 0\]

with parameter \(0 < \kappa \le 1\)

normal(mu, sigma)

Gaussian distribution \(X \sim N(\mu,\sigma^2)\)

\[f(x) = \dfrac{1}{\sqrt{2\pi} \sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}, -\infty < x < \infty\]

with mean \(-\infty < \mu < \infty\) and variance \(\sigma^2\)

pareto(lam, kappa)

Pareto distribution \(X \sim pareto(\lambda,\kappa)\)

\[f(x) = \dfrac{\kappa \lambda^{\kappa}}{x^{\kappa+1}}, x > \lambda\]

with positive parameters \(\lambda > 0\) and \(\kappa > 0\)

power(alpha, beta)

Power distribution \(X \sim power(\alpha,\beta)\)

\[f(x) = \dfrac{\beta x^{\beta-1}}{\alpha^{\beta}}, 0 < x < \alpha\]

with positive scale parameter \(\alpha > 0\) and positive shape parameter \(\beta > 0\)

rayleigh(alpha)

Rayleigh distribution \(X \sim Rayleigh(\alpha)\)

\[f(x) = \dfrac{2x e^{-\frac{x^2}{\alpha}}}{\alpha}, x > 0\]

with positive parameter \(\alpha > 0\)

std_power(beta)

Standard Power distribution \(X \sim power(1,\beta)\)

\[f(x) = \beta x^{\beta-1}, 0 < x < 1\]

with positive shape parameter \(\beta > 0\)

std_wald(lam)

Standard Wald distribution \(X \sim standard-Wald(\lambda)\)

\[f(x) = \sqrt{\dfrac{\lambda}{2\pi x^3}} e^{-\frac{\lambda(x-1)^2}{2x}}, x > 0\]

with parameter \(\lambda > 0\)

uniform(a, b)

Uniform distribution \(X \sim U(a,b)\)

\[f(x) = \dfrac{1}{b-a}, a < x < b\]

with range parameters \(-\infty < a < b < \infty\)

weibull(alpha, beta)

Weibull distribution \(X \sim Weibull(\alpha,\beta)\)

\[f(x) = \dfrac{\beta}{\alpha} x^{\beta-1} e^{-\frac{x^{\beta}}{\alpha}}, x > 0\]

with positive scale parameter \(\alpha > 0\) and positive shape parameter \(\beta > 0\)

Usage

Example (self-defined function):

>>> from autolik import Dual # for self-defined functions use
>>> import autolik
>>> import matplotlib.pyplot as plt
>>> from matplotlib.pyplot import cm
>>> import numpy as np
>>> def z(x,y): # self-defined function
...     if isinstance(x,Dual) or isinstance(y,Dual): # autolik.Dual computation
...         return x * (-x**2 - y**2).exp()
...     else:
...         return x * np.exp(-x**2 - y**2)
>>> z_grad = autolik.grad(z) # gradient function
>>> x = np.linspace(-2,2,100)
>>> y = np.linspace(-2,2,100)
>>> X,Y = np.meshgrid(x,y)
>>> Z = np.array([[z(i,j) for i in x] for j in y])
>>> vx = np.linspace(-2,2,50)
>>> vy = np.linspace(-2,2,50)
>>> vX,vY = np.meshgrid(vx,vy)
>>> Z_grad = np.array([z_grad([i,j]) for i in vx for j in vy]) # gradient vectors
>>> ax = plt.axes()
>>> ax.contourf(X,Y,Z,levels=50, cmap=cm.jet, alpha = 0.7)
>>> ax.quiver(vX,vY,Z_grad[:,0],Z_grad[:,1])
>>> plt.show()
_images/contourf_x_exp_x2_y2.png

Example (built in log-likelihood funtion and its gradient):

>>> import autolik
>>> import numpy as np
>>> y = np.random.normal(-1,2,100)
>>> def loglik_normal(mu,sigma): # prepare the logliklihood function
...    return autolik.ll.normal(y, mu, sigma)
>>> g = autolik.grad(loglik_normal) # generate the gradient for the logliklihood function
>>> import matplotlib.pyplot as plt
>>> from matplotlib.pyplot import cm
>>> mu = np.linspace(-2,2,50)
>>> sig = np.linspace(1,6,50)
>>> Mu,Sigma = np.meshgrid(mu,sig)
>>> loglik = np.array([[loglik_normal(i,j) for i in mu] for j in sig])
>>> loglik_grad = np.array([g([i,j]) for i in mu for j in sig])
>>> ax = plt.axes()
>>> ax.contourf(Mu,Sigma,loglik, levels=50, cmap=cm.jet, alpha = 0.8) # plot the contour of log-likelihood function
>>> ax.quiver(Mu,Sigma,loglik_grad[:,0],loglik_grad[:,1]) # plot the gradient vectors of log-likelihood function
>>> plt.show()
_images/contourf_loglik_normal.png