IMP logo
Public Member Functions | Static Public Member Functions
IMP::isd::MultivariateFNormalSufficient Class Reference

Detailed Description

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} \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.
+ Inheritance diagram for IMP::isd::MultivariateFNormalSufficient:

List of all members.

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
std::size_t __hash__ () const
virtual std::string get_type_name () const =0
 Return a string identifying the type of the object.
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.
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)

Static Public Member Functions

static
MultivariateFNormalSufficient
get_from (IMP::base::Object *o)

Additional Inherited Members

- Protected Member Functions inherited from IMP::base::Object
 Object (std::string name)

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)F(X) matrix of observations with M columns and N rows.
in)J(F) determinant of Jacobian of F with respect to observation matrix X.
in)F(M) mean vector $F(\mu)$ of size M.
in)Sigma : MxM variance-covariance matrix $\Sigma$.
in)sigma : 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)J(F) determinant of Jacobian of F with respect to observation matrix X.
in)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)sigma : multiplicative factor (default 1)

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

Generated on Tue May 22 2012 23:33:36 for IMP by doxygen 1.8.1