Pearson(皮尔逊)相关系数及MATLAB实现

本文介绍了相关系数的概念及其在衡量两个变量间关系强度的应用。详细解释了皮尔逊相关系数的计算方法,包括其适用条件及如何用Matlab进行实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数。

 

相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度。

 

如果有两个变量:X、Y,最终计算出的相关系数的含义可以有如下理解:

(1)、当相关系数为0时,X和Y两变量无关系。

(2)、当X的值增大(减小),Y值增大(减小),两个变量为正相关,相关系数在0.00与1.00之间。

(3)、当X的值增大(减小),Y值减小(增大),两个变量为负相关,相关系数在-1.00与0.00之间。

 

相关系数的绝对值越大,相关性越强,相关系数越接近于1或-1,相关度越强,相关系数越接近于0,相关度越弱。

通常情况下通过以下取值范围判断变量的相关强度:
相关系数     0.8-1.0     极强相关
                 0.6-0.8     强相关
                 0.4-0.6     中等程度相关
                 0.2-0.4     弱相关
                 0.0-0.2     极弱相关或无相关

 

 

Pearson(皮尔逊)相关系数

 

 

1、简介

 

皮尔逊相关也称为积差相关(或积矩相关)是英国统计学家皮尔逊于20世纪提出的一种计算直线相关的方法。

假设有两个变量X、Y,那么两变量间的皮尔逊相关系数可通过以下公式计算:

公式一:

皮尔逊相关系数计算公式

公式二:

皮尔逊相关系数计算公式

公式三:

皮尔逊相关系数计算公式

公式四:

皮尔逊相关系数计算公式

以上列出的四个公式等价,其中E是数学期望,cov表示协方差,N表示变量取值的个数。

 

 

2、适用范围

 

当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:

(1)、两个变量之间是线性关系,都是连续数据。

(2)、两个变量的总体是正态分布,或接近正态的单峰分布。

(3)、两个变量的观测值是成对的,每对观测值之间相互独立。

 

 

3、Matlab实现

 

皮尔逊相关系数的Matlab实现(依据公式四实现):

[cpp]  view plain copy
  1. function coeff = myPearson(X , Y)  
  2. % 本函数实现了皮尔逊相关系数的计算操作  
  3. %  
  4. % 输入:  
  5. %   X:输入的数值序列  
  6. %   Y:输入的数值序列  
  7. %  
  8. % 输出:  
  9. %   coeff:两个输入数值序列X,Y的相关系数  
  10. %  
  11.   
  12.   
  13. if length(X) ~= length(Y)  
  14.     error('两个数值数列的维数不相等');  
  15.     return;  
  16. end  
  17.   
  18. fenzi = sum(X .* Y) - (sum(X) * sum(Y)) / length(X);  
  19. fenmu = sqrt((sum(X .^2) - sum(X)^2 / length(X)) * (sum(Y .^2) - sum(Y)^2 / length(X)));  
  20. coeff = fenzi / fenmu;  
  21.   
  22. end %函数myPearson结束  

 

也可以使用Matlab中已有的函数计算皮尔逊相关系数:

[cpp]  view plain copy
  1. coeff = corr(X , Y);  

 

 

4、参考内容

 

http://zh.wikipedia.org/zh-cn/%E7%9B%B8%E5%85%B3

### MATLAB皮尔逊相关性分析生成热力图示例代码 在MATLAB中,可以使用`corr`函数计算皮尔逊相关系数矩阵,并通过`heatmap`函数绘制热力图。以下是一个完整的示例代码,展示如何生成皮尔逊相关性分析的热力图[^2]。 ```matlab % 生成多组示例数据 % 生成5组数据,每组数据包含100个随机数 data = randn(100, 5); % 设置变量之间的线性关系 data(:,2) = 2*data(:,1) + randn(100,1); % 第2列与第1列存在正相关关系 data(:,3) = -data(:,1) + randn(100,1); % 第3列与第1列存在负相关关系 data(:,4) = 0.5*data(:,2) + randn(100,1); % 第4列与第2列有一定相关性 data(:,5) = data(:,3) + data(:,4) + randn(100,1); % 第5列与第3、4列有关 % 计算皮尔逊相关系数矩阵 R_pearson = corr(data, 'Type', 'Pearson'); % 显示皮尔逊相关系数矩阵的热力图 figure; heatmap(R_pearson, 'Colormap', turbo, 'ColorbarVisible', 'on'); title('皮尔逊相关系数热力图'); xlabel('变量'); ylabel('变量'); set(gca, 'XData', 1:size(data,2), 'YData', 1:size(data,2)); % 添加注释以增强可读性 xticks(1:size(data,2)); yticks(1:size(data,2)); xticklabels({'Var1', 'Var2', 'Var3', 'Var4', 'Var5'}); yticklabels({'Var1', 'Var2', 'Var3', 'Var4', 'Var5'}); ``` 上述代码首先生成了一组具有特定线性关系的随机数据,然后使用`corr`函数计算皮尔逊相关系数矩阵。最后,利用`heatmap`函数绘制热力图,展示了变量间的线性相关性[^2]。 ### 注意事项 - `corr`函数用于计算相关系数矩阵,`Type`参数指定相关系数类型(如皮尔逊或斯皮尔曼)。 - `heatmap`函数提供了多种自定义选项,例如颜色映射(`Colormap`)、是否显示颜色条(`ColorbarVisible`)等。 - 可以通过`xticklabels`和`yticklabels`设置轴标签,增强热力图的可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值