理解皮尔逊相关系数的,并了解其数学本质和含义

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

本文主要参考,搬运自:如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?
也可参考这个,其中有用python实现皮尔逊相关系数:关于相似性指标的讨论(皮尔逊相关系数)
此处有php版本的实现:Pearson correlation in PHP

简单的相关系数的分类:

  • 0.8-1.0 极强相关
  • 0.6-0.8 强相关
  • 0.4-0.6 中等程度相关
  • 0.2-0.4 弱相关
  • 0.0-0.2 极弱相关或无相关

皮尔逊相关系数理解有两个角度:


角度一:

  • 按照高中数学水平来理解,它很简单,可以看做将两组数据首先做Z分数处理之后,然后两组数据的乘积和除以样本数。
  • Z分数一般代表正态分布中,数据偏离中心点的距离.等于变量减掉平均数再除以标准差。(就是高考的标准分类似的处理)。
  • 标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方。

根据以上理解可将公式简化为:

皮尔逊相关系数就是两个变量协方差除以两个变量标准差乘积:

协方差是一个反映两个随机变量相关程度的指标(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但是协方差值的大小并不能很好地度量两个随机变量的关联程度,值的大小受到两个变量量纲的影响,不适合用于比较。为了更好的度量两个随机变量的相关程度,引入了Pearson相关系数,其在协方差的基础上除以了两个随机变量的标准差,消除了量纲的影响。

角度二:

按照大学的线性数学水平来理解,它比较复杂一点,可以看做是两组数据的向量夹角的余弦。

皮尔逊相关的约束条件:

  1. 两个变量间有线性关系
  2. 变量是连续变量
  3. 变量均符合正态分布,且二元分布也符合正态分布
  4. 两变量独立

在实践统计中,一般只输出两个系数,一个是相关系数,也就是计算出来的相关系数大小,在-1到1之间;另一个是独立样本检验系数,用来检验样本一致性。

示例(维基百科中的例子):

例如: 假设五个国家的国民生产总值分别是1、2、3、5、8(单位10亿美元),又假设这五个国家的贫困比例分别是11%、12%、13%、15%、18%。

创建2个向量(R语言):

x<-c(1,2,3,5,8)
y<-c(0.11,0.12,0.13,0.15,0.18)

按照维基的例子,应计算出相关系数为1出来。我们看看如何一步一步计算出来的。

  • x的平均数是:3.8
  • y的平均数是:0.138

所以:

sum((x-mean(x))*(y-mean(y)))=0.308

用数值带入计算就是:

(1-3.8)*(0.11-0.138) = 0.0784
(2-3.8)*(0.12-0.138) = 0.0324
(3-3.8)*(0.13-0.138) = 0.0064
(5-3.8)*(0.15-0.138) = 0.0144
(8-3.8)*(0.18-0.138) = 0.1764
0.0784+0.0324+0.0064+0.0144+0.1764 = 0.308

同理,分号下的是:

sum((x-mean(x))^2)=30.8
sum((y-mean(y))^2)= 0.00308

用数值带入计算就是:

(1-3.8)^2 = 7.84 #平方
(2-3.8)^2 = 3.24 #平方
(3-3.8)^2 = 0.64 #平方
(5-3.8)^2 = 1.44 #平方
(8-3.8)^2 = 17.64 #平方
7.84+3.24+0.64+1.44+17.64 = 30.8

同理,求得:

sum((y-mean(y))^2)= 0.00308

再开平方根,分别是:

30.8^0.5 = 5.549775
0.00308^0.5 = 0.05549775

用分子除以分母,就计算出最终结果:

0.308/(5.549775*0.05549775) = 1

示例(R语言中的例子):

R在这里下载: http://cran.r-project.org/bin/macosx/

假设有100人,一组数据是年龄,平均年龄是35岁,标准差是5岁;另一组数据是发帖数量,平均帖子数量是45份post,标准差是8份帖子。

假设这两组都是正态分布。我们来求这两者的皮尔逊相关系数,R脚本如下:

> x<-rnorm(n=100,mean=35,sd=5)  #创建一组平均数为35,标准差为5,样本数为100的随机数
> y<-rnorm(n=100,mean=45,sd=8) #创建一组平均数为45,标准差为8,样本数为100的随机数
>  cor.test(x,y,method="pearson") #计算这两组数的相关,并进行T检验

R语言的输出结果为:

Pearson's product-moment correlationdata:  x and y
t = -0.0269, df = 98, p-value = 0.9786
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:-0.1990316  0.1938019
sample estimates:cor
-0.002719791

当然,这里是随机数。也可以用非随机的验证一下计算。

机器学习中的应用


皮尔森(pearson)相关系数斯皮尔曼(spearman)相关系数肯德尔(kendall)相关系数并称为统计学三大相关系数。

  • spearmankendall属于等级相关系数亦称为“秩相关系数”,是反映等级相关程度的统计分析指标。
  • pearson是用来反应俩变量之间相似程度的统计量,在机器学习中可以用来计算特征与类别间的相似度,即可判断所提取到的特征和类别是正相关、负相关还是没有相关程度。

Pearson相关系数的计算方法有三种形式,如下:

python的代码实现公式3:

def pearson(vector1, vector2):n = len(vector1)#simple sumssum1 = sum(float(vector1[i]) for i in range(n))sum2 = sum(float(vector2[i]) for i in range(n))#sum up the squaressum1_pow = sum([pow(v, 2.0) for v in vector1])sum2_pow = sum([pow(v, 2.0) for v in vector2])#sum up the productsp_sum = sum([vector1[i]*vector2[i] for i in range(n)])#分子num,分母dennum = p_sum - (sum1*sum2/n)den = math.sqrt((sum1_pow-pow(sum1, 2)/n)*(sum2_pow-pow(sum2, 2)/n))if den == 0:return 0.0return num/den

python实现公式1:

# 计算特征和类的平均值
def calcMean(x,y):sum_x = sum(x)sum_y = sum(y)n = len(x)x_mean = float(sum_x+0.0)/ny_mean = float(sum_y+0.0)/nreturn x_mean,y_mean# 计算Pearson系数
def calcPearson(x,y):x_mean,y_mean = calcMean(x,y)   # 计算x,y向量平均值n = len(x)sumTop = 0.0sumBottom = 0.0x_pow = 0.0y_pow = 0.0for i in range(n):sumTop += (x[i]-x_mean)*(y[i]-y_mean)for i in range(n):x_pow += math.pow(x[i]-x_mean,2)for i in range(n):y_pow += math.pow(y[i]-y_mean,2)sumBottom = math.sqrt(x_pow*y_pow)p = sumTop/sumBottomreturn p# 计算每个特征的Pearson系数,返回数组
def calcAttribute(dataSet):  prr = []  n,m = shape(dataSet)    # 获取数据集行数和列数  x = [0] * n             # 初始化特征x和类别y向量  y = [0] * n  for i in range(n):      # 得到类向量  y[i] = dataSet[i][m-1]  for j in range(m-1):    # 获取每个特征的向量,并计算Pearson系数,存入到列表中  for k in range(n):  x[k] = dataSet[k][j]  prr.append(calcSpearman(x,y))  return prr

皮尔逊相关系数(Pearson Correlation Coefficient)相关推荐

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

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

  2. ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介、案例应用(与spearman相关系数对比及其代码实现)之详细攻略

    ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介.案例应用(与spearman相关系数对比及其代码实现)之详细攻略 目录 PCC/PPMCC皮尔 ...

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

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

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

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

  5. 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)

    Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度. 用于总体(population)时记作ρ (rh ...

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

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

  7. 计算相关系数 皮尔逊相关系数 Pearson、Spearman

    数据探索 计算相关系数 为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系统来进行相关分析. 在二元变量的相关分析过程中比较常用的有Pearson相关系数,Spearman秩相关系数和判定系 ...

  8. 皮尔森(Pearson correlation coefficient)相关系数—统计学三大相关系数之一

    概述 皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数.记为r,用来反 ...

  9. 如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?

    https://www.zhihu.com/question/19734616?sort=created

  10. 机器学习笔记——皮尔逊相关系数

    在学到相关性度量的时候,有一个系数用来度量相似性(距离),这个系数叫做皮尔逊系数,其实在统计学的时候就已经学过了,只是当时不知道还能用到机器学习中来,这更加让我觉得机器学习离不开统计学了. 皮尔逊相关 ...

最新文章

  1. R创建分类变量(categorical variable)
  2. 小程序 - 效果处理之技巧合集(更新中...)
  3. 引用Drawable颜色常数及背景色
  4. opencv图像深度-1_OpenCV空间AI竞赛之旅(第1部分-初始设置+深度)
  5. 阿里查出售假店主并索赔140万,这次是大数据帮的忙
  6. JDBC分页查询及实现
  7. MyEclipse2015 Web项目转Maven项目
  8. 文件上传java前端怎么写_做一个文件上传,前端是ajax提交数据后台是java,这个错误怎么办...
  9. php array_diff 用法
  10. UE4 虚幻引擎,LOD设置
  11. NetApp 数据存储解决方案
  12. Python爬虫:爬取网站视频
  13. 未明学院:被腾讯群面虐完后,我找到了未来的方向…
  14. 为何说 a16z 是一家通过 VC 获利的媒体公司?
  15. WebStorm下载与安装2022版教程注册码WebStorm使用配置
  16. 我的世界电脑服务器无法显示皮肤,我的世界电脑版网易服务器怎么用皮肤 | 手游网游页游攻略大全...
  17. Phonetic SymbolsRules of Pronunciation
  18. 【tips】ORM - SQLAlchemy操作MySQL数据库
  19. 新年伊始,25岁“天才少年”曹原再发一篇Nature!9个月的第三篇Nature!
  20. [第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇]Android 应用程序定制方案(生活类)...

热门文章

  1. 单片机----数码管(138译码器)显示日期
  2. 那本失去的《牛津高阶英汉双解词典》第6版 P2666-2665
  3. 本科课程【数字图像处理】实验1 - 腐蚀与膨胀
  4. 电子海图中的自动化关键技术研究
  5. Python爬虫爬取一页韩寒新浪博客
  6. 固定资产管理流程步骤
  7. 新版FMEA软件结构树图 免费申请试用(FMEAHunter)
  8. flex java blazeds_Flex同Java通信--BlazeDS入门图文详解(上)
  9. iOS开发从appStore下载历史版本
  10. 大数据之路阿里巴巴实践