BayesicFitting

Model Fitting and Evidence Calculation

View project on GitHub



class ErrorDistribution( object )Source

ErrorDistribution defines general methods for a error distribution.

Error distributions are used to calculate the likelihoods.

Author Do Kester.

Attributes

  • hyperpar : HyperParameter
         hyperparameter for the error distribution
  • deltaP : float
         delta for calculating numerical derivatives
  • ncalls : int
         number of calls to the logLikelihood
  • nparts : int
         number of calls to the partial of the logLikelihood
  • sumweight : float
         sum over the weights or ndata
  • ndata : int
         number of points in data
  • hypar : [float]
         list of values for the hyperparameters
  • nphypar : int
         number of hyper parameters in this error distribution
  • constrain : None or callable
         None: Use logLikelihood as is
         callable: logL = func( logL, problem, allpars, lowLhood )
                   returning a (modified) value of the logLikelihood.

ErrorDistribution( fixed=None, constrain=None, copy=None )

Constructor.

Parameters

  • fixed : dictionary of {int:float}
         int list if parameters to fix permanently. Default None.
         float list of values for the fixed parameters.
  • constrain : None or callable
         function as: func( logL, problem, allpars )
         returning a (modified) value of the logLikelihood.
  • copy : ErrorDistribution
         distribution to be copied.

Raise

ValueError when constrain is not a callable method.

copy( )

Return copy of this.

getGaussianScale( problem, allpars=None )
Return the noise scale.

*** Gaussian approximation ***

Parameters

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

getResiduals( problem, allpars=None )
Return residuals: ydata - model.result

Parameters

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

getChisq( problem, allpars=None )
Return chisq

*** Gaussian approximation ***

Sum over the (weighted) squared residuals

Parameters

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

toSigma( scale )
Return sigma, the squareroot of the variance.

Parameter

  • scale : float
         the scale of this distribution.

Return default value : scale

isBound( )
True when all priors of its (hyper)parameters are bound

acceptWeight( )

True if the distribution accepts weights.

keepFixed( fixed=None )
Keeps (hyper)parameters fixed at the provided values.
  1. Repeated calls start from scratch.
  2. Reset with keepFixed( fixed=None )

Parameters

  • fixed : dictionary of {int:float}
         int list if parameters to fix permanently. Default None.
         float list of values for the fixed parameters.

setPriors( priors )
Set priors on the hyper parameter(s).

Parameters

  • priors : (list of) Prior
         prior distribution for the hyperparameters

setLimits( limits )
Set limits on the hyper parameter(s).

Parameters

  • limits : [low,high]
         low : float or array_like
             low limits
         high : float or array_like
             high limits

domain2Unit( dval, ks )
Return value in [0,1] for the selected parameter.

Parameters

  • dval : float
         hyper parameter value in domain
  • ks : int
         selecting index

unit2Domain( uval, ks )
Return domain value for the selected parameter.

Parameters

  • uval : float
         unit value of hyper parameter
  • ks : int
         selecting index

logCLhood( problem, allpars )
Return the constrained log( likelihood ).

Parameters

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

logLhood( problem, allpars )
Return the log( likelihood ).

Parameters

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

partialLogL( problem, allpars, fitIndex )
Return the partial derivative of log( likelihood ) to the parameters.

Parameters

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

partialLogL_alt( problem, allpars, fitIndex )
Return the partial derivative of log( likelihood ) to the parameters.

Alternative calculation.

Parameters

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

numPartialLogL( problem, allpars, fitIndex )
Return d log( likelihood ) / dp, numerically calculated.

Parameters

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

updateLogL( problem, allpars, parval=None )
Return a update of the log( likelihood ) given a change in a few parameter.

This method provides the opportunity to optimize the logL calculation. Providing this one, automatically provides the previous one. For now it just refers to logLikelihood() itself.

Parameters

  • problem : Problem
         to be solved
  • param : array_like
         parameters of the model
  • parval : dict of {int : float}
         int index of a parameter
         float (old) value of the parameter

setResult( )

hyparname( k )
Return name of the hyperparameter

Parameters

  • k : int
         index of the hyperparameter