Stan Math Library  2.11.0
reverse mode automatic differentiation
cov_matrix_constrain_lkj.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_FUN_COV_MATRIX_CONSTRAIN_LKJ_HPP
2 #define STAN_MATH_PRIM_MAT_FUN_COV_MATRIX_CONSTRAIN_LKJ_HPP
3 
8 
9 namespace stan {
10 
11  namespace math {
12 
32  template <typename T>
33  Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
34  cov_matrix_constrain_lkj(const Eigen::Matrix<T, Eigen::Dynamic, 1>& x,
35  size_t k) {
36  size_t k_choose_2 = (k * (k - 1)) / 2;
37  Eigen::Array<T, Eigen::Dynamic, 1> cpcs(k_choose_2);
38  int pos = 0;
39  for (size_t i = 0; i < k_choose_2; ++i)
40  cpcs[i] = corr_constrain(x[pos++]);
41  Eigen::Array<T, Eigen::Dynamic, 1> sds(k);
42  for (size_t i = 0; i < k; ++i)
43  sds[i] = positive_constrain(x[pos++]);
44  return read_cov_matrix(cpcs, sds);
45  }
46 
71  template <typename T>
72  Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
73  cov_matrix_constrain_lkj(const Eigen::Matrix<T, Eigen::Dynamic, 1>& x,
74  size_t k,
75  T& lp) {
76  size_t k_choose_2 = (k * (k - 1)) / 2;
77  Eigen::Array<T, Eigen::Dynamic, 1> cpcs(k_choose_2);
78  int pos = 0;
79  for (size_t i = 0; i < k_choose_2; ++i)
80  cpcs[i] = corr_constrain(x[pos++], lp);
81  Eigen::Array<T, Eigen::Dynamic, 1> sds(k);
82  for (size_t i = 0; i < k; ++i)
83  sds[i] = positive_constrain(x[pos++], lp);
84  return read_cov_matrix(cpcs, sds, lp);
85  }
86 
87  }
88 
89 }
90 
91 #endif
T positive_constrain(const T x)
Return the positive value for the specified unconstrained input.
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > read_cov_matrix(const Eigen::Array< T, Eigen::Dynamic, 1 > &CPCs, const Eigen::Array< T, Eigen::Dynamic, 1 > &sds, T &log_prob)
A generally worse alternative to call prior to evaluating the density of an elliptical distribution...
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > cov_matrix_constrain_lkj(const Eigen::Matrix< T, Eigen::Dynamic, 1 > &x, size_t k)
Return the covariance matrix of the specified dimensionality derived from constraining the specified ...
T corr_constrain(const T x)
Return the result of transforming the specified scalar to have a valid correlation value between -1 a...

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