文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【数模系列】02_三大相关系数+Python代码

2023-09-18 11:36

关注

文章目录

一、皮尔逊相关系数

在统计学中,皮尔逊相关系数,是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间,其绝对值越大说明该两个变量越相关。

注意:该系数只能评价两个线性变量之间的相关性。

1、公式推导

①首先由Pearson相关系数的定义可知,
ρ x , y = c o v ( X , Y ) σ X σ Y ρ_{x,y}=\frac{cov(X,Y)}{σ_X σ_Y} ρx,y=σXσYcov(X,Y)

②这里,分子cov表示协方差,分母表示标准差(以两个变量为例):

cov(X,Y)= ∑ i = 1 n ( X i − X ‾ ) ( Y i − Y ‾ ) n − 1 cov(X,Y)=\frac{\sum_{i=1}^n(X_i-\overline{X})(Y_i-\overline{Y})}{n-1} cov(X,Y)=n1i=1n(XiX)(YiY)

③皮尔逊相关系数:
ρ= ∑ i = 1 N ( x i − x ‾ ) ( y i − y ‾ ) [ ∑ i = 1 N ( x i − x ‾ ) 2 ∑ i = 1 N ( y i − y ‾ ) 2 ] 1 2 ρ=\frac{\sum_{i=1}^N(x_i-\overline{x})(y_i-\overline{y})}{[\sum_{i=1}^N(x_i-\overline{x})^2\sum_{i=1}^N(y_i-\overline{y})^2]^{\frac{1}{2}}} ρ=[i=1N(xix)2i=1N(yiy)2]21i=1N(xix)(yiy)

2、使用条件

Pearson相关系数可用于衡量变量之间的线性相关程度,但有一定的使用条件:

在计算皮尔逊相关系必须用spss画出各个变量之间的散点图(相关性可视化)。当然也可以用其他软件,如excel,matlab。若两个变量的散点图呈线性的关系,则可以用皮尔逊相关系数。反之,则不能用。

然后再判断总体数据是否满足正态分布。例如:如果你要比较5个变量两两的相关性,这时就要进行判断,方法有很多种,后面会提到。

注意:若以上条件有一不满足,则不能用皮尔逊相关系数。总之,要用皮尔逊相关系数必须满足连续数据,正态分布,线性关系。

3、Python绘图

data.corr(method="pearson")#皮尔逊系数

在这里插入图片描述

import seaborn as snsimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontPropertiesmyfont=FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=40)sns.set(font=myfont.get_name(), color_codes=True)#corr = df.corr(method='pearson')  # 使用皮尔逊系数计算列与列的相关性#corr = df.corr(method='kendall')  # 肯德尔秩相关系数#corr = df.corr(method='spearman') # 斯皮尔曼秩相关系数data_corr = data.corr(method='pearson')  # 使用皮尔逊系数计算列与列的相关性plt.figure(figsize=(20,15))#figsize可以规定热力图大小fig=sns.heatmap(data_corr,annot=True,fmt='.2g',annot_kws={'fontsize': 20})#annot为热力图上显示数据;fmt='.2g'为数据保留两位有效数字figfig.get_figure().savefig('dingding_corr.png')#保留图片

在这里插入图片描述

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns  # 可视化winputdata = pd.read_csv('chazhi55.csv')plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号df = inputdata.copy()_, ax = plt.subplots(figsize=(13, 10))  # 分辨率1200×1000#corr = df.corr(method='pearson')  # 使用皮尔逊系数计算列与列的相关性#corr = df.corr(method='kendall')  # 肯德尔秩相关系数corr = df.corr(method='spearman') # 斯皮尔曼秩相关系数# 上面三行代表了不同的计算方法,需要哪个就把其他的备注就好cmap = sns.diverging_palette(220, 10, as_cmap=True)  # 在两种HUSL颜色之间制作不同的调色板。图的正负色彩范围为220、10,结果为真则返回matplotlib的colormap对象_ = sns.heatmap(    corr,  # 使用Pandas DataFrame数据,索引/列信息用于标记列和行    cmap=cmap,  # 数据值到颜色空间的映射    square=True,  # 每个单元格都是正方形    cbar_kws={'shrink': .9},  # `fig.colorbar`的关键字参数    ax=ax,  # 绘制图的轴    annot=True,  # 在单元格中标注数据值    annot_kws={'fontsize': 20})  # 热图,将矩形数据绘制为颜色编码矩阵plt.show()plt.get_figure().savefig('斯皮尔曼秩相关系数热力图.png')#保留图片

在这里插入图片描述

二、斯皮尔曼秩相关系数

斯皮尔曼的计算公式为:

p=1− 6 ∑ d i 2 n 3 − n ,其中di表示顺序的差值,n表示数据个数。 p=1-\frac{6\sum d^2_i}{n^3-n} ,其中di表示顺序的差值,n表示数据个数。 p=1n3n6di2,其中di表示顺序的差值,n表示数据个数。

斯皮尔曼相关系数被定义成等级之间的皮尔逊相关系数。等级按照从小到大排序。

满足皮尔逊相关系数的使用条件和检验条件则使用皮尔逊相关系数。
只要其中一个条件不满足则使用斯皮尔曼等级相关系数。另外两个定序数据之间的相关系数求解也用斯皮尔曼。斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广。

在这里插入图片描述

1、如何选择皮尔逊和斯皮尔曼

皮尔逊相关系数和斯皮尔曼相关系数:

在这里插入图片描述

data.corr(method="spearman")#斯皮尔曼秩相关系数

在这里插入图片描述

三、肯德尔秩相关系数

肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。

分类变量可以理解成有类别的变量,可以分为:

通常需要求相关性系数的都是有序分类变量。举个例子。比如评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否一致,这时候就可以使用肯德尔相关性系数进行衡量。

data.corr(method="kendall")#肯德尔秩相关系数

在这里插入图片描述

来源地址:https://blog.csdn.net/wxfighting/article/details/126332939

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯