Laplace#
- class hmclab.Distributions.Laplace(*args, **kwargs)[source]#
Bases:
hmclab.Distributions.base._AbstractDistribution
Laplace distribution in model space.
Least absolute deviations, Laplace distribution, LASSO, L1
- __init__(means: numpy.ndarray, dispersions: Optional[Union[numpy.ndarray, float]], lower_bounds: Optional[numpy.ndarray] = None, upper_bounds: Optional[numpy.ndarray] = None)[source]#
Methods
Correct HMC trajectory.
create_default
Dimensionality of misfit space.
generate
Method to compute the gradient the distribution.
Method to compute the misfit the distribution.
Compute misfit of bounded distribution.
normalize
Update bounded distribution.
Attributes
lower_bounds
Lower bounds for every parameter.
name
Name of the distribution.
normalized
Boolean describing if the distribution is normalized.
upper_bounds
Upper bounds for every parameter.
A float or numpy.ndarray of shape (dimensions, 1) of floats describing the mean of the uncorrelated multivariate Laplace distribution.
A positive float or numpy.ndarray of shape (dimensions, 1) of positive floats describing the dispersion of the uncorrelated multivariate Laplace distribution.
A positive float or numpy.ndarray of shape (dimensions, 1) of positive floats describing the inverse dispersion of the uncorrelated multivariate Laplace distribution.
- dimensions() int #
Dimensionality of misfit space.
This is an abstract parameter. If it is not defined either in your class directly or in its constructor (the __init__ function) then attempting to use the class will raise a NotImplementedError.
Access it like a parameter, not a function:
distribution.dimensions
.
- means#
A float or numpy.ndarray of shape (dimensions, 1) of floats describing the mean of the uncorrelated multivariate Laplace distribution.
- dispersions#
A positive float or numpy.ndarray of shape (dimensions, 1) of positive floats describing the dispersion of the uncorrelated multivariate Laplace distribution.
- inverse_dispersions#
A positive float or numpy.ndarray of shape (dimensions, 1) of positive floats describing the inverse dispersion of the uncorrelated multivariate Laplace distribution. Used to accelerate computations at the cost of memory usage.
- corrector(coordinates: numpy.ndarray, momentum: numpy.ndarray)#
Correct HMC trajectory.
Method to correct an HMC particle for bounded distributions, which is called after every time integration step.
- Parameters
coordinates (numpy.ndarray) – Numpy array shaped as (dimensions, 1) representing a column vector containing the coordinates \(\mathbf{m}\) upon which to operate by reference.
momentum (numpy.ndarray) – Numpy array shaped as (dimensions, 1) representing a column vector containing the momenta \(\mathbf{p}\) upon which to operate by reference.
- misfit_bounds(coordinates: numpy.ndarray) float #
Compute misfit of bounded distribution.
Method to compute the misfit associated with the truncated part of the distribution. Used internally.
- update_bounds(lower: Optional[numpy.ndarray] = None, upper: Optional[numpy.ndarray] = None)#
Update bounded distribution.
This method updates the bounds of a distribution. Note that invocating it, does not require both bounds to be passed.
If both vectors are passed, ensure that all upper bounds are above the corresponding lower bounds.
- Parameters
lower (numpy.ndarray or None) – Either an array shaped as (dimensions, 1) with floats for the lower bounds, or None for no bounds. If some dimensions should be bounded, while others should not, use
-numpy.inf
within the vector as needed.upper (numpy.ndarray or None) – Either an array shaped as (dimensions, 1) with floats for the upper bounds, or None for no bounds. If some dimensions should be bounded, while others should not, use
numpy.inf
within the vector as needed.
- Raises
ValueError – A ValueError is raised if the supplied upper and lower bounds are incompatible.