LSST Applications
21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
|
A prior that's flat in amplitude parameters, and uses a Mixture for nonlinear parameters. More...
#include <MixturePrior.h>
Public Member Functions | |
MixturePrior (std::shared_ptr< Mixture const > mixture, std::string const &tag="") | |
Scalar | evaluate (ndarray::Array< Scalar const, 1, 1 > const &nonlinear, ndarray::Array< Scalar const, 1, 1 > const &litudes) const override |
Evaluate the prior at the given point in nonlinear and amplitude space. More... | |
void | evaluateDerivatives (ndarray::Array< Scalar const, 1, 1 > const &nonlinear, ndarray::Array< Scalar const, 1, 1 > const &litudes, ndarray::Array< Scalar, 1, 1 > const &nonlinearGradient, ndarray::Array< Scalar, 1, 1 > const &litudeGradient, ndarray::Array< Scalar, 2, 1 > const &nonlinearHessian, ndarray::Array< Scalar, 2, 1 > const &litudeHessian, ndarray::Array< Scalar, 2, 1 > const &crossHessian) const override |
Evaluate the derivatives of the prior at the given point in nonlinear and amplitude space. More... | |
Scalar | marginalize (Vector const &gradient, Matrix const &hessian, ndarray::Array< Scalar const, 1, 1 > const &nonlinear) const override |
Return the -log amplitude integral of the prior*likelihood product. More... | |
Scalar | maximize (Vector const &gradient, Matrix const &hessian, ndarray::Array< Scalar const, 1, 1 > const &nonlinear, ndarray::Array< Scalar, 1, 1 > const &litudes) const override |
Compute the amplitude vector that maximizes the prior x likelihood product. More... | |
void | drawAmplitudes (Vector const &gradient, Matrix const &fisher, ndarray::Array< Scalar const, 1, 1 > const &nonlinear, afw::math::Random &rng, ndarray::Array< Scalar, 2, 1 > const &litudes, ndarray::Array< Scalar, 1, 1 > const &weights, bool multiplyWeights=false) const override |
Draw a set of Monte Carlo amplitude vectors. More... | |
std::shared_ptr< Mixture const > | getMixture () const |
std::string const & | getTag () const |
Static Public Member Functions | |
static MixtureUpdateRestriction const & | getUpdateRestriction () |
Return a MixtureUpdateRestriction appropriate for (e1,e2,r) data. More... | |
A prior that's flat in amplitude parameters, and uses a Mixture for nonlinear parameters.
Definition at line 35 of file MixturePrior.h.
|
explicit |
|
overridevirtual |
Draw a set of Monte Carlo amplitude vectors.
This provides a Monte Carlo approach to extracting the conditional amplitude distribution that is integrated by the marginalize() method.
[in] | gradient | Gradient of the -log likelihood in \(\alpha\) at fixed \(\theta\). |
[in] | hessian | Second derivatives of of the -log likelihood in \(\alpha\) at fixed \(\theta\). |
[in] | nonlinear | The nonlinear parameters \(\theta\) at which we are evaluating the conditional distribution \(P(\alpha|\theta)\). |
[in,out] | rng | Random number generator. |
[out] | amplitudes | The Monte Carlo sample of amplitude parameters \(\alpha\). The number of rows sets the number of samples, while the number of columns must match the dimensionality of \(\alpha\). |
[out] | weights | The weights of the Monte Carlo samples; should asymptotically average to one. |
[in] | multiplyWeights | If true, multiply weight vector instead of overwriting it. |
Implements lsst::meas::modelfit::Prior.
|
overridevirtual |
Evaluate the prior at the given point in nonlinear and amplitude space.
[in] | nonlinear | Vector of nonlinear parameters |
[in] | amplitudes | Vector of linear parameters |
Implements lsst::meas::modelfit::Prior.
|
overridevirtual |
Evaluate the derivatives of the prior at the given point in nonlinear and amplitude space.
Note that while the model is linear in the amplitudes, the prior is not necessarily linear in the amplitudes, so we do care about second derivatives w.r.t. amplitudes.
[in] | nonlinear | Vector of nonlinear parameters |
[in] | amplitudes | Vector of linear parameters |
[in] | nonlinearGradient | First derivative w.r.t. nonlinear parameters |
[in] | amplitudeGradient | First derivative w.r.t. linear parameters parameters |
[in] | nonlinearHessian | Second derivative w.r.t. nonlinear parameters |
[in] | amplitudeHessian | Second derivative w.r.t. linear parameters parameters |
[in] | crossHessian | Second derivative cross term of d(nonlinear)d(amplitudes); shape is [nonlinearDim, amplitudeDim]. |
Implements lsst::meas::modelfit::Prior.
|
inline |
Definition at line 88 of file MixturePrior.h.
|
inlineinherited |
|
static |
Return a MixtureUpdateRestriction appropriate for (e1,e2,r) data.
This restriction object can be used with Mixture<3>::updateEM() to create a mixture with a strictly isotropic ellipticity distribution.
|
overridevirtual |
Return the -log amplitude integral of the prior*likelihood product.
If \(\alpha\) are the amplitudes, \(\theta\) are the nonlinear parameters, and \(D\) is the data, then this method represents \(P(\alpha,\theta)\) by computing
\[ -\ln\left[\int\!P(D|\alpha,\theta)\,P(\alpha,\theta)\,d\alpha\right] \]
at fixed \(\theta\). Because \(\alpha\) are linear parameters, \(P(D|\alpha,\theta)\) is Gaussian in \(\alpha\), and because \(\theta\) is fixed, it's usually convenient to think of the integral as:
\[ -ln\left[P(\theta)\int\!P(D|\alpha,\theta)\,P(\alpha|\theta)\,d\alpha\right] \]
Thus, we marginalize the likelihood in \(\alpha\) at fixed \(\theta\), and then multiply by the prior on \(\theta\).
We also assume the likelihood \(P(D|\alpha,\theta)\) is Gaussian in \(\alpha\), which is generally true because \(\alpha\) defined such that the model is linear in them, and the noise on the data is generally Gaussian. In detail, we represent the likelihood at fixed \(\theta\) as
\[ P(D|\alpha,\theta) = A e^{-g^T\alpha - \frac{1}{2}\alpha^T H \alpha} \]
The normalization \(A\) can be brought outside the integral as a constant to be added to the return value, so it is not passed as an argument to this function.
[in] | gradient | Gradient of the -log likelihood in \(\alpha\) at fixed \(\theta\); the vector \(g\) in the equation above. |
[in] | hessian | Second derivatives of of the -log likelihood in \(\alpha\) at fixed \(\theta\); the matrix \(H\) in the equation above. |
[in] | nonlinear | The nonlinear parameters \(\theta\). |
Implements lsst::meas::modelfit::Prior.
|
overridevirtual |
Compute the amplitude vector that maximizes the prior x likelihood product.
[in] | gradient | Gradient of the -log likelihood in \(\alpha\) at fixed \(\theta\); the vector \(g\) in the equation above. |
[in] | hessian | Second derivatives of of the -log likelihood in \(\alpha\) at fixed \(\theta\); the matrix \(H\) in the equation above. |
[in] | nonlinear | The nonlinear parameters \(\theta\). |
[out] | amplitudes | The posterior-maximum amplitude parameters \(\alpha\). |
Implements lsst::meas::modelfit::Prior.