皮尔逊相关系数(Pearson Correlation Coefficient)
理解皮尔逊相关系数的,并了解其数学本质和含义
皮尔逊相关系数的百度百科定义: 在统计学中,皮尔逊相关系数( 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到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)相关系数并称为统计学三大相关系数。
- spearman和kendall属于等级相关系数亦称为“秩相关系数”,是反映等级相关程度的统计分析指标。
- 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)相关推荐
- ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient)、Spearman相关系数的简介、案例应用之详细攻略
ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient).Spearman相关系数的简介.案例应用之详细攻略 目录 PPMCC皮尔逊相关系数的简介 ...
- ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介、案例应用(与spearman相关系数对比及其代码实现)之详细攻略
ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介.案例应用(与spearman相关系数对比及其代码实现)之详细攻略 目录 PCC/PPMCC皮尔 ...
- 皮尔逊相关系数 Pearson correlation coefficient
在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coeff ...
- Python--如何计算皮尔逊相关系数(Pearson correlation coefficient)
皮尔逊系数 在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation ...
- 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)
Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度. 用于总体(population)时记作ρ (rh ...
- 相关性分析:皮尔逊相关系数——python实现Pearson correlation coefficient
一.理论知识: 要理解 Pearson 相关系数,首先要理解协方差(Covariance).协方差表示两个变量 X,Y 间相互关系的数字特征,其计算公式为: 当 Y = X 时,即与方差相同.当变量 ...
- 计算相关系数 皮尔逊相关系数 Pearson、Spearman
数据探索 计算相关系数 为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系统来进行相关分析. 在二元变量的相关分析过程中比较常用的有Pearson相关系数,Spearman秩相关系数和判定系 ...
- 皮尔森(Pearson correlation coefficient)相关系数—统计学三大相关系数之一
概述 皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数.记为r,用来反 ...
- 如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?
https://www.zhihu.com/question/19734616?sort=created
- 机器学习笔记——皮尔逊相关系数
在学到相关性度量的时候,有一个系数用来度量相似性(距离),这个系数叫做皮尔逊系数,其实在统计学的时候就已经学过了,只是当时不知道还能用到机器学习中来,这更加让我觉得机器学习离不开统计学了. 皮尔逊相关 ...
最新文章
- R创建分类变量(categorical variable)
- 小程序 - 效果处理之技巧合集(更新中...)
- 引用Drawable颜色常数及背景色
- opencv图像深度-1_OpenCV空间AI竞赛之旅(第1部分-初始设置+深度)
- 阿里查出售假店主并索赔140万,这次是大数据帮的忙
- JDBC分页查询及实现
- MyEclipse2015 Web项目转Maven项目
- 文件上传java前端怎么写_做一个文件上传,前端是ajax提交数据后台是java,这个错误怎么办...
- php array_diff 用法
- UE4 虚幻引擎,LOD设置
- NetApp 数据存储解决方案
- Python爬虫:爬取网站视频
- 未明学院:被腾讯群面虐完后,我找到了未来的方向…
- 为何说 a16z 是一家通过 VC 获利的媒体公司?
- WebStorm下载与安装2022版教程注册码WebStorm使用配置
- 我的世界电脑服务器无法显示皮肤,我的世界电脑版网易服务器怎么用皮肤 | 手游网游页游攻略大全...
- Phonetic SymbolsRules of Pronunciation
- 【tips】ORM - SQLAlchemy操作MySQL数据库
- 新年伊始,25岁“天才少年”曹原再发一篇Nature!9个月的第三篇Nature!
- [第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇]Android 应用程序定制方案(生活类)...