斯皮尔曼相关系(Spearman‘s rank correlation coefficient)数理论及python代码

这篇具有很好参考价值的文章主要介绍了斯皮尔曼相关系(Spearman‘s rank correlation coefficient)数理论及python代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 引言

让我用一个简单的方式来解释斯皮尔曼相关系数的计算方法。

想象你和你的朋友们在玩一个游戏,比如赛跑。在比赛结束后,每个人都根据跑得快慢得到一个排名,跑得最快的得第一名,其次是第二名,以此类推。

现在,假设我们还知道每个人在学校的成绩排名。我们想知道,跑步的快慢和学校成绩好坏是否有关系。也就是说,跑得快的人是不是在学校也学得好,或者跑得慢的人是不是学习也不那么好。

斯皮尔曼相关系数就是帮助我们找出这种关系的一个工具。它的计算方法有点像数学游戏:

  1. 排名差异:首先,我们看每个人在赛跑和学习上的排名有多少不同。比如,如果你在赛跑中是第一名,但在学习中是第三名,那么你的排名差异就是2。

  2. 计算差异的平方:然后,我们把每个人的排名差异乘以自己(也就是平方),比如刚才的2变成4。

  3. 加总和计算:我们把所有人的这些平方加起来,然后用一个特别的公式来计算最终的数字。这个公式考虑到了有多少人参加游戏,并且会根据我们加起来的总数做一些计算。

  4. 得到相关系数:最后,这个特别的公式会给我们一个介于-1到1之间的数字。如果这个数字接近1,就意味着跑得快的人通常学习也好;如果接近-1,就意味着跑得快的人学习可能不太好;如果是0,就说明赛跑速度和学习好坏之间没有什么关系。

就这样,通过一个有趣的数学游戏,我们可以知道两件事情之间是否有某种关联!

2. 什么是斯皮尔曼相关系数

斯皮尔曼相关系数(Spearman’s rank correlation coefficient)是用于衡量两个变量之间关系的统计指标,特别适用于非线性关系或非正态分布的数据。与皮尔逊相关系数不同,斯皮尔曼相关系数不是基于原始数据,而是基于数据的排名(rank)。

基本原理

  • 斯皮尔曼相关系数实际上是评估两个变量的排名之间关系的强度和方向。
  • 它不需要数据在数学上是连续或正态分布的,适用于定序尺度的数据。

计算方法

斯皮尔曼相关系数的计算涉及以下步骤:

  1. 对每个变量的每个值进行排名。
  2. 计算两个变量的排名之间的差异。
  3. 使用以下公式计算斯皮尔曼相关系数:

r s = 1 − 6 ∑ d i 2 n ( n 2 − 1 ) r_s = 1 - \frac{6 \sum d_i^2}{n(n^2 - 1)} rs=1n(n21)6di2

其中:

  • d i d_i di 是两个变量的排名差异。
  • n n n 是数据点的数量。

值的范围和解释

  • 斯皮尔曼相关系数的值介于 -1 和 1 之间。
  • +1 表示完全正相关,排名完全匹配。
  • -1 表示完全负相关,一个排名升高时另一个排名降低。
  • 0 表示没有相关性。

应用场景

斯皮尔曼相关系数适用于以下情况:

  • 变量是非参数的或不符合正态分布。
  • 数据是等级(rank)或顺序的,例如调查问卷的等级响应。
  • 当你怀疑两个变量之间的关系可能是非线性的时。

例如,如果你想分析人们对电影的喜爱程度(通过等级排名)与其票房收入之间的关系,斯皮尔曼相关系数可能是一个合适的选择。

3. python应用案例

当然可以!我将提供一个简单的Python应用案例,其中使用斯皮尔曼相关系数来分析两个变量之间的关系。在这个例子中,我将构造一组数据来模拟学生的阅读习惯(每周阅读的小时数)与他们的写作技能评分之间的关系。

案例:阅读习惯与写作技能评分的相关性分析

假设我们有一组学生,我们记录了他们每周的阅读时间(小时)以及他们在写作技能评估中的得分。我们想要分析阅读时间和写作技能评分之间是否存在关系。

数据构造

我们构造10名学生的数据如下:

  • 每周阅读时间(小时): [2, 5, 3, 8, 6, 1, 4, 7, 9, 10]
  • 写作技能评分(分数): [60, 80, 65, 88, 85, 55, 70, 90, 95, 100]
Python代码

下面是使用Python计算斯皮尔曼相关系数的代码:

import pandas as pd
import scipy.stats as stats

# 构造数据
data = {
    'Reading Hours': [2, 5, 3, 8, 6, 1, 4, 7, 9, 10],
    'Writing Scores': [60, 80, 65, 88, 85, 55, 70, 90, 95, 100]
}
df = pd.DataFrame(data)

# 计算斯皮尔曼相关系数
spearman_corr = df.corr(method='spearman')
print("斯皮尔曼相关系数:\n", spearman_corr)

# 另一种方法直接使用scipy
spearman_corr_value, _ = stats.spearmanr(df['Reading Hours'], df['Writing Scores'])
print("斯皮尔曼相关系数值:", spearman_corr_value)

这段代码首先构造了包含每周阅读时间和写作技能评分的数据集,然后使用Pandas的 corr 方法和SciPy的 spearmanr 函数来计算这两个变量之间的斯皮尔曼相关系数。

结果解释

运行这段代码后,你会得到一个介于-1到1之间的相关系数值。如果这个值接近1,那就表示每周的阅读时间和写作技能评分之间存在强正相关,即阅读时间越长,写作评分越高。如果这个值接近0,则表示两者之间没有明显的单调关系。文章来源地址https://www.toymoban.com/news/detail-772878.html

到了这里,关于斯皮尔曼相关系(Spearman‘s rank correlation coefficient)数理论及python代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OLS回归模型-斯皮尔曼相关系数-数值模拟-多目标规划-养老服务床位需求预测与运营模式研究-之数学建模

    数学建模 -OLS回归模型 斯皮尔曼相关系数 数值模拟 多目标规划-养老服务床位需求预测与运营模式研究 养老服务床位需求预测与运营模式研究 摘要         随着时间的推移,我国人口老龄化逐渐增多,老龄化的社会问题越来越突出,从2009年到2018年,无论是老年人口数量

    2024年02月09日
    浏览(33)
  • 相关性(correlation)

    给定两个随机变量, X X X 和 Y Y Y ,则 X X X 和 Y Y Y 之间的(皮尔逊)相关性定义为: Corr ( X , Y ) = Cov ( X , Y ) Var ( X ) ⋅ Var ( Y ) , text{Corr}(X, Y) = frac{text{Cov}(X, Y)}{sqrt{text{Var}(X)} cdot sqrt{text{Var}(Y)}}, Corr ( X , Y ) = Var ( X ) ​ ⋅ Var ( Y ) ​ Cov ( X , Y ) ​ , 其中 X , Y ∈ R X, Y in

    2023年04月09日
    浏览(48)
  • Pearson correlation皮尔逊相关性分析

    在参数检验的相关性分析方法主要是皮尔逊相关(Pearson correlation)。既然是参数检验方法,肯定是有一些前提条件。皮尔逊相关的前提是必须满足以下几个条件: 变量是连续变量; 比较的两个变量必须来源于同一个总体; 没有异常值; 两个变量都符合正态分布。 正态分布

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

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

    2024年02月16日
    浏览(33)
  • Pearson相关系数和Spearman相关系数的区别

      参考资料前两个博客讲解的非常详细,因本人想要自己梳理下,才有此文,请直接跳转即可。 (1)简单来说   协方差:变量具有 同增、同减 的趋势。趋势越接近,则相关性越大,反之越小。   相关系数:协方差的标准化,把数值控制在[-1,1]的区间表示。方便比较

    2023年04月14日
    浏览(32)
  • 三大统计学相关系数(pearson、kendall、spearman)

    前边文章讲了很多了,这里不详细讲了,想了解的可以看这篇。 相似度计算(2)——皮尔逊相关系数 适用范围: 当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:   (1) 两个变量之间是线性关系,都是连续数据。   (2) 两个变量的总体是正

    2024年02月12日
    浏览(26)
  • Kernelized Correlation Filters KCF算法原理详解(阅读笔记)(待补充)

    参考博文: 【KCF算法解析】High-Speed Tracking with Kernelized Correlation Filters笔记 KCF论文理解与源码解析 KCF算法公式推导 KCF(High-Speed Tracking with Kernelized Correlation Filters)论文详解 KCF目标跟踪方法分析与总结 1. 岭回归 首先温习一下最小二乘法. 在矩阵形式下,最小二乘法的解 w = ( X

    2024年02月21日
    浏览(25)
  • FigDraw 12. SCI 文章绘图之相关性矩阵图(Correlation Matrix)

    桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI 文章绘图必备 R 语言基础 FigDraw 3. SCI 文章绘图必备 R 数据转换 FigDraw 4. SCI 文章绘图之散点图 (Scatter) FigDraw 5. SCI 文章绘

    2023年04月08日
    浏览(30)
  • Spearman 相关性分析法,以及python的完整代码应用

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

    2024年02月09日
    浏览(31)
  • 典型相关分析(Canonical Correlation Analysis,CCA)原理及Python、MATLAB实现

    随着对CCA的深入研究,是时候对CCA进行一下总结了。 本菜鸡 主要研究方向为故障诊断,故会带着从应用角度进行理解。 从字面意义上理解CCA,我们可以知道,简单说来就是对不同变量之间做相关分析。较为专业的说就是,一种度量两组变量之间相关程度的 多元统计方法 。

    2023年04月08日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包