| 
    IMP Reference Guide
    2.23.0
    
   The Integrative Modeling Platform 
   | 
 
MultivariateFNormalSufficient. More...
#include <IMP/isd/MultivariateFNormalSufficient.h>
 Inheritance diagram for IMP::isd::MultivariateFNormalSufficient: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 Eigen::MatrixXd &FX, double JF, const Eigen::VectorXd &FM, const Eigen::MatrixXd &Sigma, double factor=1) | |
| Initialize with all observed data.  More... | |
| MultivariateFNormalSufficient (const Eigen::VectorXd &Fbar, double JF, const Eigen::VectorXd &FM, int Nobs, const Eigen::MatrixXd &W, const Eigen::MatrixXd &Sigma, double factor=1) | |
| Initialize with sufficient statistics.  More... | |
| double | density () const | 
| Probability density function.  More... | |
| double | evaluate () const | 
| Energy (score) function, aka -log(p)  More... | |
| double | evaluate_derivative_factor () const | 
| derivative wrt scalar factor  More... | |
| Eigen::VectorXd | evaluate_derivative_FM () const | 
| gradient of the energy wrt the mean F(M)  More... | |
| Eigen::MatrixXd | evaluate_derivative_Sigma () const | 
| gradient of the energy wrt the variance-covariance matrix Sigma  More... | |
| Eigen::MatrixXd | evaluate_second_derivative_FM_FM () const | 
| second derivative wrt FM and FM  More... | |
| Eigen::MatrixXd | evaluate_second_derivative_FM_Sigma (unsigned l) const | 
| second derivative wrt FM(l) and Sigma  More... | |
| Eigen::MatrixXd | evaluate_second_derivative_Sigma_Sigma (unsigned k, unsigned l) const | 
| second derivative wrt Sigma and Sigma(k,l)  More... | |
| Eigen::VectorXd | get_epsilon () const | 
| double | get_factor () const | 
| Eigen::VectorXd | get_Fbar () const | 
| Eigen::VectorXd | get_FM () const | 
| Eigen::MatrixXd | get_FX () const | 
| double | get_jacobian () const | 
| double | get_log_generalized_variance () const | 
| return log |^2 |  More... | |
| double | get_mean_square_residuals () const | 
| return transpose(epsilon)*P*epsilon  More... | |
| double | get_minus_exponent () const | 
| return minus exponent  More... | |
| double | get_minus_log_jacobian () const | 
| double | get_minus_log_normalization () const | 
| return minus log normalization  More... | |
| Eigen::MatrixXd | get_Sigma () const | 
| double | get_Sigma_condition_number () const | 
| return Sigma's condition number  More... | |
| Eigen::VectorXd | get_Sigma_eigenvalues () const | 
| return Sigma's eigenvalues from smallest to biggest  More... | |
| virtual std::string | get_type_name () const override | 
| virtual ::IMP::VersionInfo | get_version_info () const override | 
| Get information about the module and version of the object.  More... | |
| Eigen::MatrixXd | get_W () const | 
| void | reset_flags () | 
| if you want to force a recomputation of all stored variables  More... | |
| void | set_factor (double f) | 
| void | set_Fbar (const Eigen::VectorXd &f) | 
| void | set_FM (const Eigen::VectorXd &f) | 
| void | set_FX (const Eigen::MatrixXd &f) | 
| void | set_jacobian (double f) | 
| void | set_minus_log_jacobian (double f) | 
| void | set_Sigma (const Eigen::MatrixXd &f) | 
| void | set_use_cg (bool use, double tol) | 
| use conjugate gradients (default false)  More... | |
| void | set_W (const Eigen::MatrixXd &f) | 
| Eigen::MatrixXd | solve (Eigen::MatrixXd B) const | 
| Solve for Sigma*X = B, yielding X.  More... | |
  Public Member Functions inherited from IMP::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::Object | |
| Object (std::string name) | |
| Construct an object with the given name.  More... | |
| virtual void | do_destroy () | 
| IMP::isd::MultivariateFNormalSufficient::MultivariateFNormalSufficient | ( | const Eigen::MatrixXd & | FX, | 
| double | JF, | ||
| const Eigen::VectorXd & | FM, | ||
| const 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 Eigen::VectorXd & | Fbar, | 
| double | JF, | ||
| const Eigen::VectorXd & | FM, | ||
| int | Nobs, | ||
| const Eigen::MatrixXd & | W, | ||
| const 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) | 
| double IMP::isd::MultivariateFNormalSufficient::density | ( | ) | const | 
Probability density function.
| double IMP::isd::MultivariateFNormalSufficient::evaluate | ( | ) | const | 
Energy (score) function, aka -log(p)
| double IMP::isd::MultivariateFNormalSufficient::evaluate_derivative_factor | ( | ) | const | 
derivative wrt scalar factor
| Eigen::VectorXd IMP::isd::MultivariateFNormalSufficient::evaluate_derivative_FM | ( | ) | const | 
gradient of the energy wrt the mean F(M)
| Eigen::MatrixXd IMP::isd::MultivariateFNormalSufficient::evaluate_derivative_Sigma | ( | ) | const | 
gradient of the energy wrt the variance-covariance matrix Sigma
| Eigen::MatrixXd IMP::isd::MultivariateFNormalSufficient::evaluate_second_derivative_FM_FM | ( | ) | const | 
second derivative wrt FM and FM
| Eigen::MatrixXd IMP::isd::MultivariateFNormalSufficient::evaluate_second_derivative_FM_Sigma | ( | unsigned | l | ) | const | 
second derivative wrt FM(l) and Sigma
row and column indices in the matrix returned are for Sigma
| Eigen::MatrixXd IMP::isd::MultivariateFNormalSufficient::evaluate_second_derivative_Sigma_Sigma | ( | unsigned | k, | 
| unsigned | l | ||
| ) | const | 
second derivative wrt Sigma and Sigma(k,l)
| double IMP::isd::MultivariateFNormalSufficient::get_log_generalized_variance | ( | ) | const | 
return log |^2 |
| double IMP::isd::MultivariateFNormalSufficient::get_mean_square_residuals | ( | ) | const | 
return transpose(epsilon)*P*epsilon
| double IMP::isd::MultivariateFNormalSufficient::get_minus_exponent | ( | ) | const | 
return minus exponent
\[-\frac{1}{2\sigma^2} \sum_{i=1}^N {}^t(F(\mu) - F(x_i))\Sigma^{-1}(F(\mu)-F(x_i)) \]
| double IMP::isd::MultivariateFNormalSufficient::get_minus_log_normalization | ( | ) | const | 
return minus log normalization
\[\frac{N}{2}\left(\log(2\pi\sigma^2) + \log |\Sigma|\right) -\log J(F) \]
| double IMP::isd::MultivariateFNormalSufficient::get_Sigma_condition_number | ( | ) | const | 
return Sigma's condition number
| Eigen::VectorXd IMP::isd::MultivariateFNormalSufficient::get_Sigma_eigenvalues | ( | ) | const | 
return Sigma's eigenvalues from smallest to biggest
      
  | 
  overridevirtual | 
Get information about the module and version of the object.
Reimplemented from IMP::Object.
Definition at line 225 of file MultivariateFNormalSufficient.h.
| void IMP::isd::MultivariateFNormalSufficient::reset_flags | ( | ) | 
if you want to force a recomputation of all stored variables
| void IMP::isd::MultivariateFNormalSufficient::set_use_cg | ( | bool | use, | 
| double | tol | ||
| ) | 
use conjugate gradients (default false)
| Eigen::MatrixXd IMP::isd::MultivariateFNormalSufficient::solve | ( | Eigen::MatrixXd | B | ) | const | 
Solve for Sigma*X = B, yielding X.