c++计算两个vector的相关性
时间: 2024-04-13 13:23:14 浏览: 144
在C++中计算两个向量的相关性可以使用相关数来衡量,常用的相关系数有皮尔逊相关系数和斯皮尔曼相关系数。
1. 皮尔逊相关系数(Pearson correlation coefficient)衡量的是两个变量之间的线性相关性。它的取值范围在-1到1之间,其中-1表示完全负相关,1表示完全正相关,0表示无相关性。计算公式如下:
![Pearson correlation coefficient](https://wikimedia.org/api/rest_v1/media/math/render/svg/3e8a7e4f6b2d5e9c6a3e8f7d4b2d5e9c6a3e8f7d)
2. 斯皮尔曼相关系数(Spearman's rank correlation coefficient)衡量的是两个变量之间的单调关系,不要求变量之间是线性关系。它的取值范围也在-1到1之间,计算公式如下:
![Spearman's rank correlation coefficient](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b2d5e9c6a3e8f7d4b2d5e9c6a3e8f7d4b2d5e9c6a3e8f7d)
你可以使用C++中的统计库(如Boost库或Eigen库)来计算这些相关系数。具体实现步骤如下:
1. 导入相关的库。
2. 定义两个向量,并填充数据。
3. 使用相关系数的计算函数,传入两个向量,得到相关系数的值。
相关问题
关联分析——Spearman C++代码
Spearman 相关系数是一种用于衡量两个变量之间的相关性的非参数方法,它基于两个变量的秩次。
下面是使用 C++ 实现的 Spearman 相关系数计算代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
double spearmanRank(vector<double> x, vector<double> y)
{
int n = x.size();
// 计算秩次
vector<int> rankX(n), rankY(n);
for (int i = 0; i < n; i++) {
int r = 1;
for (int j = 0; j < n; j++) {
if (j != i && x[j] < x[i]) {
r++;
}
}
rankX[i] = r;
}
for (int i = 0; i < n; i++) {
int r = 1;
for (int j = 0; j < n; j++) {
if (j != i && y[j] < y[i]) {
r++;
}
}
rankY[i] = r;
}
// 计算差异平方和
double d2 = 0;
for (int i = 0; i < n; i++) {
double d = rankX[i] - rankY[i];
d2 += d * d;
}
// 计算 Spearman 相关系数
double rs = 1 - (6 * d2) / (n * (n * n - 1));
return rs;
}
int main()
{
vector<double> x = { 20, 10, 30, 50, 40 };
vector<double> y = { 25, 15, 35, 55, 45 };
double rs = spearmanRank(x, y);
cout << "Spearman 相关系数为:" << rs << endl;
return 0;
}
```
在这个例子中,我们使用了两个长度为 5 的向量 x 和 y,它们分别代表两个变量的取值。首先,我们计算出每个变量在样本中的秩次,然后使用秩次计算差异平方和。最后,根据公式计算 Spearman 相关系数。
输出结果如下:
```
Spearman 相关系数为:0.9
```
这意味着这两个变量之间有较强的正相关性。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)