LaplaceErrorDistribution

 
LaplaceErrorDistribution = class LaplaceErrorDistribution(ScaledErrorDistribution)
    LaplaceErrorDistribution(scale=1.0, limits=None, copy=None)
 
To calculate a Laplace likelihood.
 
For one residual, x, it holds
 
    f( x ) = 1 / ( 2 s ) exp( - |x| / s )
 
where s is the scale.
s is a hyperparameter, which might be estimated from the data.
 
The variance of this function is σ^2 = 2 s ^ 2.
See: toSigma()
 
The function is mostly used to calculate the likelihood L over N
residuals, or easier using log likelihood, logL.
 
    logL = log( N / ( 2 s ) ) - ∑( |x| / s  )
 
Using weights this becomes:
 
    logL = log( ∑( w ) / ( 2 s ) ) - ∑( w |x| / s  )
 
Using this error distribution results in median-like solutions.
 
Author       Do Kester.
 
 
Method resolution order:
LaplaceErrorDistribution
ScaledErrorDistribution
ErrorDistribution
builtins.object

Constructor:
LaplaceErrorDistribution( scale=1.0, limits=None, copy=None )
Constructor of Laplace Distribution.
 
Parameters
----------
scale : float
    noise scale
limits : None or list of 2 floats [low,high]
    None : no limits implying fixed scale
    low     low limit on scale (needs to be >0)
    high    high limit on scale
    when limits are set, the scale is *not* fixed.
 
copy : LaplaceErrorDistribution
    distribution to be copied.
Methods defined here:
acceptWeight()
True if the distribution accepts weights.
Always true for this distribution.
copy()
Return copy of this.
getScale( problem, allpars=None )
Return the noise scale
 
Parameters
----------
problem : Problem
    to be solved
allpars : array_like
    None take parameters from problem.model
    list of all parameters in the problem
getSumRes( problem, allpars=None, scale=1)
Return the sum of the absolute values of the residuals.
 
    sum ( | res | )
 
Parameters
----------
problem : Problem
    to be solved
allpars : array_like
    None take parameters from problem.model
    list of all parameters in the problem
scale : float or array_like
    scale of residuals (from accuracies or noisescale of errdis)
logLdata( problem, allpars, mockdata=None )
Return the log( likelihood ) for each residual
 
logL = sum( logLdata )
 
Parameters
----------
problem : Problem
    to be solved
allpars : array_like
    list of all parameters in the problem
mockdata : array_like
    as calculated by the model
logLikelihood_alt( problem, allpars )
Return the log( likelihood ) for a Gaussian distribution.
 
Parameters
----------
problem : Problem
    to be solved
allpars : array_like
    parameters of the problem
nextPartialData( problem, allpars, fitIndex, mockdata=None )
Return the partial derivative of elements of the log( likelihood )
to the parameters.
 
dL/ds is not implemented for problems with accuracy
 
Parameters
----------
problem : Problem
    to be solved
allpars : array_like
    list of all parameters in the problem
fitIndex : array_like
    indices of parameters to be fitted
mockdata : array_like
    as calculated by the model
partialLogL_alt( problem, allpars, fitIndex )
Return the partial derivative of log( likelihood ) to the parameters.
 
dL/ds is not implemented for problems with accuracy
 
Parameters
----------
problem : Problem
    to be solved
allpars : array_like
    list of all parameters in the problem
fitIndex : array_like
    indices of parameters to be fitted
toSigma( scale )
Return sigma, the squareroot of the variance.
Parameter
--------
scale : float
    the scale of this Laplace distribution.

Methods inherited from ScaledErrorDistribution:
Methods inherited from ErrorDistribution: