| Stan Math Library 2.12.0 reverse mode automatic differentiation

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

factor_cov_matrix.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_FUN_FACTOR_COV_MATRIX_HPP
2 #define STAN_MATH_PRIM_MAT_FUN_FACTOR_COV_MATRIX_HPP
3
4 #include <stan/math/prim/mat/fun/Eigen.hpp>
5 #include <stan/math/prim/mat/fun/factor_U.hpp>
6 #include <cstddef>
7
8 namespace stan {
9 namespace math {
10
23 template<typename T>
24 bool
25 factor_cov_matrix(const Eigen::Matrix
26 <T, Eigen::Dynamic, Eigen::Dynamic>& Sigma,
27 Eigen::Array<T, Eigen::Dynamic, 1>& CPCs,
28 Eigen::Array<T, Eigen::Dynamic, 1>& sds) {
29 size_t K = sds.rows();
30
31 sds = Sigma.diagonal().array();
32 if ( (sds <= 0.0).any() ) return false;
33 sds = sds.sqrt();
34
35 Eigen::DiagonalMatrix<T, Eigen::Dynamic> D(K);
36 D.diagonal() = sds.inverse();
37 sds = sds.log(); // now unbounded
38
39 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> R = D * Sigma * D;
40 // to hopefully prevent pivoting due to floating point error
41 R.diagonal().setOnes();
42 Eigen::LDLT<Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> > ldlt;
43 ldlt = R.ldlt();
44 if (!ldlt.isPositive())
45 return false;
46 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> U = ldlt.matrixU();
47 factor_U(U, CPCs);
48 return true;
49 }
50
51 }
52
53 }
54
55 #endif
factor_U.hpp
stan
Definition: log_sum_exp.hpp:8
stan::math::factor_cov_matrix
bool factor_cov_matrix(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &Sigma, Eigen::Array< T, Eigen::Dynamic, 1 > &CPCs, Eigen::Array< T, Eigen::Dynamic, 1 > &sds)
This function is intended to make starting values, given a covariance matrix Sigma.
Definition: factor_cov_matrix.hpp:25
stan::math::factor_U
void factor_U(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &U, Eigen::Array< T, Eigen::Dynamic, 1 > &CPCs)
This function is intended to make starting values, given a unit upper-triangular matrix U such that U...
Definition: factor_U.hpp:27
Eigen.hpp

[ Stan Home Page ] © 2011–2016, Stan Development Team.