Spearman 相关性分析法,以及python的完整代码应用

article/2025/9/20 11:55:00
  • Spearman 相关性分析法

简介

Spearman 相关性分析法是一种针对两个变量之间非线性关系的相关性计算方法,同时,它不对数据的分布进行假设。该方法的基本思想是将两个(也可以多个)变量的值进行排序,并计算它们之间的等级相关性(Spearman 相关系数)。Spearman 相关系数的范围在 -1 到 1 之间,取值为 -1 表示完全负相关,取值为 1 表示完全正相关,取值为 0 则表示两个变量之间没有相关性。

基础使用方法

代码示例

import pandas as pd
import seaborn as sns# 构造数据
data = {'x': [1, 3, 5, 7, 9],'y': [10, 8, 6, 4, 2]
}
df = pd.DataFrame(data)# Spearman 相关性分析
corr = df.corr(method='spearman')
print(corr)# 绘制相关系数热力图
sns.heatmap(corr, annot=True, cmap="YlGnBu")

参数说明

method: 相关性分析方法,这里需要指定为 spearman

函数返回值

sns.heatmap(corr, annot=True, cmap="YlGnBu") 会绘制出相关系数热力图,其中:

  • corr: 相关系数,即 Spearman 相关系数。
  • annot: 是否在每个方格中显示数值。
  • cmap: 颜色映射表。

引入多个变量

  • Spearman 相关性分析法通常用于分析两个变量之间的关系,但也可以通过计算多组变量之间的 Spearman 相关系数来分析它们之间的相互关系。对于多个变量之间的相关性分析,可以使用 pandas 中的 corr 函数计算这些变量之间的 Spearman 相关系数矩阵。然后,可以使用 seaborn 中的 heatmap 函数绘制相关系数矩阵的热力图。
import pandas as pd
import seaborn as sns# 构造数据
data = {'x1': [1, 3, 5, 7, 9],'x2': [10, 8, 6, 4, 2],'x3': [9, -7, 5.4, -3, 1],'x4': [2, 4, 6, 8, 10]
}
df = pd.DataFrame(data)# Spearman 相关性分析
corr = df.corr(method='spearman')
print(corr)# 绘制相关系数热力图
sns.heatmap(corr, annot=True, cmap="YlGnBu")

在上面的示例代码中,我们构造了一个包含了 4 个变量的数据集,包括 ‘x1’、‘x2’、‘x3’ 和 ‘x4’,然后使用 Spearman 相关性分析法计算了这些变量之间的 Spearman 相关系数矩阵,并绘制了相关系数的热力图。
结果图

生成热力图的保存

  • 要将生成的 Python 热力图保存为文件,需要使用 Matplotlib 库的 savefig() 函数:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt# 构造数据(可以使用你的数据)
data = {'x1': [1, 3, 5, 7, 9],'x2': [10, 8, 6, 4, 2],'x3': [9, -7, 5.4, -3, 1],'x4': [2, 4, 6, 8, 10]
}
df = pd.DataFrame(data)# Spearman 相关性分析
corr = df.corr(method='spearman')
print(corr)# 绘制相关系数热力图
sns.heatmap(corr, annot=True, cmap="YlGnBu")# 保存热力图
plt.savefig('heatmap.png', dpi=300, bbox_inches='tight')

在这个示例代码中,使用了 Matplotlib 的 savefig() 函数来保存热力图。这个函数的第一个参数是文件的名称和路径。在这个示例中,我们指定了 "heatmap.png" 作为文件名,并将热力图保存在当前工作目录下。dpi 参数设定每英寸像素点数(dots per inch),默认为 100,一般可以设定为 300,以获得更高的分辨率。bbox_inches='tight' 参数用来紧缩图像区域,以避免被裁剪,可以根据需要进行调整。

从excel读取数据

从 Excel 表中获取各个变量的数据,可以使用 Python 中的 Pandas 库。Pandas 可以读取 Excel 表中的数据,并将其转换为 Pandas DataFrame 对象,以便进行数据分析和可视化。

示例代码:

import pandas as pd
import seaborn as sns# 读取 Excel 表中的数据
df = pd.read_excel('data.xlsx')# Spearman 相关性分析
corr = df.corr(method='spearman')
print(corr)# 绘制相关系数热力图
sns.heatmap(corr, annot=True, cmap="YlGnBu")

其中,read_excel() 函数用于读取 Excel 文件,其参数指定 Excel 文件的名称和路径。默认情况下,它读取文件中的第一个工作表,并将其转换为 Pandas DataFrame 对象。如果 Excel 文件中有多个工作表,可以使用 sheet_name 参数将指定的工作表读取为 DataFrame 对象。

假设你的 Excel 文件中每一列数据代表一个变量,可以使用以下代码将 Excel 表中的每列数据分离成新的 DataFrame 对象:

# 将列分离成新的 DataFrame 对象
var_dict = {}
for column in df:var_dict[column] = df[column]# 输出各个变量的数据
for key, value in var_dict.items():print(key, value.tolist())

df[column] 返回一个 Pandas Series 对象,其中包含 Excel 表中某一列的数据。将其存储在一个 Python 的字典对象 var_dict 中,可以使用 tolist() 函数将其转换为 Python 列表以输出各个变量的数据。

然后,可以使用上面的示例代码,在所述的每一列中提取来自幻灯片的各个变量数据,并使用 Spearman 相关性分析法计算它们之间的关系,最后生成相关系数热力图。
较复杂的热力图


http://chatgpt.dhexx.cn/article/myMXC7eE.shtml

相关文章

统计学三大相关系数之斯皮尔曼(spearman)相关系数

斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解,这种表征形式就没有了求皮尔森相关性系数时那些限制。下面来看一下它的计算公式:…

相关系数(皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数)

目录 总体皮尔逊Person相关系数: 样本皮尔逊Person相关系数: 两点总结: 假设检验:(可结合概率论课本假设检验部分) 皮尔逊相关系数假设检验: 更好的方法:p值判断方法 皮尔逊相…

三大统计学相关系数(pearson、kendall、spearman)

一、皮尔逊相关系数 前边文章讲了很多了,这里不详细讲了,想了解的可以看这篇。 相似度计算(2)——皮尔逊相关系数 适用范围: 当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适…

Pearson相关系数和Spearman相关系数的区别

Pearson相关系数和Spearman相关系数的区别 1、协方差、相关系数2、Pearson相关系数3、Spearman相关系数3.1 定义3.2 什么时候用 4、两者的区别点4.1 线性相关与单调相关4.2 前提假设不同4.3 变量正态分布与否 5、实例展示6、参考资料 参考资料前两个博客讲解的非常详细&#xf…

Pearson相关系数, Spearman相关系数,Kendall相关系数

三个相关性系数(pearson, spearman, kendall)反应的都是两个变量之间变化趋势的方向以及程度,其值范围为-1到1,0表示两个变量不相关,正值表示正相关,负值表示负相关,值越大表示相关性越强。 1.…

数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

目录 前言 一、基本概念及二者适用范围比较 1、什么是相关性分析 2、什么是相关系数 3、适用范围比较 二、相关系数 1.皮尔逊相关系数(Pearson correlation) 1、线性检验 2、正态检验 3、求相关系数 2、斯皮尔曼相关系数(Spearman…

斯皮尔曼相关(Spearman correlation)系数概述及其计算例

目录 1. 什么是秩相关系数? 2. 单调性,monotonicity 3. 斯皮尔曼秩相关系数 4. 什么时候使用斯皮尔曼秩相关系数呢? 5. 斯皮尔曼秩相关系数计算公式 6. 斯皮尔曼秩相关系数计算例 6.1 手动计算 6.2 scipy函数 6.3 pandas corr() 6…

一文数学数模-相关性分析(二)斯皮尔曼相关(spearman)相关性分析一文详解+python实例代码

前言 相关性分析算是很多算法以及建模的基础知识之一了,十分经典。关于许多特征关联关系以及相关趋势都可以利用相关性分析计算表达。其中常见的相关性系数就有三种:person相关系数,spearman相关系数,Kendalls tau-b等级相关系数。各有各自的用法和使用场景。当然关于这以…

斯皮尔曼(spearman)相关系数python代码实现

简介 斯皮尔曼等级相关系数(简称等级相关系数,或称秩相关系数,英语:Spearmans rank correlation coefficient或Spearmans ρ)。一般用或者表示。它是衡量两个变量的相关性的无母数指标。它利用单调函数评价两个统计变量…

数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)

文章目录 引述一、斯皮尔曼相关系数(spearman)1.定义12.定义23.使用MATLAB计算spearman相关系数4. 斯皮尔曼相关系数的假设检验 二、斯皮尔曼相关系数与皮尔逊相关系数的比较 引述 经过之前几节的学习,我们了解并掌握了皮尔逊相关系数。在学…

Spearman相关系数的含义及适用场景

斯皮尔曼相关系数计算工具: https://geographyfieldwork.com/SpearmansRankCalculator.html斯皮尔曼相关系数的解释:https://statisticsbyjim.com/basics/spearmans-correlation/ 统计中,斯皮尔曼相关系数是皮尔逊相关系数的非参数替代方法。对遵循曲线、…

SPSS——相关分析——Spearman秩相关系数

简介 斯皮尔曼等级相关(Spearman’s correlation coefficient for ranked data)主要用于解决称名数据和顺序数据相关的问题。适用于两列变量,而且具有等级变量性质具有线性关系的资料。由英国心理学家、统计学家斯皮尔曼根据积差相关的概念推…

ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略

ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略 目录 Spearman相关系数(斯皮尔曼等级相关系数)的简介 (1)、Spearman相关系数(斯皮尔曼等级相关系数)的计算逻辑 Spearman相关系数(斯皮尔曼等级相关系数)的的案例应用 Spearman相…

斯皮尔曼spearman相关系数

斯皮尔曼spearman相关系数 斯皮尔曼相关系数定义: X和Y为两组数据,其斯皮尔曼(等级)相关系数: r s 1 − 6 ∑ i 1 n d i 2 n ( n 2 − 1 ) r_s1-\frac{6\sum\limits_{i1}^nd_i^2}{n(n^2-1)} rs​1−n(n2−1)6i1∑n​di2​​ …

数据库知识及数据库编程

数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数…

数据库编程与设计—SQL语言

一、SQL语言基础 1 什么是SQL 结构化查询语言结构化查询语言(Structured Query Language)简称 SQL(发音:sequal[si:kwəl]),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本…

JDBC --- Java的数据库编程

目录 🍈一、数据库编程的必备条件 🍉二、什么是 JDBC JDBC 的优势 🍊三、JDBC 使用流程 以及 常用接口和类的讲解 🍡0. 前置工作 🍭1. 引入依赖 🍬2. 数据库连接Connection 🍬3. 创建操…

数据库—mysql、数据库编程(API)

1. Linux平台准备 &#xff08;1&#xff09;安装SDK开发包的命令 sudo apt-get install libmysqlclient-dev &#xff08;2&#xff09;编译时需要链接的库:-lmysqlclient 2. mysql 的初始化和清理 #include <mysql/mysql.h> MYSQL mysql1; //创建句柄 mysql_init(&…

8.数据库编程

一、思维导图 二、基础梳理 1.游标的使用步骤 ① 声明游标。 用DECLARE语句为一条SELECT语句定义游标 EXEC SQL DECLARE<游标名> CURSOR FOR <SELECT语句>;使用T-SQL语句生成一个结果集&#xff0c;并且定义游标的特征&#xff0c;如游标中的记录是否可以修改。…

数据库编程----Mysql简介

数据库编程----Mysql简介 文章目录 一、什么是Mysql二、Mysq的l特点三、总结 一、什么是Mysql Mysql是一个关系型数据库管理系统二、Mysq的l特点 三、总结 Mysql是一个关系型的数据管理系统