皮尔逊相关系数及代码实现(C语言+MATLAB)

这篇具有很好参考价值的文章主要介绍了皮尔逊相关系数及代码实现(C语言+MATLAB)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

皮尔逊相关系数,常用于度量两个变量X和Y之间的相关性(线性相关)。本文通过介绍其概念定义、数学公式,进而引出其适用场合,并基于MATLAB和C语言对皮尔逊相关系数分别进行了代码实现


一、皮尔逊相关系数

1. 概念定义

在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs),是用于度量两个变量X和Y之间的相关性(线性相关),其值介于-1与1之间

系数的值为1意味着X和Y可以很好的由直线方程来描述,所有的数据点都很好的落在一条直线上,且Y随着X的增加而增加;
系数的值为−1意味着所有的数据点都落在直线上,且Y随着X的增加而减少;
系数的值为0意味着两个变量之间没有线性关系。

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

2. 数学公式

两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商,计算公式如下:
皮尔逊相关系数及代码实现(C语言+MATLAB)
其中, X ‾ \overline{X} X Y ‾ \overline{Y} Y为样本平均值;

3. 适用情景

当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:
1)两个变量之间是线性关系,都是连续数据
2)两个变量的总体是正态分布,或接近正态的单峰分布。
3)两个变量的观测值是成对的,每对观测值之间相互独立

二、代码实现

1. MATLAB实现

代码如下:

% 该函数用于计算皮尔逊相关系数  
% 输入:X, Y;一维向量(维数相等)
% 输出:coeff 
function coeff = myPearson(X, Y)  

if length(X) ~= length(Y)
   error('两个数值数列的维数不相等');  
   return;  
end  
  
fenzi = sum(X.*Y) - (sum(X)*sum(Y)) / length(X);  
fenmu = sqrt((sum(X.^2) - sum(X)^2 / length(X))*(sum(Y.^2) - sum(Y)^2 / length(X)));  
coeff = fenzi / fenmu;  

end 

2. C语言实现

代码如下:

float myPearson(int16_t* X, int16_t* Y, uint16_t len)
{
   uint16_t i;
   float fenzi   = 0;
   float fenmu_X = 0;
   float fenmu_Y = 0;

   float average_X = 0;
   float average_Y = 0;
   
   for (i = 0; i < len; i++)
   {
      average_X += X[i];
      average_Y += Y[i];
   }
   average_X /= len;
   average_Y /= len;
   
   for (i = 0; i < len; i++)
   {
      fenzi   += (*X - average_X)*(*Y - average_Y);
      fenmu_X += (*X - average_X)*(*X - average_X);
      fenmu_Y += (*Y - average_Y)*(*Y - average_Y);
      X++;
      Y++;
   }
   float Pearson = SFAbsData_f32(fenzi/(sqrt(fenmu_X)*sqrt(fenmu_Y)));
   
   return Pearson;
}

总结

1)皮尔逊相关系数,用于度量两个变量X和Y之间的线性相关性,其值介于-1与1之间;
2)通常情况下,将皮尔逊相关系数的绝对值划分为5个范围以判断变量的相关强度
3)两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商
4)皮尔逊相关系数有其适用场合,选用时需注意;

以上便是本文的全部内容,希望本文能对大家理解和运用皮尔逊相关系数有所帮助。
当然,本文内容如有错误或不严谨之处,也恳请大家及时指出,谢谢!文章来源地址https://www.toymoban.com/news/detail-463943.html

到了这里,关于皮尔逊相关系数及代码实现(C语言+MATLAB)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模.皮尔逊相关系数

    一.前言 皮尔逊相关系数说白了就是一次函数中的斜率k,反应两个变量之间的关系,与斜率不同的地方在于其数值在1和-1之间,越接近于1,则说明两个变量之间是完全正向的线性关系;越接近于-1,说明两个变量之间是完全负向的线性关系。(本文是作者在学习清风的建模网课

    2024年02月01日
    浏览(33)
  • 数学建模.皮尔逊相关系数假设检验

    一、步骤 查表找临界值 二、更好的方法 三、使用条件 作图可以使用spss 这个图对不对还不好说,因为还没进行正态分布的验证 四、正态分布验证 (1)JB检验 所以之前的数据的那个表是错的,因为不满足正态分布 (2)Shapiro-wilk检验 看最后一列,为p值,由此观之,不符合原

    2024年01月18日
    浏览(35)
  • 数学建模学习笔记-皮尔逊相关系数

    内容:皮尔逊相关系数 一.概念:是一个和线性线关的相关性系数 1.协方差概念: 协方差受到量纲的影响因此需要剔除 2.相关性的误区 根据这个结论,我们在计算该系数之前需要确定是否为线性函数 二.相关性的计算 1.Matlab:只含相关性不含假设检验:下面第三大点讲解假设

    2024年02月20日
    浏览(31)
  • 【数学建模】皮尔逊相关系数和假设检验

    为了说明两组数据之间的相关性,例如身高与50米跑步的成绩,我们引入相关系数,本文先介绍person相关系数以及在特定情况下的使用方法。 Person相关系数在 满足特定条件下 用来衡量两个变量之间的相关性。 在正式介绍person相关系数之前,我们先引入协方差的概念 协方差是

    2024年02月09日
    浏览(28)
  • [皮尔逊相关系数corrwith]使用案例:电影推荐系统

    协同过滤算法用于发现用户与物品之间的相关性,主要有两种:基于用户的和基于物品的。 基于用户: 用户1购买了物品A、B、C、D,并给了好评;而用户2也买了A、B、C,那么认为用户1和用户2是同类型用户,也可以把D推荐给用户2。 基于物品: 物品A和物品B都被用户1、2、

    2024年02月10日
    浏览(29)
  • 使用Python计算皮尔逊相关系数,并用热力图展示

           由于是自我练习的笔记,所以这里先通过Pandas随机生成一部分时序数据,然后再调用corr()函数来计算皮尔逊相关系数,并把计算结果先展示输出出来,最后通过热力图的方式把计算结果展现出来。    下面是开发的具体过程: 1、首先导入需要的算法包 2、生成数据(

    2024年02月09日
    浏览(23)
  • 概率论:方差、标准差、协方差、皮尔逊相关系数、线性相关

    一个随机变量,的值的变化程度可以用方差计算:  ;其中 是期望。 另外一种等价表达式:      其中为均值,N为总体例数 我们举个例子: 服从均一分布,取值为0.1,0.2,0.3,0.4,0.5 ,每种值的概率是20%,可算出期望是0.3,那么方差就是: 标准差是方差的平方根,随机

    2024年02月09日
    浏览(34)
  • 数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

    目录 前言 一、基本概念及二者适用范围比较 1、什么是相关性分析 2、什么是相关系数 3、适用范围比较 二、相关系数 1.皮尔逊相关系数(Pearson correlation) 1、线性检验 2、正态检验 3、求相关系数 2、斯皮尔曼相关系数(Spearman correlation) 1、秩相关系数 2、使用条件 3、求相

    2024年01月17日
    浏览(30)
  • 数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)

           选取2000-2017年x省碳排放量为训练集,2018-2022x省碳排放量作为测试集,以此来预测2023-2026年x省碳排放量。设置训练次数为 1000次,学习速率为0.2;对该训练集BP神经网络模型拟合后模型的训练样本、验 证样本和测试样本的均方误差分别是0.000012、0.0023、0.0042,整体的误

    2024年02月08日
    浏览(25)
  • 【生物信息学】单细胞RNA测序数据分析:计算亲和力矩阵(基于距离、皮尔逊相关系数)及绘制热图(Heatmap)

      计算亲和力矩阵,一般按照以下步骤进行: 导入数据:加载单细胞RNA测序数据集。 数据预处理:根据需要对数据进行预处理,例如 基因过滤 、 归一化 等。 计算亲和力:使用合适的算法(例如, 欧几里德距离 、 Pearson相关系数 或其他距离/相似度度量)计算样本之间的

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包