Base class for optimizer/sampler likelihood functions that compute likelihood at a point.
More...
|
int | getDataDim () const |
| Return the number of data points. More...
|
|
int | getAmplitudeDim () const |
| Return the number of linear parameters (columns of the model matrix) More...
|
|
int | getNonlinearDim () const |
| Return the number of nonlinear parameters (which parameterize the model matrix) More...
|
|
int | getFixedDim () const |
| Return the number of fixed nonlinear parameters (set on Likelihood construction) More...
|
|
ndarray::Array< Scalar const, 1, 1 > | getFixed () const |
| Return the vector of fixed nonlinear parameters. More...
|
|
ndarray::Array< Pixel const, 1, 1 > | getData () const |
| Return the vector of weighted, scaled data points \(z\). More...
|
|
ndarray::Array< Pixel const, 1, 1 > | getUnweightedData () const |
| Return the vector of unweighted data points \(y\). More...
|
|
ndarray::Array< Pixel const, 1, 1 > | getWeights () const |
| Return the vector of weights \(w\) applied to data points and model matrix rows. More...
|
|
ndarray::Array< Pixel const, 1, 1 > | getVariance () const |
| Return the vector of per-data-point variances. More...
|
|
boost::shared_ptr< Model > | getModel () const |
| Return an object that defines the model and its parameters. More...
|
|
virtual void | computeModelMatrix (ndarray::Array< Pixel, 2,-1 > const &modelMatrix, ndarray::Array< Scalar const, 1, 1 > const &nonlinear, bool doApplyWeights=true) const =0 |
| Evaluate the model for the given vector of nonlinear parameters. More...
|
|
virtual | ~Likelihood () |
|
| Likelihood (const Likelihood &)=delete |
|
Likelihood & | operator= (const Likelihood &)=delete |
|
| Likelihood (Likelihood &&)=delete |
|
Likelihood & | operator= (Likelihood &&)=delete |
|
Base class for optimizer/sampler likelihood functions that compute likelihood at a point.
Likelihood abstracts the problem of computing the likelihood over different kinds of data. It is responsible for creating a "model matrix" that maps amplitudes to data values, and maintaining a vector of scaled, weighted data values that corresponds to it. Its components can be represented best in the mathematical formula for a -log likelihood assuming Gaussian data and a model with both nonlinear parameters \(\theta\) and linear ("amplitude") parameters \(\alpha\):
\[ L(\alpha,\theta) = \frac{1}{2}\left(y - A(\theta)\alpha\right)^T\, \Sigma^{-1}\,\left(y - A(\theta)\alpha\right) \]
where \(y\) is the data vector, \(\Sigma\) is the data covariance matrix (assumed to be diagonal), and \(A(\theta)\) is the "true" model matrix (parametrized on the nonlinear parameters).
When fitting or sampling from the likelihood, however, we don't want to use these quantities directly, and they aren't what the Likelihood class provides. Instead, we reparametrize with:
\[ w_i \equiv \Sigma_{i,i}^{-1/2} \]
\[ z_i = w_i y_i \]
\[ B_{i,j} = w_i A_{i,j} \]
resulting in the equivalent formula:
\[ L(\alpha,\theta) = \frac{1}{2}\left(z-B(\theta)\alpha\right)^T\,\left(z-B(\theta)\alpha\right) \]
The \(w_i\) are the weights, which are applied to both the data vector and the model matrix to account for the noise in the data. In some cases, we may choose to use a constant weight rather than per-pixel weights, but will will still use a vector to represent it.
Definition at line 69 of file Likelihood.h.