Spearman’s 相关
---
参考文献:
How to Calculate Correlation Between Variables in Python
---
使用Spearman相关的场景,以及基本概念
1、两个变量可以通过非线性关系相关联,使得该关系在变量的分布上更强或更弱。
2、此外,正在考虑的两个变量可能具有非高斯分布。在这种情况下,Spearman 的相关系数(以 Charles Spearman 命名)可用于总结两个数据样本之间的强度。如果变量之间存在线性关系,也可以使用这种关系检验,但功效会略低(例如,可能导致系数得分较低)。
3、与 Pearson 相关系数一样,完全负相关变量和完全正相关变量的分数分别介于 -1 和 1 之间。
4、这些统计数据不是使用样本本身的协方差和标准差来计算系数,而是根据每个样本上值的相对排名来计算的。这是非参数统计中常用的方法,例如我们假设数据分布不是高斯分布。
5、如果您不确定两个变量之间的分布和可能的关系,Spearman 相关系数是一个很好的工具。
基本原理:
这些统计数据是根据每个样本值的相对排名计算的。
数学表达式:
Spearman's correlation coefficient = covariance(rank(X), rank(Y)) / (stdv(rank(X)) * stdv(rank(Y)))
如何使用Python进行计算?
The spearmanr() SciPy function can be used to calculate the Spearman’s correlation coefficient between two data samples with the same length.
# calculate the spearmans's correlation between two variables
from numpy.random import randn
from numpy.random import seed
from scipy.stats import spearmanr
# seed random number generator
seed(1)
# prepare data
data1 = 20 * randn(1000) + 100
data2 = data1 + (10 * randn(1000) + 50)
# calculate spearman's correlation
corr, _ = spearmanr(data1, data2)
print('Spearmans correlation: %.3f' % corr)
--------------------
为什么使用pearson时,样本 必须得服从 正态分布?
因为在计算相关的时候,用到了均值,为什么均值能够刻画整个群落呢?因为在正态分布中,可以用均值来刻画整个群落。而在一些非高斯分布的变量中,比如幂率分布,属于无标度的概率分布,就不能用均值来刻画样本(举个简单的例子,我和马云的平均收入,有参考意义吗?没有。因为收入不服从高斯分布。班级里同学们的平均身高有参考意义吗?有的,因为服从的是正态分布。) 因此,想用pearson相关, 样本必须得服从正态分布。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理