首页 > 编程语言 >相关性系数及其python实现 (转)

相关性系数及其python实现 (转)

时间:2023-11-08 13:24:41浏览次数:48  
标签:系数 变量 python 相关系数 相关性 皮尔森 np

转自: https://www.cnblogs.com/sddai/p/10332573.html

参考文献:

1.python 皮尔森相关系数 https://www.cnblogs.com/lxnz/p/7098954.html

2.统计学之三大相关性系数(pearson、spearman、kendall) http://blog.sina.com.cn/s/blog_69e75efd0102wmd2.html

 

1. person correlation coefficient(皮尔森相关性系数)
    皮尔逊相关系数通常用r或ρ表示,度量两变量X和Y之间相互关系(线性相关)
(1)公式
   皮尔森相关性系数的值等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。
(2)数据要求
   a.正态分布
     它是协方差与标准差的比值,并且在求皮尔森相关性系数以后,通常还会用t检验之类的方法来进行皮尔森相关性系数检验,而t检验是基于数据呈正态分布的假设的。 
   b.实验数据之间的差距不能太大
     比如:研究人跑步的速度与心脏跳动的相关性,如果人突发心脏病,心跳为0(或者过快与过慢),那这时候我们会测到一个偏离正常值的心跳,如果我们把这个值也放进去进行相关性分析,它的存在会大大干扰计算的结果的。

 

 

 

重点关注第一个等号后面的公式,最后面的是推导计算,暂时不用管它们。看到没有,两个变量(X, Y)的皮尔森相关性系数(ρX,Y)等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。

公式的分母是变量的标准差,这就意味着计算皮尔森相关性系数时,变量的标准差不能为0(分母不能为0),也就是说你的两个变量中任何一个的值不能都是相同的。如果没有变化,用皮尔森相关系数是没办法算出这个变量与另一个变量之间是不是有相关性的。
 皮尔森相关系数(Pearson correlation coefficient)也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数。皮尔森相关系数是用来反映两个变量线性相关程度的统计量。相关系数用r表示,其中n为样本量,分别为两个变量的观测值和均值。r描述的是两个变量间线性相关强弱的程度。r的绝对值越大表明相关性越强。
简单的相关系数的分类
0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关

 r描述的是两个变量间线性相关强弱的程度。r的取值在-1与+1之间,若r>0,表明两个变量是正相关,即一个变量的值越大,另一个变量的值也会越大;若r<0,表明两个变量是负相关,即一个变量的值越大另一个变量的值反而会越小。r 的绝对值越大表明相关性越强,要注意的是这里并不存在因果关系。

(3)实例代码

x_simple = np.array([-2, -1, 0, 1, 2])
y_simple = np.array([4, 1, 3, 2, 0])
my_rho = np.corrcoef(x_simple, y_simple)

print(my_rho)

以下是输出相关矩阵。注意对角线上的那些,表明变量与自身的相关系数为1:

[[ 1.  -0.7]
[-0.7  1. ]]
2. spearman correlation coefficient(斯皮尔曼相关性系数)
    斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解
(1)公式 首先对两个变量(X, Y)的数据进行排序,然后记下排序以后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果。 (2)数据要求 因为是定序,所以我们不用管X和Y这两个变量具体的值到底差了多少,只需要算一下它们每个值所处的排列位置的差值,就可以求出相关性系数了 (3)实例代码
import pandas as pd
import numpy as np
  
#原始数据
X1=pd.Series([1, 2, 3, 4, 5, 6])
Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])
  
#处理数据删除Nan
x1=X1.dropna()
y1=Y1.dropna()
n=x1.count()
x1.index=np.arange(n)
y1.index=np.arange(n)
  
#分部计算
d=(x1.sort_values().index-y1.sort_values().index)**2
dd=d.to_series().sum()
  
p=1-n*dd/(n*(n**2-1))
  
#s.corr()函数计算
r=x1.corr(y1,method='spearman')
print(r,p) #0.942857142857143 0.9428571428571428

 



 3. kendall correlation coefficient(肯德尔相关性系数)

    肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。 
    分类变量可以理解成有类别的变量,可以分为:
    (1) 无序的,比如性别(男、女)、血型(A、B、O、AB); 
    (2) 有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。 
    通常需要求相关性系数的都是有序分类变量。
(1)公式 R=(P-(n*(n-1)/2-P))/(n*(n-1)/2)=(4P/(n*(n-1)))-1 注:设有n个统计对象,每个对象有两个属性。将所有统计对象按属性1取值排列,不失一般性,设此时属性2取值的排列是乱序的。设P为两个属性值排列大小关系一致的统计对象对数 (2)数据要求 类别数据或者可以分类的数据 (3)实例代码
import pandas as pd
import numpy as np
  
#原始数据
x= pd.Series([3,1,2,2,1,3])
y= pd.Series([1,2,3,2,1,1])
r = x.corr(y,method="kendall") #-0.2611165

 

标签:系数,变量,python,相关系数,相关性,皮尔森,np
From: https://www.cnblogs.com/zl1991/p/17817149.html

相关文章

  • Python 嵌入式版本安装 绿色版本
    自己封装python的代码库,用于处理log文件或者数据txt,csv文件。便于现场调试。1、下载嵌入式版本。Python嵌入版(绿色免安装版)安装教程_python绿色版免安装-CSDN博客https://www.python.org/ftp/python/3.12.0/python-3.12.0-embed-amd64.ziphttps://www.python.org/ftp/python......
  • Python 的 IDE —— `PyCharm`
    要退出解释器可以有以下两种方式:1>直接输入exitIn[1]:exit2>使用热键退出在IPython解释器中,按热键ctrl+d,IPython会询问是否退出解释器IPython的安装$sudoaptinstallipython1)集成开发环境(IDE)集成开发环境(IDE,IntegratedDevelopmentEnvironment)——集成了开发软件......
  • [-006-]-Python3+Unittest+Selenium Web UI自动化测试之悬浮窗口中的元素点击
     1.分析现状:PPT模板悬浮出现悬浮窗口悬浮窗口中分为4大类:PPT模板,PPT模板页,PPT关系图,PPT图表大类下存在小类点击可跳转但是此页面里还存在PPT模板下的总结汇报等此种情况的元素此情况如果仅用text定位是无法定位到的所以排除了text定位方式2.解决方法:首先我们看下悬浮窗......
  • Python用requests库采集充电桩LBS位置经纬度信息
    这是一个使用Python的requests库来爬取网页内容的示例。首先,我们需要导入requests库。然后,我们需要定义一个函数来处理请求。在这个函数中,我们需要设置爬虫IP服务器的URL和端口号,然后使用requests.get来获取网页内容。最后,我们需要解析网页内容,提取我们需要的信息。importrequests......
  • 基于图卷积网络的关系数据建模
    Abstract​ 知识图谱实现了各种各样的应用,包括问题回答和信息检索。尽管在创建和维护方面投入了巨大的努力,但即使是最大的知识库(如Yago、DBPedia或Wikidata)仍然不完整。我们介绍了关系图卷积网络(R-GCNs)并将其应用于两个标准的知识库补全任务:链接预测(恢复缺失的事实,即主题-预测-对......
  • 【Python&GIS】基于Python实现栅格转面、面转栅格(栅格、矢量互转)
    ​    各位好,我又来水文章了。最近因为同事在做生态服务相关的项目,需要对矢量数据进行操作,然后我就查了查相关资料,今天就和大家分享一下如何使用Python的GDAL库实现栅格转要素、要素转栅格(栅格、矢量互相转换)。其实我之前已经分享过栅格转面和计算要素面积的代码,大家感......
  • Python正则表达式入门
    正则表达式文本查找实例正则表达式主要是让使用者指定要查找的“模式”,而不是死板地查找固定的内容。不用正则表达式查找内容例如我们要查找长沙区号的电话号码,那么我们就需要知道特征,比如0731-84802110,0731是长沙的区号,紧接着就是-短横,然后是8位数字,那么我们就必须要符合这样......
  • Python - .egg 文件(python 蛋)
    Python什么是Python蛋(Pythonegg)在本文中,我们将介绍 Python 蛋(Python egg)是什么以及它在Python程序开发中的作用。Python蛋是一种用于管理和分发Python代码的软件包格式。它是一种打包、分发和安装Python代码的标准方式,允许开发者将其代码和相关依赖打包成一个可执......
  • mes登陆界面 python
    importtkinterastkfromtkinterimportmessageboxdefcheck_password():ifusername_entry.get()=="admin"andpassword_entry.get()=="password":messagebox.showinfo("登录成功","欢迎使用MES系统!")else:......
  • mes 数据库 python sqlite
    importsqlite3fromsqlite3importErrordefcreate_connection():conn=None;try:conn=sqlite3.connect(':memory:')#创建一个内存数据库。对于文件数据库,您可以使用文件路径。print(f'successfulconnectionwithsqliteversion{sqlite3.......