目录:

  1. 皮尔逊相关系数简介
  2. 皮尔逊相关系数
    1.1. 皮尔逊相关系数注意事项——要配合散点图
  3. 皮尔逊相关系显著性检验的条件
    2.1. Jarque-Bera检验 JB检验
    2.2. shapior-wilk 检验(matlab实现)
    2.3. Q-Q图
  4. 皮尔逊相关系数显著性检验方法
  5. 总结

0. 皮尔逊相关系数简介

相关系数是衡量两个数据相关关系的指标,两个数据相关在某种程度上可以帮助人们理解事物的变化规律。例如在商品推荐中,我们已知一个用户A的购买喜好,同时发现另一个用户B的购买数据和A相关性很高,那么我们可以根据A的喜好去给B推荐相关的产品,等等。皮尔逊相关系数(Pearson correlation coefficient)就是最为常用的用来衡量两个变量线性相关关系的指标,有了指标就有评分的依据,然而评分多高代表二者相关,评分多低代表二者无关呢?为了回答这个问题,我们常把皮尔逊相关系数和显著性检验共同使用以评价是不是二者有明显的相关性。

1. 皮尔逊相关系数

对皮尔逊相关系数的理解可以从很多个角度来进行,有人从协方差矩阵的角度思考,有人从向量cosine夹角的角度思考,这几种方式只要能让你对皮尔逊相关有感性的理解就可以。我们假设两组数据X和Y,每个都包含n个元素,计算二者协方差的方法就可以记为


其中E(X)和E(Y)分别代表二者的期望,也就是平均值。我们看分子部分,在分子中,当总体的一个值小x比X的平均值大,而且小y也比Y的平均值大的时候,分子就是正的,或者二者都小于平均值的时候,分子也是正的。当二者不都大于或者小于平均值的时候,分子就是负的。这里我们就可以感性的理解,如果数据杂乱,正负抵消,那么这个协方差就很小,就谈不上二者相关;如果两个变量相关,整个协方差就是很大的正值或者负值。然而从这里,我们也看出一些问题,就是这里面二者都是带有量纲的数据,假如说x都是0.01左右的数据,y都是1000左右的数据,那么整个的协方差就很容易被这么大的y带跑偏,为了解决这个量纲的问题,我们就消除量纲,从而得到一个无量纲的量,也就是皮尔逊相关系数了。方法就是除以二者的方差(可以看作每个x和y都经历了减均值除方差的归一化操作,消除了量纲)


在matlab中只需要一行代码即可搞定,即:

r1=corr(x,y,'type','pearson');

得到的皮尔逊相关系数都是在-1到1之间的,其中接近于1说明二者正相关,接近于-1说明二者负相关,越接近于0就说明二者越不相关。为了感性的理解皮尔逊相关系数,我们有如下的图示,来说明不同的数据分布对应的皮尔逊相关系数的大小:

1.1. 皮尔逊相关系数注意事项——一定要配合散点图
为了说明皮尔逊相关系数的一些注意事项,我这里看下图,在下图的四个例子中,他们的相关系数都是一样的,左上角是一个正常的图,右上角明显符合二次函数的相关不符合线性相关,左下角存在一个噪声点,如果没有噪声点的存在将是很完美的相性相关,右下角同样存在离群点。这四个例子的皮尔逊相关系数完全一致,然而相关性千差万别,所以说我们在应用皮尔逊相关系数进行相关性判断的时候,一定要注意以下的几点:

  • 皮尔逊相关系数是用于衡量线性相关关系的,因此,在数据的分布不清楚的情况下,直接比较皮尔逊相关系数不能说明任何问题,就算是皮尔逊相关系数大(非线性相关也会使皮尔逊相关系数很大),也不能说明两个变量线性相关,我们必须画出散点图进行比较。
  • 如果二者确实是线性关系,则皮尔逊相关系数大,就说明了确实更加的线性相关。
  • 离群点对于皮尔逊相关系数的影响很大,可以根据情况思考是否要将其剔除。
  • 就算皮尔逊相关系数是0也不能说明其完全不相关,可能是非线性相关的。

(啥也说明不了,要你有何用!!!)所以我们要强调的是,在进行相关性的分析时一定要配合散点图,否则是无效的(扪心自问一下,是不是你也曾经犯过错误)。皮尔逊相关系数可以给我们提供一个数值,有一些做法是将其分级,比如说大小在多少之间就代表其是相关的(比如0.7到1及-0.7到-1代表很相关),等等。然而这样的比较虽然有一定的说服力但是始终有些主观。所以在一些应用中,比起直接比较相关性大小,往往我们更关注皮尔逊相关系数的显著性,所以这里就踏上了显著性检验之旅。

回顾一下,我们这里主要讲解了皮尔逊相关系数的计算方法和一种理解方法,同时强调了皮尔逊相关系一定要和散点图共使用。

2. 皮尔逊相关系显著性检验的条件
皮尔逊相关系数的假设检验部分用到的是t检验的方法,而t检验的方法需要样本满足一定的前提条件,所以为了检验皮尔逊相关系数是否说明了显著性的相性相关,我们首先要检验数据是否满足了可以进行显著性检验的条件,这里条件有三条

  • 实验数据是成对的来自正态分布的总体。正态性是很多需要假设检验的前提条件,但是在很多的应用中并没有被严格的验证数据是否满足正态分布。
  • 实验数据之间的差距不能太大。我们之前降到了一些噪声点,离群的点是会对其相关系数造成较大影响的,所以说需要对噪声点进行修正或者剔除
  • 每组样本都是独立抽样的。独立抽样也是很多假设检验的前提条件。

2.1. Jarque-Bera检验 JB检验
JB检验是依靠偏度(skewness)和峰度(kurtosis)进行正态性检验的,需要注意的是JB检验适合大样本的情况,即我们的样本数量大于30的时候才可以使用。我们知道标准的正态分布是一个草帽形状的(或者叫啥墨西哥什么帽形状的)当草帽的尖尖向x轴负方向偏就叫做正偏斜,x轴正方向就叫做负偏斜。草帽在y方向被压扁了就叫做平峰,草帽被拉长了就叫做尖峰。这就是偏度和峰度的粗糙解释。其中偏度的定义是:

在matlab中用

skewness(x);

来计算,其中正态分布的偏度为0。峰度的定义为:

在matlab中用kurtosis(x); 来计算,其中正太分布的峰度根据公式的不同,值分别为3或者0。Matlab是用第一种方法来计算的。

为了检验是否是满足正态分布,我们同样使用假设检验的方法,第一步就是构建统计量,JB统计量的构造方法如下:

有人证明出当我们的被验证数据是正态分布的话,那么我们的JB检验结果应该服从自由度为2的卡方分布。在这里,我们首先进行原假设和备择假设的设定,原假设H0:被检测数据符合正态分布,备择假设是H1:被检测数据不符合正态分布。在matlab中,我们使用jbtest命令来对进行jb检测,语句为

[h,p] = jbetst(x,alpha);

其中阿尔法的常见用值为0.05。所以大家也不需要自己计算偏度和峰度啥的。当结果h为1的时候,我们拒绝原假设的说法,接受备择假设的说法;当h为0的时候,我们没有理由拒绝原假设。也就是说当h为0的时候我们就认为整个的数据还是满足正态分布的。

鉴于假设检验是数理统计中单独的一个大章节,一句话两句话讲不明白,我们这里就主要强调如何正确的使用,就不详细讲如何进行假设检验了。

2.2. shapior-wilk 检验(matlab实现)
Shapior 检验主要应用于小样本的情况下,即在样本量在3到50之间的时候进行的检验。同样的也是一个假设检验的过程,在matlab中需要调用统计学工具箱才可以进行进一步的验证,没有直接的指令。matlab中可以使用以下的方法进行shapior-wilk检验,首先要在命令行汇总输入如下的代码,其中A就是要检测的数据,可以自由变更,注意是命令窗口,command window:

A = [1,2,2.5,3,3.5,4];
S = sym(A);
note = mupad % 在这里会跳出一个mupad窗口,先最小化,然后输入下面的setVar
setVar(note, 'S', S)

上面四行输入后,在mupad里面输入如下的指令即可得到最终的结果

S2:=coerce(S,DOM_LIST)
B:=stats::swGOFT(S2[1])

在结果中p值就是我们的求得的p值,如果p值小于0.05,则说明拒绝原假设,也就是数据不符合正态分布,而如果大于0.05就说明没有理由拒绝数据符合正态分布。

注:这里的mupad其实和mathematica类似(我之前的博客写过mathematica的教程,说实话写这个博客之前我真的不知道有mupad的存在,好惭愧),每条指令前面都有一个系统给的方括号(不要自己打方括号),如果方括号不小心被自己删除了可以点击菜单栏中的insert->calculation添加,一行写完打回车,命令就会自动执行,一次貌似只能一行,如果执行有问题(一般不会有问题),也可以点击菜单栏中的Notebook->evaluate 运行。

2.3. Q-Q图
Q-Q图也是一种检验方法,但是较为主观,而且要求数据量很大,通常可能需要有大于一百个数据,做出的图像才好看。Q-Q图的使用方法很简单就是qqplot(x); 其中x为你要进行检验的数据。画出图像如大部分点都在对角线上就可以说明数据符合正态分布。

回顾一下,在进行皮尔逊相关系数的显著性检验之前,我们需要验证数据是否满足正态性(除非和正太分布差距特别大,否则一般都是满足的)。我们这里讲解了三种正态性的验证方法,一个是Jarque-Bera检验 JB检验,一个是shapior-wilk 检验,一个是Q-Q图检验,值得注意的是,当样本量在3-50之间对的时候,应当使用shapior-wilk检验,当数据量大于30可以使用JB检验,当数据量更大可以使用JB检验或者Q-Q图检验,但还是更加推荐使用JB检验。

3. 皮尔逊相关系数显著性检验方法

当被检测样本基本满足皮尔逊相关检测的条件的时候,我们就可以皮尔逊相关系数进行显著性检验了。这里又有很多数学家证明了皮尔逊相关系数可以构建一个统计量t,构造方式如下:

其中n为样本的数量,r就是我们计算得到的皮尔逊相关系数,这个统计量被证明是符合自由度为t-2的t分布的。这里我们就可以使用t分布进行相关性的检验。

在t检验中,我们的原假设H0:r=0,即没有线性相关关系,备择假设H1:r不等于0,即存在线性相关关系。
我们首先计算出上面构造出来的t值,之后在matlab中使用如下的公式计算p值,即

p = (1-tcdf(t,n-2))*2  %双侧需要乘2

其中n为样本数量。当p值小于0.01,在99%的置信水平上拒绝原假设,接受备择假设,(即,样本有线性相关性,而且非常显著);当p小于0.05的时候,在95%的置信水平上拒绝原假设,接受备择假设(即,样本有线性相关性,较为显著)。当然,在一些时候也可以将p值放宽到0.1,毕竟对于这个阈值的界定方式还存在着一定的争议,但是绝大部分的研究还是以0.05为分界的。

回顾一下,这里介绍了在满足正态性条件的情况下,如何对皮尔逊系数进行显著性的检验。

4. 总结
皮尔逊系数很常用,如何用对要留心,用时搭配散点图,不能随便比数值。假设检验服人心,用前一定要小心,满足条件再进行,否则用错哭唧唧。

数学建模方法——皮尔逊相关系数及其显著性检验 (Pearson correlation coefficient)相关推荐

  1. 相关性分析:皮尔逊相关系数——python实现Pearson correlation coefficient

    一.理论知识: 要理解 Pearson 相关系数,首先要理解协方差(Covariance).协方差表示两个变量 X,Y 间相互关系的数字特征,其计算公式为: 当 Y = X 时,即与方差相同.当变量 ...

  2. 数学建模之皮尔逊相关系数

    皮尔逊相关系数 ☆这里的相关系数只是用来衡量两个变量线性相关程度的指标:也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何. 一.定义和表达式 二.容易忽视和犯错 ...

  3. 皮尔逊相关系数 Pearson correlation coefficient

    在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coeff ...

  4. 数学建模方法 —【06】拟合方法之curve_fit

    拟合方法--curve_fit 今天来说说curve_fit拟合方法,在前面的博文中,我也介绍了其他两种拟合方法以及拟合优度的计算,有兴趣的读者可以看看: 数学建模方法-[03]拟合优度的计算(pyt ...

  5. 数学建模matlab imread,《matlab数学建模方法与实践》第三章 数据的处理

    3.1数据的获取 3.1.1从Excel中读取数据 a= xlsread('路径',n(sheetn),'A(n-1):Bn(读入的数据范围)') 3.1.2从TXT中读取数据 3.1.2.1.1 同 ...

  6. ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient)、Spearman相关系数的简介、案例应用之详细攻略

    ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient).Spearman相关系数的简介.案例应用之详细攻略 目录 PPMCC皮尔逊相关系数的简介 ...

  7. matlab数学建模方法与实践 笔记1:快速入门

    入门案例 1.导入数据 2.数据探索 3.多项式拟合 4.发布功能 5.数据类型 6.全部代码 代码在Cha2文件夹下 1.导入数据 2.数据探索 3.多项式拟合 4.发布功能 5.数据类型 6.全部 ...

  8. 数学建模方法-灰色预测法

    一.引言 大家好,今天是第三天,前两篇博文用到的数学建模方法应用的数学知识还比较少,在这一篇章,需要的数学知识变多了,大致需要一些高等数学中导数部分的知识,大家如果忘了的话记得自己去补哈.好言归正传, ...

  9. Python--如何计算皮尔逊相关系数(Pearson correlation coefficient)

    皮尔逊系数 在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation ...

  10. matlab快速入门案例及常用技巧 | 《matlab数学建模方法与实践(第三版)》学习笔记

    目录 快速入门案例: 解决流程: 具体实现: 一.获取数据 二.数据探索和建模 三.分享结果 常用技巧 一.常用标点功能 二.常用操作指令 三.指令编辑操作键 四.matlab数据类型 五.开发模式 ...

最新文章

  1. 深入redis内部之redis启动过程之一
  2. 面对这么多困境,梅耶尔还能怎么应对?
  3. python短信发送查询数据库结果_向Django数据库中的每个号码发送短信
  4. class参数传入 python_小白学 Python 爬虫(20):Xpath 进阶
  5. jdk8之lambda
  6. python的easygui_Python的easygui学习
  7. 清华大学计算机组成与体系结构,清华大学出版社-图书详情-《计算机组成与体系结构(第2版)》...
  8. bisect git 使用_让 Git Bisect 帮助你
  9. c语言中math的库函数,C语言中math.h库中的常用函数
  10. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_1 今日课程内容介绍
  11. oracle服务器cpu 100,Oracle数据库服务器CPU一直100%怎么处理-sql优化方面
  12. php换脸,PS换脸术 蒙娜丽莎图片换脸教程
  13. 微分几何II 曲率
  14. matlab图像自动标注程序,基于MATLAB/GUI的图像语义自动标注系统
  15. 云原生背景运维转型之SRE实践
  16. jquery ready vue_我在切换路由器$(document).ready()失败时在模板中使用vue-router和jQuery...
  17. 磊科路由器如何设置虚拟服务器,nw711磊科路由器设置桥接步骤图文
  18. 应用于供氧中心的医用气体监测系统ZWACS医气监控
  19. 半导体ISO26262功能安全合规性开发的3P法则(下)
  20. 存储器空间或者桌面堆_这款 Windows 桌面整理软件,让电脑充满高级感!

热门文章

  1. Linux 基础知识
  2. 正好股票开户指数大跌分解比较严重
  3. 积极响应号召,ModStart支持用户主动注销账号功能
  4. VDN互联网数据驱动 FOR PB
  5. R语言怎么写积分_2020年上海居住证积分申请表怎么填?个人履历该怎么写?—积分落户服务站...
  6. matlab机器学习之knn算法实例
  7. Linux brctl 命令,虚拟网络设备 LinuxBridge 管理工具
  8. LeaRun.Java可视化拖拽编辑的BI大屏
  9. (二)数据库索引优化
  10. Mac安装Docker及使用