10 #include <Eigen/Dense>
16 inline std::vector<double>
17 convert_vec(
const Eigen::VectorXd& x)
19 std::vector<double> xx(x.size());
21 Eigen::VectorXd::Map(&xx[0], x.size()) = x;
36 wdm(
const Eigen::VectorXd& x,
37 const Eigen::VectorXd& y,
39 Eigen::VectorXd weights = Eigen::VectorXd(),
40 bool remove_missing =
true,
41 std::vector<int> seeds = std::vector<int>())
43 return wdm(utils::convert_vec(x),
44 utils::convert_vec(y),
46 utils::convert_vec(weights),
63 inline Eigen::MatrixXd
64 wdm(
const Eigen::MatrixXd& x,
66 Eigen::VectorXd weights = Eigen::VectorXd(),
67 bool remove_missing =
true,
68 std::vector<int> seeds = std::vector<int>())
72 throw std::runtime_error(
"x must have at least 2 columns.");
74 Eigen::MatrixXd ms = Eigen::MatrixXd::Identity(d, d);
75 for (
size_t i = 0; i < d; i++) {
76 for (
size_t j = i + 1; j < d; j++) {
77 ms(i, j) =
wdm(utils::convert_vec(x.col(i)),
78 utils::convert_vec(x.col(j)),
80 utils::convert_vec(weights),
83 if (methods::is_chatterjee(method)) {
84 ms(j, i) =
wdm(utils::convert_vec(x.col(j)),
85 utils::convert_vec(x.col(i)),
87 utils::convert_vec(weights),
Weighted dependence measures.
Definition: wdm.hpp:19
double wdm(std::vector< double > x, std::vector< double > y, std::string method, std::vector< double > weights=std::vector< double >(), bool remove_missing=true, std::vector< int > seeds=std::vector< int >())
Definition: wdm.hpp:49