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

这篇具有很好参考价值的文章主要介绍了【数模系列】02_三大相关系数+Python代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、皮尔逊相关系数

在统计学中,皮尔逊相关系数,是用于度量两个变量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表示协方差,分母表示标准差(以两个变量为例):

c o v ( 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相关系数可用于衡量变量之间的线性相关程度,但有一定的使用条件:

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

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

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

3、Python绘图

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

python斯皮尔曼矩阵,【数模比赛】,python

import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
myfont=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'为数据保留两位有效数字
fig
fig.get_figure().savefig('dingding_corr.png')#保留图片

python斯皮尔曼矩阵,【数模比赛】,python

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns  # 可视化w

inputdata = 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')#保留图片

python斯皮尔曼矩阵,【数模比赛】,python

二、斯皮尔曼秩相关系数

斯皮尔曼的计算公式为:

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

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

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

python斯皮尔曼矩阵,【数模比赛】,python

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

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

  • 如果数据是连续的、正态分布的,并且是线性的,优先使用皮尔逊相关系数。当然,也可以使用斯皮尔曼,但效率没有皮尔逊高(因为要进行排序)。
    python斯皮尔曼矩阵,【数模比赛】,python

  • 如果前面几个条件有一个不满足,则使用斯皮尔曼相关系数;皮尔逊相关系数适用于线性关系,而斯皮尔曼相关系数适用于单调关系,线性与单调的一个区别是,线性关系的斜率是固定的。
    python斯皮尔曼矩阵,【数模比赛】,python

  • 如果数据看上去,既有点像线性关系,又有点像单调关系,那么使用斯皮尔曼相关系数;皮尔逊相关系数使用元数据进行计算的,而斯皮尔曼相关系数是基于秩计算的。

python斯皮尔曼矩阵,【数模比赛】,python

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

python斯皮尔曼矩阵,【数模比赛】,python

三、肯德尔秩相关系数

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

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

  • 无序的,比如性别(男、女)、血型(A、B、O、AB);
  • 有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。

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

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

python斯皮尔曼矩阵,【数模比赛】,python文章来源地址https://www.toymoban.com/news/detail-708466.html

到了这里,关于【数模系列】02_三大相关系数+Python代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 相关性分析-Pearson, Spearman, Kendall 三大相关系数+绘制热力图

    Pearson, Spearman, Kendall 三类相关系数是统计学上的三大重要相关系数,表示两个变量之间变化的趋势方向和趋势程度。下面对这三类系数做简单的介绍。

    2024年04月09日
    浏览(47)
  • 相关系数python实现

    R的值在-1和1之间,包括-1和1。 公式1: 其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差。 或者 公式2: 可以转换

    2024年02月05日
    浏览(34)
  • python计算相关系数R

    方法一: 方法二 参考:https://mp.weixin.qq.com/s/nABJf4WBR4Y4oEZiYKPK4Q

    2024年02月13日
    浏览(36)
  • python 皮尔森相关系数(Pearson)

    皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数。记为r,用来反映两个变量X和Y的线性相关程度,r 值介于-1到1之间,绝对值越大表明相关性越强。 适用连续变量。 相关系数与相关程度一般划分

    2024年02月02日
    浏览(39)
  • python数据处理——计算相关系数矩阵(Spearman)

    计算相关系数矩阵,原始数据如下: 计算相关系数矩阵代码如下: 计算结果保存到工作表,打开结果如下:  

    2024年02月16日
    浏览(44)
  • 相关分析——皮尔逊相关系数、t显著性检验及Python实现

    (1)衡量事物之间或称变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程。 (2)比如家庭收入和支出、一个人所受教育程度与其收入、子女身高和父母身高的相关性。 (1)衡量变量之间相关程度的一个量值。 (2)相关系数r的数值范围是在-1到+1之间。 (

    2024年02月03日
    浏览(51)
  • 使用Python计算皮尔逊相关系数,并用热力图展示

           由于是自我练习的笔记,所以这里先通过Pandas随机生成一部分时序数据,然后再调用corr()函数来计算皮尔逊相关系数,并把计算结果先展示输出出来,最后通过热力图的方式把计算结果展现出来。    下面是开发的具体过程: 1、首先导入需要的算法包 2、生成数据(

    2024年02月09日
    浏览(33)
  • 【python】求多变量/样本(矩阵)之间的相关性系数

    创作日志: Pearson或Spearson代表的是两个变量之间的相关性,因此一般输入是两个向量(vector),那么当我们有多个变量时,怎样计算他们两两之间的相关性系数呢?得到的correlation matrix各元素代表的又是什么意思呢? 举例: 矩阵A有两个样本:a1 与 a2,矩阵B有两个样本:b1 与

    2024年02月06日
    浏览(38)
  • 肯德尔(Kendall)相关系数概述及Python计算例

    目录 1. 何谓相关(correlation)? 2. 肯德尔相关  3. 肯德尔相关的假设 4. 计算公式及代码示例 4.1 Tau-a 4.2  Tau-b                  相关是指一种双变量分析(bi-variate analysis)技术,用于分析两个(随机)变量之间相互关联的强度和方向。相关系数的值域范围为[-1,1],其中绝

    2024年02月19日
    浏览(40)
  • python opencv 图片缺陷检测(讲解直方图以及相关系数对比法)

    2.1灰度转换(将原图和要检测对比的图分开灰度化) 灰度化的作用是因为后面的直方图比较需要以像素256为基准进行相关性比较 2.2 直方图计算(结果其实是二维的图表–用画图的方式展示) 第一个参数: 必须为列表[],哪怕只有一个图片 ,image输入图像 channels::传入图像的

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包