在 c++ 中是否有类似 python 中的 "corr" 的函数来查找列的成对相关性?在与 Armadillo/Mlpack 一起工作时?
Is there a function like "corr" from python, in c++ for finding the pairwise correlation of columns? Whilst working with Armadillo/Mlpack?
我需要获取此代码 (Python)
corr = X.corr()
进入 C++,其中 X 是一个巨大的数据集,在我的例子中超过 10x10,大约接近 450x30。所以有很多列来计算相关性。
我正在使用 C++ 和 Armadillo/Mlpack.
我在 Whosebug 上找到了另一个有人推荐使用的解决方案
arma::vec result = arma::conv(a, arma::reverse(a));
因为这应该与 MATLAB 中的 xcorr 相同,本质上与此相同?
https://numpy.org/doc/stable/reference/generated/numpy.correlate.html
但我需要这个:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.corr.html
对于数据中的每个 #i 和 #i+1 列,是否可以选择 运行 在循环中执行“xcorr”解决方案?
或者有没有更好的方法在 C++ 中使用与“.corr”相同的方法?
提前致谢。
我最喜欢使用 R 中的犰狳,因此它被包装在 R 上下文中,尽管简单的示例函数是纯 C++。正如文档将告诉您的那样,'matrix on matrix' 也可以返回各自的成对相关性。在这里,为简单起见,它只是两列。不出所料,R 得到相同的数字:
代码(带R胶和例子)
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
double mycorr(const arma::vec & x, const arma::vec & y) {
return arma::as_scalar(arma::cor(x, y));
}
/*** R
set.seed(123)
x <- rnorm(100)
y <- rnorm(100)
cor(x,y)
mycorr(x,y)
*/
输出(来自 R)
> Rcpp::sourceCpp("~/git/Whosebug/68749299/answer.cpp")
> set.seed(123)
> x <- rnorm(100)
> y <- rnorm(100)
> cor(x,y)
[1] -0.0495321
> mycorr(x,y)
[1] -0.0495321
>
我需要获取此代码 (Python)
corr = X.corr()
进入 C++,其中 X 是一个巨大的数据集,在我的例子中超过 10x10,大约接近 450x30。所以有很多列来计算相关性。 我正在使用 C++ 和 Armadillo/Mlpack.
我在 Whosebug 上找到了另一个有人推荐使用的解决方案
arma::vec result = arma::conv(a, arma::reverse(a));
因为这应该与 MATLAB 中的 xcorr 相同,本质上与此相同? https://numpy.org/doc/stable/reference/generated/numpy.correlate.html
但我需要这个:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.corr.html
对于数据中的每个 #i 和 #i+1 列,是否可以选择 运行 在循环中执行“xcorr”解决方案?
或者有没有更好的方法在 C++ 中使用与“.corr”相同的方法?
提前致谢。
我最喜欢使用 R 中的犰狳,因此它被包装在 R 上下文中,尽管简单的示例函数是纯 C++。正如文档将告诉您的那样,'matrix on matrix' 也可以返回各自的成对相关性。在这里,为简单起见,它只是两列。不出所料,R 得到相同的数字:
代码(带R胶和例子)
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
double mycorr(const arma::vec & x, const arma::vec & y) {
return arma::as_scalar(arma::cor(x, y));
}
/*** R
set.seed(123)
x <- rnorm(100)
y <- rnorm(100)
cor(x,y)
mycorr(x,y)
*/
输出(来自 R)
> Rcpp::sourceCpp("~/git/Whosebug/68749299/answer.cpp")
> set.seed(123)
> x <- rnorm(100)
> y <- rnorm(100)
> cor(x,y)
[1] -0.0495321
> mycorr(x,y)
[1] -0.0495321
>