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相关, 样本必须得服从正态分布。

posted @ 2022-04-14 11:07  bH1pJ  阅读(25)  评论(0编辑  收藏  举报