IMP
2.4.0
The Integrative Modeling Platform
|
MultivariateFNormalSufficient. More...
#include <IMP/isd/MultivariateFNormalSufficient.h>
MultivariateFNormalSufficient.
Probability density function and -log(p) of multivariate normal distribution of N M-variate observations.
\[ p(x_1,\cdots,x_N|\mu,F,\Sigma) = \left((2\pi\sigma^2)^M|\Sigma|\right)^{-N/2} J(F) \exp\left(-\frac{1}{2\sigma^2} \sum_{i=1}^N {}^t(F(\mu) - F(x_i))\Sigma^{-1}(F(\mu)-F(x_i)) \right) \]
which is implemented as
\[ p(x_1,\cdots,x_N|\mu,F,\Sigma) = ((2\pi\sigma^2)^M|\Sigma|)^{-N/2} J(F) \exp\left(-\frac{N}{2\sigma^2} {}^t\epsilon \Sigma^{-1} \epsilon\right) \exp\left(-\frac{1}{2\sigma^2} \text{tr}(W\Sigma^{-1})\right) \]
where
\[\epsilon = (F(\mu)- \overline{F(x)}) \quad \overline{F(x)} = \frac{1}{N} \sum_{i=1}^N F(x_i)\]
and
\[W=\sum_{i=1}^N(F(x_i)-\overline{F(x)}){}^t(F(x_i)-\overline{F(x)}) \]
\(\sigma\) is a multiplicative scaling factor that factors out of the \(\Sigma\) covariance matrix. It is set to 1 by default and its intent is to avoid inverting the \(\Sigma\) matrix unless necessary.
Set J(F) to 1 if you want the multivariate normal distribution. The distribution is normalized with respect to the matrix variable X. The Sufficient statistics are calculated at initialization.
Example: if F is the log function, the multivariate F-normal distribution is the multivariate lognormal distribution with mean \(\mu\) and standard deviation \(\Sigma\).
Definition at line 86 of file MultivariateFNormalSufficient.h.
Public Member Functions | |
MultivariateFNormalSufficient (const IMP_Eigen::MatrixXd &FX, double JF, const IMP_Eigen::VectorXd &FM, const IMP_Eigen::MatrixXd &Sigma, double factor=1) | |
MultivariateFNormalSufficient (const IMP_Eigen::VectorXd &Fbar, double JF, const IMP_Eigen::VectorXd &FM, int Nobs, const IMP_Eigen::MatrixXd &W, const IMP_Eigen::MatrixXd &Sigma, double factor=1) | |
double | density () const |
double | evaluate () const |
double | evaluate_derivative_factor () const |
IMP_Eigen::VectorXd | evaluate_derivative_FM () const |
IMP_Eigen::MatrixXd | evaluate_derivative_Sigma () const |
IMP_Eigen::MatrixXd | evaluate_second_derivative_FM_FM () const |
IMP_Eigen::MatrixXd | evaluate_second_derivative_FM_Sigma (unsigned l) const |
IMP_Eigen::MatrixXd | evaluate_second_derivative_Sigma_Sigma (unsigned k, unsigned l) const |
IMP_Eigen::VectorXd | get_epsilon () const |
double | get_factor () const |
IMP_Eigen::VectorXd | get_Fbar () const |
IMP_Eigen::VectorXd | get_FM () const |
IMP_Eigen::MatrixXd | get_FX () const |
double | get_jacobian () const |
double | get_log_generalized_variance () const |
double | get_mean_square_residuals () const |
double | get_minus_exponent () const |
double | get_minus_log_jacobian () const |
double | get_minus_log_normalization () const |
IMP_Eigen::MatrixXd | get_Sigma () const |
double | get_Sigma_condition_number () const |
IMP_Eigen::VectorXd | get_Sigma_eigenvalues () const |
virtual std::string | get_type_name () const |
virtual ::IMP::base::VersionInfo | get_version_info () const |
Get information about the module and version of the object. More... | |
IMP_Eigen::MatrixXd | get_W () const |
void | reset_flags () |
void | set_factor (double f) |
void | set_Fbar (const IMP_Eigen::VectorXd &f) |
void | set_FM (const IMP_Eigen::VectorXd &f) |
void | set_FX (const IMP_Eigen::MatrixXd &f) |
void | set_jacobian (double f) |
void | set_minus_log_jacobian (double f) |
void | set_Sigma (const IMP_Eigen::MatrixXd &f) |
void | set_use_cg (bool use, double tol) |
void | set_W (const IMP_Eigen::MatrixXd &f) |
IMP_Eigen::MatrixXd | solve (IMP_Eigen::MatrixXd B) const |
void | stats () const |
Public Member Functions inherited from IMP::base::Object | |
virtual void | clear_caches () |
CheckLevel | get_check_level () const |
LogLevel | get_log_level () const |
void | set_check_level (CheckLevel l) |
void | set_log_level (LogLevel l) |
Set the logging level used in this object. More... | |
void | set_was_used (bool tf) const |
void | show (std::ostream &out=std::cout) const |
const std::string & | get_name () const |
void | set_name (std::string name) |
Additional Inherited Members | |
Protected Member Functions inherited from IMP::base::Object | |
Object (std::string name) | |
Construct an object with the given name. More... | |
virtual void | do_destroy () |
IMP::isd::MultivariateFNormalSufficient::MultivariateFNormalSufficient | ( | const IMP_Eigen::MatrixXd & | FX, |
double | JF, | ||
const IMP_Eigen::VectorXd & | FM, | ||
const IMP_Eigen::MatrixXd & | Sigma, | ||
double | factor = 1 |
||
) |
Initialize with all observed data
[in] | FX | F(X) matrix of observations with M columns and N rows. |
[in] | JF | J(F) determinant of Jacobian of F with respect to observation matrix X. |
[in] | FM | F(M) mean vector \(F(\mu)\) of size M. |
[in] | Sigma | : MxM variance-covariance matrix \(\Sigma\). |
[in] | factor | : multiplicative factor (default 1) |
IMP::isd::MultivariateFNormalSufficient::MultivariateFNormalSufficient | ( | const IMP_Eigen::VectorXd & | Fbar, |
double | JF, | ||
const IMP_Eigen::VectorXd & | FM, | ||
int | Nobs, | ||
const IMP_Eigen::MatrixXd & | W, | ||
const IMP_Eigen::MatrixXd & | Sigma, | ||
double | factor = 1 |
||
) |
Initialize with sufficient statistics
[in] | Fbar | : M-dimensional vector of mean observations. |
[in] | JF | J(F) determinant of Jacobian of F with respect to observation matrix X. |
[in] | FM | F(M) : M-dimensional true mean vector \(\mu\). |
[in] | Nobs | : number of observations for each variable. |
[in] | W | : MxM matrix of sample variance-covariances. |
[in] | Sigma | : MxM variance-covariance matrix Sigma. |
[in] | factor | : multiplicative factor (default 1) |
|
virtual |
Get information about the module and version of the object.
Reimplemented from IMP::base::Object.
Definition at line 228 of file MultivariateFNormalSufficient.h.