BayesicFitting

Model Fitting and Evidence Calculation

View project on GitHub



class ExponentialErrorDistribution( ScaledErrorDistribution )[source]

Also known as generalized gaussian errordistribution.

To calculate an Exponential likelihood.

For one residual, x, it holds

  f( x ) = p / ( 2 s Γ( 1 / p ) ) exp( - ( |x| / s )p )

where Γ is the Gamma-function, s is the scale and p is the power. s and p are hyperparameters, which might be estimated from the data.

The variance of this function is

  σ2 = s2 Γ( 3 / p ) / Γ( 1 / p )

See method

The function is mostly used to calculate the likelihood L over N residuals, or easier to use log( L )

     logL = log( N p / ( 2 s Γ( 1 / p ) ) ) - ∑( ( |x| / s )p )

Using weights this becomes

     logL = log( ∑( w ) p / ( 2 s Γ( 1 / p ) ) ) - ∑( w ( |x| / s )p )

Note
The scale s in Exponential is NOT the same as the scale in Gaussian or in Laplace.

Attributes from ErrorDistibution
hyperpar, deltaP, ncalls, nparts, sumweight, ndata, hypar, nphypar

Author Do Kester.

ExponentialErrorDistribution( scale=1.0, power=2.0, limits=None, copy=None ) [source]

Default Constructor.

Parameters

  • scale : float
         noise scale
  • power : float
         power of the distribution
  • limits : None or [low,high] or [[low],[high]]
         None : no limits implying fixed scale
         low low limit on scale (needs to be >0)
         high high limit on scale
         [low] low limit on [scale,power] (need to be >0)
         [high] high limit on [scale,power]
         when limits are set, the scale cq. power are not fixed.
  • copy : ExponentialErrorDistribution
         distribution to be copied.

copy( ) [source]

Return copy of this.

acceptWeight( ) [source]
True if the distribution accepts weights. Always true for this distribution.

toSigma( hypar ) [source]
Return sigma, the squareroot of the variance.

Parameter

  • hypar : array_like (2 floats)
         the [scale,power] of this Exponential distribution.

logLikelihood_alt( problem, allpars ) [source]
Return the log( likelihood ) for a Gaussian distribution.

Parameters

  • problem : Problem
         to be solved
  • allpars : array_like
         parameters of the problem

logLdata( problem, allpars, mockdata=None ) [source]
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

getChipow( problem, allpars=None, scale=1 ) [source]
Return chisq.

return Sum over the (weighted) powered residuals

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
         present scale

getScale( problem, allpars=None ) [source]
Return the noise scale calculated from the residuals.

Parameters

  • problem : Problem
         to be solved
  • allpars : array_like
         None take parameters from problem.model
         list of all parameters in the problem

partialLogL_alt( problem, allpars, fitIndex ) [source]
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
         parameters of the problem
  • fitIndex : array_like
         indices of parameters to be fitted

nextPartialData( problem, allpars, fitIndex, mockdata=None ) [source]
Return the partial derivative of all 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
         parameters of the problem
  • fitIndex : array_like
         indices of parameters to be fitted
  • mockdata : array_like
         as calculated by the model
Methods inherited from ScaledErrorDistribution
Methods inherited from ErrorDistribution