-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsample_mniw.h
101 lines (77 loc) · 2.7 KB
/
sample_mniw.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef _SAMPLE_MNIW_H_
#define _SAMPLE_MNIW_H_
#include <RcppArmadillo.h>
using namespace Rcpp;
using namespace arma;
arma::field<arma::mat> rmniw1(
const arma::mat& A, // KxN
const arma::mat& V, // KxK
const arma::mat& S, // NxN
const double& nu // scalar
);
double sample_m (
const arma::mat& aux_A, // KxN
const arma::mat& aux_V, // KxK
const double& aux_s, // scalar
const double& aux_w, // scalar
const Rcpp::List& prior
);
double sample_w (
const arma::mat& aux_V, // KxK
const Rcpp::List& prior
);
double sample_s (
const arma::mat& aux_A, // KxN
const arma::mat& aux_V, // KxK
const arma::mat& aux_Sigma, // NxN
const double& aux_m, // scalar
const Rcpp::List& prior
);
double log_kernel_nu (
const double& aux_nu, // scalar
const arma::cube& aux_Sigma_c_cpp, // NxNxC
const arma::cube& aux_Sigma_c_inv, // NxNxC
const arma::mat& aux_Sigma, // NxN
const double& prior_lambda, // scalar
const int& C, // scalar
const int& N, // scalar
const int& K // scalar
);
double cov_nu (
const double& aux_nu,
const int& C,
const int& N
);
arma::vec sample_nu (
double& aux_nu, // scalar
double& adaptive_scale,
const arma::cube& aux_Sigma_c_cpp, // NxNxC
const arma::cube& aux_Sigma_c_inv, // NxNxC
const arma::mat& aux_Sigma, // NxN
const Rcpp::List& prior,
const int& iteration, // MCMC iteration passed
const arma::vec& adptive_alpha_gamma // 2x1 vector with target acceptance rate and step size
);
arma::mat sample_Sigma (
const arma::cube& aux_Sigma_c_inv, // NxNxC
const double& aux_s, // scalar
const double& aux_nu, // scalar
const Rcpp::List& prior
);
arma::field<arma::mat> sample_AV (
const arma::cube& aux_A_c_cpp, // KxNxC
const arma::cube& aux_Sigma_c_inv, // NxNxC
const double& aux_s, // scalar
const double& aux_m, // scalar
const double& aux_w, // scalar
const Rcpp::List& prior
);
arma::field<arma::mat> sample_A_c_Sigma_c (
const arma::mat& Y_c, // T_cxN
const arma::mat& X_c, // T_cxK
const arma::mat& aux_A, // KxN
const arma::mat& aux_V, // KxK
const arma::mat& aux_Sigma, // NxN
const double& aux_nu // scalar
);
#endif // _SAMPLE_MNIW_H_