三大相关性分析之python
目录
1.简介
2.Pearson相关系数
算法详解
程序实现
3.Kendall相关系数
算法详解
程序实现
4.Spearman相关系数
算法详解
程序实现
1.简介
相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。
常见的三种:Pearson相关系数,Kendall相关系数和Spearman相关系数。在这三大相关系数中,spearman和kendall属于等级相关系数亦称为“秩相关系数”,是反映等级相关程度的统计分析指标。最终选择哪种相关系数法,对比结果谁更符合预期效果。
2.Pearson相关系数
算法详解
按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦。
常见Pearson有以下几种公式,以下三种公式皆等价
皮尔森相关系数是衡量线性关联性的程度,公式定义为:两个连续变量(X,Y)的pearson相关性系数P(x,y)等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX,σY)。系数的取值总是在-1到1之间,接近0的变量被成为无相关性,接近1或者-1被称为具有正向或者负向强相关性。
那么皮尔森适用的条件是什么呢?
两个变量之间是线性关系,都是连续数据。
两个变量的总体是正态分布,或接近正态的单峰分布。
两个变量的观测值是成对的,每对观测值之间相互独立。
在满足这些条件后,接下来我们来看下程序,这三种相关系数均可用corr函数实现
①当X与Y是构成一个矩阵时,关于两者相关系数程序格式为
corr(X,Y,'type','Pearson')
②当X是由多个指标数据构成的矩阵时,关于指标间相关系数程序格式为
corr(X,'type','Pearson')
程序实现
数据如下:
代码如下:
#导入相关库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#导入数据
data=pd.read_excel(r'D:\桌面\xiangguan.xlsx')
# print(data)
#皮尔森相关系数
pearson=data.corr(method="pearson")
# print(pearson)
# data.corr(method="pearson")
#绘制热力图
sns.heatmap(pearson)
plt.show()
返回:
3.Kendall相关系数
Kendall相关系数:是一个用来测量两个随机变量相关性的统计值,在一个肯德尔检验是一个无参数假设检验,它使用计算而得的相关系数去检验两个随机变量的统计依赖性。肯德尔相关系数的取值范围在-1到1之间,当τ为1时,表示两个随机变量拥有一致的等级相关性;当τ为-1时,表示两个随机变量拥有完全相反的等级相关性;当τ为0时,表示两个随机变量是相互独立的。
算法详解
这里有三种公式计算肯德尔相关系数:
其中C表示XY中拥有一致性的元素对数(两个元素为一对);D表示XY中拥有不一致性的元素对数,N为元素个数。
注意:这一公式仅适用于集合X与Y中均不存在相同元素的情况(集合中各个元素唯一)
注意:这一公式适用于集合X或Y中存在相同元素的情况(当然,如果X或Y中均不存在相同的元素时,公式2便等同于公式1)
其中,C表示XY中拥有一致性的元素对数(两个元素为一对);D表示XY中拥有不一致性的元素对数。
N1、N2分别是针对集合X、Y计算的,将X中的相同元素分别组合成小集合,Y同理,s、t表示集合X、Y中拥有的小集合数(例如X包含元素:12 3 4 3 3 2,那么这里得到的s则为2,因为只有2、3有相同元素),Ui表示第i个小集合所包含的元素数,Vi同理。
①当X与Y是构成一个矩阵时,关于两者相关系数程序格式为
corr(X,Y,'type','Kendall')
②当X是由多个指标数据构成的矩阵时,关于指标间相关系数程序格式为
corr(X,'type','Kendall')
程序实现
数据如下:
代码如下:
#导入相关库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#导入数据
data=pd.read_excel(r'D:\桌面\xiangguan.xlsx')
#kendall相关系数
kendall=data.corr(method="kendall")
# print(kendall)
# data.corr(method="kendall")
#绘制热力图
sns.heatmap(kendall)
plt.show()
返回:
4.Spearman相关系数
Spearman相关系数:Spearman等级相关系数又称秩相关系数。利用两变量的秩次大小作线性相关分析,Spearman等级相关系数用来估计两个变量X、Y之间的相关性,其中变量间的相关性可以使用单调函数来描述。如果两个变量取值的两个集合中均不存在相同的两个元素,那么,当其中一个变量可以表示为另一个变量的很好的单调函数时(即两个变量的变化趋势相同),两个变量之间的ρ可以达到+1(绝对正相关)或-1(绝对负相关)
算法详解
Spearman相关系数可由以下两式计算
1、将集合x、y中的元素对应相减得到一个排行差分集合d,由排行差分集合d计算而得
2、由排行集合x、y计算而得(斯皮尔曼等级相关系数同时也被认为是经过排行的两个随即变量的皮尔逊相关系数,以下实际是计算x、y的皮尔逊相关系数)
以下是一个计算集合中元素排行的例子(仅适用于斯皮尔曼等级相关系数的计算)
这里需要注意:当变量的两个值相同时,它们的排行是通过对它们位置进行平均而得到的
适用范围:只需两个变量的观测值是成对的等级评定数据,或者是由连续变量观测数据转化得到的等级数据,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究
程序实现
数据如下:
代码如下:
#导入相关库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#导入数据
data=pd.read_excel(r'D:\桌面\xiangguan.xlsx')
#Spearman相关系数
spearman=data.corr(method="spearman")
# print(spearman)
# data.corr(method="spearman")
#绘制热力图
sns.heatmap(spearman)
plt.show()
返回:
三大相关性分析之python相关推荐
- python相关性分析_python实践统计学中的三大相关性系数,并绘制相关性分析的热力图...
本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/83547648 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...
- python分析学生成绩的相关性_学生文理科成绩相关性分析
为简化学生成绩模型,将传统的语文.数学.英语.历史.政治.物理.化学降为文科.理科两个维度方便分析,现分别进行文科内.理科内成绩的相关性分析. Python代码: # encoding=utf-8 注 ...
- Python数据相关性分析实践记录
数据分析是很多建模挖掘类任务的基础,也是非常重要的一项工作,在我之前的系列博文里面已经详细介绍过很多数据分析相关的内容和实践工作了,与之对应的最为常见的分析手段就是热力图可视化分析了,这里我简单给出来 ...
- Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)
Python使用matplotlib可视化相关性分析热力图图heatmap.使用seaborn中的heatmap函数可视化相关性热力图(Correllogram) 目录
- python可视化lassocv特征筛选之后的特征的相关性分析热力图
python可视化lassocv特征筛选之后的特征的相关性分析热力图 目录 python可视化lassocv特征筛选之后的特征的相关性分析热力图 #lassocv模型
- python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)
一.相关关系和相关系数 世上除了因果关系,还有相关关系. 有一个叫"相关系数"的指标来量化两个事物之间的相关程度. 其中相关系数用"r"表示,取值范围介于-1和 ...
- Python笔记-相关性分析(连续变量和分类变量)
概念 相关性分析:两个连续变量之间的关系检验. Pearson相关系数:衡量两个变量的线性相关关系: Spearman相关系数:衡量两个变量的线性相关关系,部分非线性的也可以衡量: Kendall相关 ...
- python相关性分析模型,相关性分析原理及Python实战
本文阅读时间大概在8分钟. 相关性分析 我们常说的相关性分析是分析两个变量之间线性相关程度的方法,其相关性强度的度量即为相关性系数.现实中很多事物间都拥有或多或少的相关性,例如,房屋面积对价格的影响, ...
- python分析数据的相关性_使用Python进行相关性分析
在数据分析时,经常会针对两个变量进行相关性分析.在 Python 中主要用到的方法是pandas中的corr()方法. corr():如果由数据框调用corr函数,那么将会计算每个列两两之间的相似度, ...
最新文章
- Scrapy框架中管道的使用
- 软件测试系列---软件测试基础
- Java技术分享:Lambda表达式之接口实例化
- 见与不见 ---仓央嘉措
- 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...
- javascript 学习教程
- fork source exec区别差异
- 解析http头部和c++string的高级使用技巧
- 903计算机技术综合基础,北大903计算机技术综合基础考研真题、资料、参考书
- 编译OpenJDK8:[HotspotWrapper.gmk:45:/cygdrive/e/hub/openjdk/jdk8u/build/windows-x86_64-normal-server-
- 百度飞桨螺旋桨赋能生物医药,推动AI技术在药物研发领域的探索应用
- c语言大作业宿舍管理系统,数据库大作业——学生宿舍管理系统
- linux修改分辨率的命令,linux修改分辨率(命令)
- fremaker遍历list_Freemarker中如何遍历List
- 算法工程师和python_Python工程师与人工智能算法工程师有什么区别?
- 微信小程序 常用组件
- 合宙air105上手记录
- hoolilaw案例分析:在美国如何治理扰民邻居
- Windows变慢原因分析及解决方法·系统篇
- maven 打包把依赖jar打进去
热门文章
- 爬虫之使用代理ip爬取
- php百度热门关键词小偷,猎马搜索源码(火端搜索改良版的)PHP百度+好搜小偷程序...
- 架构师进阶之路,JAVA架构师面试题
- MAB建模规范-Naming Conventions命名规范
- 你妈给你介绍对象,你说自己new一个 | 程序员母亲节快乐
- C语言实现strcpy和strcmp
- 精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
- syscall(SyS_gettid)是什么
- Java-对象头详解
- AVPro Movie Capture☀️一、一款U3D录屏插件介绍