IMP  2.0.0
The Integrative Modeling Platform
IMP::isd::MultivariateFNormalSufficient Class Reference

MultivariateFNormalSufficient. More...

#include <IMP/isd/MultivariateFNormalSufficient.h>

+ Inheritance diagram for IMP::isd::MultivariateFNormalSufficient:

Public Member Functions

 MultivariateFNormalSufficient (const MatrixXd &FX, double JF, const VectorXd &FM, const MatrixXd &Sigma, double factor=1)
 
 MultivariateFNormalSufficient (const VectorXd &Fbar, double JF, const VectorXd &FM, int Nobs, const MatrixXd &W, const MatrixXd &Sigma, double factor=1)
 
double density () const
 
double evaluate () const
 
double evaluate_derivative_factor () const
 
VectorXd evaluate_derivative_FM () const
 
MatrixXd evaluate_derivative_Sigma () const
 
MatrixXd evaluate_second_derivative_FM_FM () const
 
MatrixXd evaluate_second_derivative_FM_Sigma (unsigned l) const
 
MatrixXd evaluate_second_derivative_Sigma_Sigma (unsigned k, unsigned l) const
 
double get_factor () const
 
VectorXd get_Fbar () const
 
VectorXd get_FM () const
 
MatrixXd get_FX () const
 
double get_jacobian () const
 
double get_mean_square_residuals () const
 
double get_minus_exponent () const
 
double get_minus_log_jacobian () const
 
double get_minus_log_normalization () const
 
MatrixXd get_Sigma () const
 
double get_Sigma_condition_number () const
 
VectorXd get_Sigma_eigenvalues () const
 
MatrixXd get_W () const
 
void reset_flags ()
 
void set_factor (double f)
 
void set_Fbar (const VectorXd &f)
 
void set_FM (const VectorXd &f)
 
void set_FX (const MatrixXd &f)
 
void set_jacobian (double f)
 
void set_minus_log_jacobian (double f)
 
void set_Sigma (const MatrixXd &f)
 
void set_use_cg (bool use, double tol)
 
void set_W (const MatrixXd &f)
 
MatrixXd solve (MatrixXd B) const
 
void stats () const
 
- Public Member Functions inherited from IMP::base::Object
virtual void clear_caches ()
 
virtual IMP::base::VersionInfo get_version_info () const =0
 Get information about the module and version of the object.
 
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...
 

Detailed Description

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} \operatorname{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 $$ 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\).

Note
This is an implementation of the matrix normal distribution for F(X), where rows of F(X) are independent and homoscedastic (they represent repetitions of the same experiment), but columns might be correlated, though the provided matrix.
For now, F must be monotonically increasing, so that J(F) > 0. The program will not check for that. Uses a Cholesky ( \(LDL^T\)) decomposition of \(\Sigma\), which is recomputed when needed.
All observations must be given, so if you have missing data you might want to do some imputation on it first.
References:
  • Multivariate Likelihood: Box and Tiao, "Bayesian Inference in Statistical Analysis", Addison-Wesley publishing company, 1973, pp 423.
  • Factorization in terms of sufficient statistics: Daniel Fink, "A Compendium of Conjugate Priors", online, May 1997, p.40-41.
  • Matrix calculations for derivatives: Petersen and Pedersen, "The Matrix Cookbook", 2008, matrixcookbook.com
  • Useful reading on missing data (for the case of varying Nobs): Little and Rubin, "Statistical Analysis with Missing Data", 2nd ed, Wiley, 2002, Chapters 6,7 and 11.

Definition at line 88 of file MultivariateFNormalSufficient.h.

Constructor & Destructor Documentation

IMP::isd::MultivariateFNormalSufficient::MultivariateFNormalSufficient ( const MatrixXd &  FX,
double  JF,
const VectorXd &  FM,
const MatrixXd &  Sigma,
double  factor = 1 
)
  Initialize with all observed data
Parameters
[in]FXF(X) matrix of observations with M columns and N rows.
[in]JFJ(F) determinant of Jacobian of F with respect to observation matrix X.
[in]FMF(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 VectorXd &  Fbar,
double  JF,
const VectorXd &  FM,
int  Nobs,
const MatrixXd &  W,
const MatrixXd &  Sigma,
double  factor = 1 
)
  Initialize with sufficient statistics
Parameters
[in]Fbar: M-dimensional vector of mean observations.
[in]JFJ(F) determinant of Jacobian of F with respect to observation matrix X.
[in]FMF(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)

The documentation for this class was generated from the following file: